python - 从 Discord 消息下载图像
问题描述
我怎么能下载不和谐消息中的所有 iamges,但它们有一个随机名称,所以我没有 2 个不同的 image.jpegs 或 image.png?
注意:我想从消息中获取图像,如果他们通过 url 发送图像而不是从那里获取图像消息 url
请帮忙谢谢。
解决方案
它下载所有类型的图像/GIF 参见image_extensions
.
使用 url 并通过聊天发送图像。
您可以选择将图像保存在哪个路径中 -images
例如。
import discord
import os
import aiohttp
@client.event
async def on_message(message: discord.Message):
if valid_image_url(message.content):
await download_image(message.content, "images")
for attachment in message.attachments:
if valid_image_url(attachment.url):
await attachment.save(os.path.join("images", attachment.filename))
def valid_image_url(url: str):
image_extensions = ['png', 'jpg', 'jpeg', 'gif']
for image_extension in image_extensions:
if url.endswith('.' + image_extension):
return True
return False
async def download_image(url: str, images_path: str = ""):
async with aiohttp.ClientSession() as session:
async with session.get(url) as resp:
if resp.status == 200:
image_name = os.path.basename(url)
with open(os.path.join(images_path, image_name), "wb") as f:
f.write(await resp.read())
推荐阅读
- sql - 来自另一个表的动态正则表达式搜索字符串
- javascript - 名称:函数(){}或函数名称(){} | 反应JS
- javascript - AngularJs:如何检查超链接是否已完全加载,然后执行下一步操作
- c# - c# : 反序列化 json 对象
- php - 使用 ($_SERVER["PHP_SELF"]) 但将所有数据插入数据库
- php - Laravel group by 如果没有行,则返回零
- python - 用 Python 改进迷宫求解程序的性能
- java - 在tomcat上启动spring hibernate应用程序需要10多分钟
- database - AWS RDS 自动备份
- c# - 在 Unity3d 中翻转 3D 游戏对象