diff --git a/gallery_dl/extractor/weibo.py b/gallery_dl/extractor/weibo.py index a1c60d83..33da6fe1 100644 --- a/gallery_dl/extractor/weibo.py +++ b/gallery_dl/extractor/weibo.py @@ -22,6 +22,8 @@ class WeiboExtractor(Extractor): directory_fmt = ("{category}", "{user[screen_name]}") filename_fmt = "{status[id]}_{num:>02}.{extension}" archive_fmt = "{status[id]}_{num}" + cookies_domain = ".weibo.com" + cookies_names = ("SUB", "SUBP") root = "https://weibo.com" request_interval = (1.0, 2.0) @@ -29,12 +31,6 @@ class WeiboExtractor(Extractor): Extractor.__init__(self, match) self._prefix, self.user = match.groups() - def _init_cookies(self): - cookies = _cookie_cache() - if cookies is not None: - self.session.cookies.update(cookies) - Extractor._init_cookies(self) - def _init(self): self.livephoto = self.config("livephoto", True) self.retweets = self.config("retweets", False) @@ -43,6 +39,25 @@ class WeiboExtractor(Extractor): self.gifs = self.config("gifs", True) self.gifs_video = (self.gifs == "video") + cookies = _cookie_cache() + if cookies is None: + self.logged_in = self.cookies_check( + self.cookies_names, self.cookies_domain) + return + + domain = self.cookies_domain + cookies = {c.name: c for c in cookies if c.domain == domain} + for cookie in self.cookies: + if cookie.domain == domain and cookie.name in cookies: + del cookies[cookie.name] + if not cookies: + self.logged_in = True + return + + self.logged_in = False + for cookie in cookies.values(): + self.cookies.set_cookie(cookie) + def request(self, url, **kwargs): response = Extractor.request(self, url, **kwargs)