aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/tumblr.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/extractor/tumblr.py')
-rw-r--r--gallery_dl/extractor/tumblr.py37
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}")