diff options
Diffstat (limited to 'gallery_dl/extractor/tumblr.py')
| -rw-r--r-- | gallery_dl/extractor/tumblr.py | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/gallery_dl/extractor/tumblr.py b/gallery_dl/extractor/tumblr.py index 92fc831..5bb5a40 100644 --- a/gallery_dl/extractor/tumblr.py +++ b/gallery_dl/extractor/tumblr.py @@ -9,8 +9,7 @@ """Extractors for https://www.tumblr.com/""" from .common import Extractor, Message -from .. import text, util, oauth, exception -from datetime import datetime, date, timedelta +from .. import text, util, dt, oauth, exception BASE_PATTERN = ( @@ -61,16 +60,16 @@ class TumblrExtractor(Extractor): blog = None # pre-compile regular expressions - self._sub_video = util.re( + self._sub_video = text.re( r"https?://((?:vt|vtt|ve)(?:\.media)?\.tumblr\.com" r"/tumblr_[^_]+)_\d+\.([0-9a-z]+)").sub if self.inline: - self._sub_image = util.re( + self._sub_image = text.re( r"https?://(\d+\.media\.tumblr\.com(?:/[0-9a-f]+)?" r"/tumblr(?:_inline)?_[^_]+)_\d+\.([0-9a-z]+)").sub - self._subn_orig_image = util.re(r"/s\d+x\d+/").subn - _findall_image = util.re('<img src="([^"]+)"').findall - _findall_video = util.re('<source src="([^"]+)"').findall + self._subn_orig_image = text.re(r"/s\d+x\d+/").subn + _findall_image = text.re('<img src="([^"]+)"').findall + _findall_video = text.re('<source src="([^"]+)"').findall for post in self.posts(): if self.date_min > post["timestamp"]: @@ -88,7 +87,7 @@ class TumblrExtractor(Extractor): if self.avatar: url = self.api.avatar(self.blog) - yield Message.Directory, {"blog": blog} + yield Message.Directory, "", {"blog": blog} yield self._prepare_avatar(url, post.copy(), blog) post["blog"] = blog @@ -100,7 +99,7 @@ class TumblrExtractor(Extractor): if "trail" in post: del post["trail"] - post["date"] = text.parse_timestamp(post["timestamp"]) + post["date"] = self.parse_timestamp(post["timestamp"]) posts = [] if "photos" in post: # type "photo" or "link" @@ -161,7 +160,7 @@ class TumblrExtractor(Extractor): del post["extension"] post["count"] = len(posts) - yield Message.Directory, post + yield Message.Directory, "", post for num, (msg, url, post) in enumerate(posts, 1): post["num"] = num @@ -271,7 +270,7 @@ class TumblrExtractor(Extractor): class TumblrUserExtractor(TumblrExtractor): """Extractor for a Tumblr user's posts""" subcategory = "user" - pattern = BASE_PATTERN + r"(?:/page/\d+|/archive)?/?$" + pattern = rf"{BASE_PATTERN}(?:/page/\d+|/archive)?/?$" example = "https://www.tumblr.com/BLOG" def posts(self): @@ -281,7 +280,7 @@ class TumblrUserExtractor(TumblrExtractor): class TumblrPostExtractor(TumblrExtractor): """Extractor for a single Tumblr post""" subcategory = "post" - pattern = BASE_PATTERN + r"/(?:post/|image/)?(\d+)" + pattern = rf"{BASE_PATTERN}/(?:post/|image/)?(\d+)" example = "https://www.tumblr.com/BLOG/12345" def posts(self): @@ -296,7 +295,7 @@ class TumblrPostExtractor(TumblrExtractor): class TumblrTagExtractor(TumblrExtractor): """Extractor for Tumblr user's posts by tag""" subcategory = "tag" - pattern = BASE_PATTERN + r"(?:/archive)?/tagged/([^/?#]+)" + pattern = rf"{BASE_PATTERN}(?:/archive)?/tagged/([^/?#]+)" example = "https://www.tumblr.com/BLOG/tagged/TAG" def posts(self): @@ -308,12 +307,12 @@ class TumblrTagExtractor(TumblrExtractor): class TumblrDayExtractor(TumblrExtractor): """Extractor for Tumblr user's posts by day""" subcategory = "day" - pattern = BASE_PATTERN + r"/day/(\d\d\d\d/\d\d/\d\d)" + pattern = rf"{BASE_PATTERN}/day/(\d\d\d\d/\d\d/\d\d)" example = "https://www.tumblr.com/BLOG/day/1970/01/01" def posts(self): year, month, day = self.groups[3].split("/") - ordinal = date(int(year), int(month), int(day)).toordinal() + ordinal = dt.date(int(year), int(month), int(day)).toordinal() # 719163 == date(1970, 1, 1).toordinal() self.date_min = (ordinal - 719163) * 86400 @@ -326,7 +325,7 @@ class TumblrLikesExtractor(TumblrExtractor): subcategory = "likes" directory_fmt = ("{category}", "{blog_name}", "likes") archive_fmt = "f_{blog[name]}_{id}_{num}" - pattern = BASE_PATTERN + r"/likes" + pattern = rf"{BASE_PATTERN}/likes" example = "https://www.tumblr.com/BLOG/likes" def posts(self): @@ -336,7 +335,7 @@ class TumblrLikesExtractor(TumblrExtractor): class TumblrFollowingExtractor(TumblrExtractor): """Extractor for a Tumblr user's followed blogs""" subcategory = "following" - pattern = BASE_PATTERN + r"/following" + pattern = rf"{BASE_PATTERN}/following" example = "https://www.tumblr.com/BLOG/following" items = TumblrExtractor.items_blogs @@ -348,7 +347,7 @@ class TumblrFollowingExtractor(TumblrExtractor): class TumblrFollowersExtractor(TumblrExtractor): """Extractor for a Tumblr user's followers""" subcategory = "followers" - pattern = BASE_PATTERN + r"/followers" + pattern = rf"{BASE_PATTERN}/followers" example = "https://www.tumblr.com/BLOG/followers" items = TumblrExtractor.items_blogs @@ -514,7 +513,7 @@ class TumblrAPI(oauth.OAuth1API): self.extractor.wait(seconds=reset) continue - t = (datetime.now() + timedelta(0, float(reset))).time() + t = (dt.now() + dt.timedelta(0, float(reset))).time() raise exception.AbortExtraction( f"Aborting - Rate limit will reset at " f"{t.hour:02}:{t.minute:02}:{t.second:02}") |
