python - 尝试使用意外的 mimetype 解码 JSON:text/html
问题描述
我的不和谐机器人中的 meme 命令以前可以工作,但它突然停止工作....这是代码
@commands.command(name = 'meme')
@commands.cooldown(1, 2, BucketType.user)
async def meme(self,ctx):
'''get a random meme from reddit!'''
subreddits = ['dankmemes', 'memes','meme', 'wholesomememes', 'comedyheaven','pewdiepiesubmissions', 'KidsAreFuckingStupid','cursedcomments','HolUp','blursedimages','rareinsults']
subreddit = random.choice(subreddits)
async with aiohttp.ClientSession() as cs:
async with cs.get(f'https://www.reddit.com/r/{subreddit}/new.json?sort=hot') as r:
res = await r.json()
post=res['data']['children'][random.randint(0, 25)]
url = post['data']['url']
title= post['data']['title']
embed = discord.Embed(title = title,description=f"Meme for {ctx.author}")
embed.set_image(url=url)
embed.set_footer(text = f'Image from r/{subreddit}')
await ctx.send(embed=embed)
几天前它停止工作..我一直在尝试寻找解决方案,但无法让它工作我尝试了这个: https ://stackoverflow.com/a/48841071/16390831
我尝试的每个解决方案都给出了两个错误之一:
aiohttp.client_exceptions.ContentTypeError: 0, message='Attempt to decode JSON with unexpected mimetype: text/html', url=URL('https://www.reddit.com/r/meme/new.json?sort=hot')
File "C:\Users\dhrav\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 167, in wrapped ret = await coro(*args, **kwargs) File "c:\Users\dhrav\Documents\Python Projects\SpaceBot\SpaceBot\commands.py", line 565, in meme res = json.loads(rs) File "C:\Users\dhrav\AppData\Local\Programs\Python\Python39\lib\json\__init__.py", line 346, in loads return _default_decoder.decode(s) File "C:\Users\dhrav\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "C:\Users\dhrav\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
怎么了?它与 Reddit API 有关吗?我尝试打印 cs,它给出了关于服务器和东西的奇怪输出
再次,它在几天前确实有效,但突然停止工作,似乎无缘无故。任何帮助,将不胜感激。提前致谢。
解决方案
API 正在返回一个Content-Type: text/html
标头,您可以传入content_type=None
以r.json
忽略该标头:
res = await r.json(content_type=None)
推荐阅读
- stm32 - 我的解决方案是否适用于使用 BSRR 和 BRR 的 8 位总线寻址?
- javascript - 获取节点中模块的路径(模块文件夹,而不是入口文件)
- swift - 在 SwiftUI 中拥抱子视图
- python - 中心子 QMainWindow 相对于父 QMainWindow
- prolog - 在序言中加入两个列表?
- flutter - 在颤振中导航回上一页时如何避免重建重复的小部件?
- react-native - RN:如何将uri用于本地图像文件源
- python-3.x - 时间序列分析,选择最佳模型,python
- java - 如何 wait() 让小吃店 onDismissed 进程完成?
- android - Android Studio 3.4.1 中的“Profile or Debug APK...”选项消失在哪里?