aioqzone / Qzone2TG

Forward Qzone Feeds to Telegram
https://aioqzone.github.io/Qzone2TG/
GNU Affero General Public License v3.0
36 stars 3 forks source link

Crash when 'IndexError: list index out of range' #56

Closed TigerCubDen closed 2 years ago

TigerCubDen commented 2 years ago

之前的队列未清空问题仍有可能发生,不过出现频率比之前有所下降。 当上述问题发生并重启后,(也许只是偶然?)就会出现以下问题,程序自动退出,此时只有清空数据库才能解决。

[INFO] 2022 Jan 16 19:57:54 qzone2tg.qzone.api.album: Album queue starting
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/local/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/app/src/qzone2tg/__main__.py", line 198, in <module>
    main([i for i in sys.argv[1:] if not i.startswith('-')])
  File "/app/src/qzone2tg/__main__.py", line 148, in main
    feedmgr = QzCachedScraper(spider, db)
  File "/app/src/qzone2tg/qzone/feed.py", line 203, in __init__
    self.cleanFeed()
  File "/app/src/qzone2tg/qzone/feed.py", line 29, in cleanFeed
    return super().cleanFeed(lambda d: Parser(d).getLikeId())
  File "/app/src/qzone2tg/middleware/storage.py", line 178, in cleanFeed
    d = getLikeId(i)
  File "/app/src/qzone2tg/qzone/feed.py", line 29, in <lambda>
    return super().cleanFeed(lambda d: Parser(d).getLikeId())
  File "/app/src/qzone2tg/qzone/parser/__init__.py", line 276, in getLikeId
    'unikey': self.unikey,
  File "/app/src/qzone2tg/qzone/parser/__init__.py", line 81, in unikey
    return self.likeData['unikey']
  File "/app/src/qzone2tg/utils/decorator.py", line 314, in __get__
    self._c = self.fget(obj)
  File "/app/src/qzone2tg/qzone/parser/__init__.py", line 166, in likeData
    att: Dict[str, str] = (
IndexError: list index out of range
JamzumSum commented 2 years ago

据猜测,可能是 html 存入数据库的时候发生了一些问题以至于读出来的时候没法解析likebutton了. 新的 commit 加入了捕获,无法解析 html 的 feed 将不会被移入 archive 表. 此外会以 ERROR 级别打出这样的html. 如果您能做一些复现并给出这些 html 的话,可能有助于进一步发现是什么原因导致的 html 损坏.

TigerCubDen commented 2 years ago

更新后,还是一样的问题 ( 对了,把数据库文件发给您是否有利于找到问题?

JamzumSum commented 2 years ago

更新后,还是一样的问题 ( 对了,把数据库文件发给您是否有利于找到问题?

如果您确定数据库包含“问题 html ”,可以通过邮件发给我. 感谢您的帮助.

TigerCubDen commented 2 years ago

更新后,还是一样的问题 ( 对了,把数据库文件发给您是否有利于找到问题?

我想我应该在更新后清空数据库再重现问题,所以上面那句话作废😂

JamzumSum commented 2 years ago

可以等到问题解决再close)

JamzumSum commented 2 years ago

确实捕获错了;确实有不存在likebtn的说说; 已修复上述问题,若有遗漏请在此issue下回复。

TigerCubDen commented 2 years ago

然后就一直卡在 qzone2tg.qzone.api.album: Album queue starting 了😂,清空数据库还是这样(

JamzumSum commented 2 years ago

然后就一直卡在 qzone2tg.qzone.api.album: Album queue starting 了😂,清空数据库还是这样(

没有“更新检查结束”?我这里一切都正常,用的是您的数据库

TigerCubDen commented 2 years ago

然后就一直卡在 qzone2tg.qzone.api.album: Album queue starting 了😂,清空数据库还是这样(

没有“更新检查结束”?我这里一切都正常,用的是您的数据库

(点头)

JamzumSum commented 2 years ago

或许可以把日志等级设为DEBUG 看看是不是卡在了检查更新的地方了

TigerCubDen commented 2 years ago
[DEBUG] 2022 Jan 20 10:57:36 qzone2tg.main: config loaded {'log': {'level': 'DEBUG'}, 'qzone': {'qq': ********, 'qr_strategy': 'allow', 'password': '******'}, 'feed': {'keepdays': 1, 'archivedays': 30}, 'bot': {'method': 'polling', 'token': '19*****409:AAElR******Kka-xM******hhbut_wA', 'accept_id': 5******91, 'network': {'proxy_url': 'socks5h://172.17.0.1:1080'}}}
[DEBUG] 2022 Jan 20 10:57:36 qzone2tg.main: database OK
[INFO] 2022 Jan 20 10:57:36 qzone2tg.qzone.api.album: Album queue starting
[DEBUG] 2022 Jan 20 10:57:36 qzone2tg.main: crawler OK
[DEBUG] 2022 Jan 20 10:57:36 urllib3.connectionpool: Starting new HTTPS connection (1): api.github.com:443

然后就没有了

JamzumSum commented 2 years ago
[DEBUG] 2022 Jan 20 10:57:36 qzone2tg.main: config loaded {'log': {'level': 'DEBUG'}, 'qzone': {'qq': ********, 'qr_strategy': 'allow', 'password': '******'}, 'feed': {'keepdays': 1, 'archivedays': 30}, 'bot': {'method': 'polling', 'token': '19*****409:AAElR******Kka-xM******hhbut_wA', 'accept_id': 5******91, 'network': {'proxy_url': 'socks5h://172.17.0.1:1080'}}}
[DEBUG] 2022 Jan 20 10:57:36 qzone2tg.main: database OK
[INFO] 2022 Jan 20 10:57:36 qzone2tg.qzone.api.album: Album queue starting
[DEBUG] 2022 Jan 20 10:57:36 qzone2tg.main: crawler OK
[DEBUG] 2022 Jan 20 10:57:36 urllib3.connectionpool: Starting new HTTPS connection (1): api.github.com:443

然后就没有了

嗯 应该是检查更新的时候卡住了 您可以检查代理,观察卡住时向api.github.com的流量是否被正确转发

TigerCubDen commented 2 years ago

我只想说移动死全家,同样的节点联通和电信都可以( 换了个节点,应该没问题了(

JamzumSum commented 2 years ago

我只想说移动死全家,同样的节点联通和电信都可以( 换了个节点,应该没问题了(

您可以点击README上方的徽标加入tg公告/讨论群,更轻松地反馈使用上的问题。