nonebot2调用json格式图片API发送随机图片
前言
前文讲了如何调用直接返回图片链接的格式的API,有粉丝问如何调用json格式的,于是就有了这篇文章
正文
json处理讲解
推荐这篇文章,将Python处理json格式讲得通俗易懂,以下的讲解我就默认你看了这篇文章已经学会了json的序列化和反序列化(以后如果有时间我会讲一些这种nonebot额外的Python基础)
干货|Python处理JSON格式的数据,太详细了吧!
插件编写
- 这里以调用樱花随机二次元图片API-樱花的json格式的图片API为例,我们先获取API的URL
- 然后在浏览器上打开上面获取的URL,观察他返回的json数据。我们可以看到,他返回的图片链接对应的是"imgurl"
- 之后我们就可以就可以通过json.loads将以上的数据反序列化到一个字典当中,再获取字典中imgurl对应的值就能得到图片链接了
import json
get_dic = json.loads(resp.text)
imgurl = get_dic['data']
插件模板
把模板放在着了,大家可以参考我下面的代码以及查看nonebot官方文档自行研究,或者参考 nonebot2调用图片API发送随机图片的讲解,代码如下
from nonebot import on_command
from nonebot.adapters.onebot.v11 import MessageSegment
import httpx
import json
ecyt = on_command('二次元图')
@ecyt.handle()
async def main():
msg = await get_pic()
await ecyt.finish(MessageSegment.image(msg))
async def get_pic():
url = 'https://www.dmoe.cc/random.php?return=json'
async with httpx.AsyncClient() as client:
resp = await client.get(url)
get_dic = json.loads(resp.text)
data = get_dic["imgurl"]
return data
你需要把代码上面的“二次元图”改成你自己触发插件的命令,把代码上面的链接改成你要调用的API链接,把从json数据获取图片链接的步骤按照你调用的API返回的数据进行修改,然后如果你触发插件的命令是中文的,你可能需要把插件的编码改成utf-8(一般默认就是utf-8,但是你最好检查一下),不然会引发乱码
相关
超简单随机图片API制作教程
nonebot2调用json格式文本API发送随机文本
Zzzzzzzzzzzaa2: requests模块不支持协程,get_ecyt这个方法实际是阻塞的,建议改成支持协程的网络请求库例如httpx、aiohttp
瑶 瑶: 啊哈,一个人都没有,如果你有空你还是去加固你的网站吧
Nana7mi丶: okok非常感谢
ITSevin: 太忙迟了一天,新文章在这里https://blog.csdn.net/m0_62568363/article/details/126539128