问题描述
收到错误
我帮助开发人员维护一个简单的 Python 脚本,该脚本从 unsee.cc 中抓取图像。我帮助纠正了 URL 并删除了一些有问题的小代码。在过去的两天里,我在运行脚本时收到了一个错误,我对此感到非常困惑并且缺乏解决问题的必要知识。我收到的错误如下:
Traceback (most recent call last):
File "/unsee-dl/main.py",line 104,in <module>
main()
File "/unsee-dl/main.py",line 14,in main
asyncio.get_event_loop().run_until_complete(run_downloader())
File "/usr/lib/python3.8/asyncio/base_events.py",line 616,in run_until_complete
return future.result()
File "/unsee-dl/main.py",line 98,in run_downloader
await download_beta(album_ids_beta_version,args.out_dir,args.group_album)
File "/unsee-dl/main.py",line 33,in download_beta
await client.anonymous_login()
File "/unsee-dl/unsee_dl/unsee_beta.py",line 62,in anonymous_login
tokens = content["data"]["getToken"]
KeyError: 'data
违规代码
产生错误的有问题的代码块与以匿名用户身份登录会话有关,如下所示:
定义“数据”
keyerror 引用了变量“data”,它是从服务器拉取的 websocket 设置。它在导入的单独文件中定义,如下所示:
async def download_album(self,album_id):
unsee_name = names.get_random()
ws_params = "?album={}&name={}".format(album_id,unsee_name)
ssl_context = ssl.create_default_context()
# Settings WS
async with self.session.ws_connect(
_UNSEE_WEBSOCKET_URL.format("settings") + ws_params,ssl=ssl_context
) as ws_settings:
await ws_settings.send_str("{}")
data = await ws_settings.receive()
settings = json.loads(data.data,encoding="utf-8")
logging.info("[ws_settings] {}".format(settings))
images_info = []
有问题的块
实际有问题的块涉及以匿名用户身份创建新会话。产生错误的代码块如下:
async def anonymous_login(self):
"""
Login with an anonymous token
"""
gql_body = {
"operationName": "getToken","variables": {},"query": """
query getToken($identity: ID,$code: ID,$refreshToken: ID,$name: String) {
getToken(identity: $identity,code: $code,refreshToken: $refreshToken,name: $name) {
...AuthPayloadFragment
__typename
}
}
fragment AuthPayloadFragment on AuthPayload {
token
refreshToken
__typename
}
""",}
async with self.session.post(_GRAPHQL_URL,json=gql_body) as response:
content = await response.json()
#!tokens = content["data"]["getToken"]
tokens = content["data"]["getToken"]
self.token = tokens["token"]
评论
所以你有它。在审查中,来自服务器的响应似乎与脚本预期的不同,从而使“数据”未定义并阻止脚本正确执行。我如何才能发现更改以便适当地查询 Web 套接字服务器并提供数据定义?
这是我专门为解决此问题而创建的一个看不见的会话,它将在接下来的 24 小时内开放。 Test session
包含我正在处理的项目的完整官方存储库。 Unsee_dl.py
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)