From 539e3bbed9916641cc55bc99327bf73f5a3765c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Mon, 11 Jul 2022 14:57:27 +0200 Subject: [PATCH] [weibo] handle invalid/broken status objects --- gallery_dl/extractor/weibo.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/gallery_dl/extractor/weibo.py b/gallery_dl/extractor/weibo.py index 68871c8b..9edca520 100644 --- a/gallery_dl/extractor/weibo.py +++ b/gallery_dl/extractor/weibo.py @@ -324,7 +324,11 @@ class WeiboAlbumExtractor(WeiboExtractor): mid = image["mid"] if mid not in seen: seen.add(mid) - yield self._status_by_id(mid) + status = self._status_by_id(mid) + if status.get("ok") != 1: + self.log.debug("Skipping status %s (%s)", mid, status) + else: + yield status class WeiboStatusExtractor(WeiboExtractor): @@ -341,7 +345,7 @@ class WeiboStatusExtractor(WeiboExtractor): }), # unavailable video (#427) ("https://m.weibo.cn/status/4268682979207023", { - "exception": exception.HttpError, + "exception": exception.NotFoundError, }), # non-numeric status ID (#664) ("https://weibo.com/3314883543/Iy7fj4qVg"), @@ -366,7 +370,11 @@ class WeiboStatusExtractor(WeiboExtractor): ) def statuses(self): - return (self._status_by_id(self.user),) + status = self._status_by_id(self.user) + if status.get("ok") != 1: + self.log.debug(status) + raise exception.NotFoundError("status") + return (status,) @cache(maxage=356*86400)