diff options
Diffstat (limited to 'gallery_dl/extractor/mastodon.py')
| -rw-r--r-- | gallery_dl/extractor/mastodon.py | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/gallery_dl/extractor/mastodon.py b/gallery_dl/extractor/mastodon.py index 1bab63a..165f8b8 100644 --- a/gallery_dl/extractor/mastodon.py +++ b/gallery_dl/extractor/mastodon.py @@ -64,10 +64,9 @@ class MastodonExtractor(BaseExtractor): status["count"] = len(attachments) status["tags"] = [tag["name"] for tag in status["tags"]] - status["date"] = text.parse_datetime( - status["created_at"][:19], "%Y-%m-%dT%H:%M:%S") + status["date"] = self.parse_datetime_iso(status["created_at"][:19]) - yield Message.Directory, status + yield Message.Directory, "", status for status["num"], media in enumerate(attachments, 1): status["media"] = media url = media["url"] @@ -119,7 +118,7 @@ BASE_PATTERN = MastodonExtractor.update({ class MastodonUserExtractor(MastodonExtractor): """Extractor for all images of an account/user""" subcategory = "user" - pattern = BASE_PATTERN + r"/(?:@|users/)([^/?#]+)(?:/media)?/?$" + pattern = rf"{BASE_PATTERN}/(?:@|users/)([^/?#]+)(?:/media)?/?$" example = "https://mastodon.social/@USER" def statuses(self): @@ -139,7 +138,7 @@ class MastodonUserExtractor(MastodonExtractor): class MastodonBookmarkExtractor(MastodonExtractor): """Extractor for mastodon bookmarks""" subcategory = "bookmark" - pattern = BASE_PATTERN + r"/bookmarks" + pattern = rf"{BASE_PATTERN}/bookmarks" example = "https://mastodon.social/bookmarks" def statuses(self): @@ -149,7 +148,7 @@ class MastodonBookmarkExtractor(MastodonExtractor): class MastodonFavoriteExtractor(MastodonExtractor): """Extractor for mastodon favorites""" subcategory = "favorite" - pattern = BASE_PATTERN + r"/favourites" + pattern = rf"{BASE_PATTERN}/favourites" example = "https://mastodon.social/favourites" def statuses(self): @@ -159,7 +158,7 @@ class MastodonFavoriteExtractor(MastodonExtractor): class MastodonListExtractor(MastodonExtractor): """Extractor for mastodon lists""" subcategory = "list" - pattern = BASE_PATTERN + r"/lists/(\w+)" + pattern = rf"{BASE_PATTERN}/lists/(\w+)" example = "https://mastodon.social/lists/12345" def statuses(self): @@ -169,7 +168,7 @@ class MastodonListExtractor(MastodonExtractor): class MastodonHashtagExtractor(MastodonExtractor): """Extractor for mastodon hashtags""" subcategory = "hashtag" - pattern = BASE_PATTERN + r"/tags/(\w+)" + pattern = rf"{BASE_PATTERN}/tags/(\w+)" example = "https://mastodon.social/tags/NAME" def statuses(self): @@ -179,7 +178,7 @@ class MastodonHashtagExtractor(MastodonExtractor): class MastodonFollowingExtractor(MastodonExtractor): """Extractor for followed mastodon users""" subcategory = "following" - pattern = BASE_PATTERN + r"/(?:@|users/)([^/?#]+)/following" + pattern = rf"{BASE_PATTERN}/(?:@|users/)([^/?#]+)/following" example = "https://mastodon.social/@USER/following" def items(self): @@ -194,7 +193,7 @@ class MastodonFollowingExtractor(MastodonExtractor): class MastodonStatusExtractor(MastodonExtractor): """Extractor for images from a status""" subcategory = "status" - pattern = (BASE_PATTERN + r"/(?:@[^/?#]+|(?:users/[^/?#]+/)?" + pattern = (rf"{BASE_PATTERN}/(?:@[^/?#]+|(?:users/[^/?#]+/)?" r"(?:statuses|notice|objects()))/(?!following)([^/?#]+)") example = "https://mastodon.social/@USER/12345" @@ -319,10 +318,8 @@ class MastodonAPI(): if code == 404: raise exception.NotFoundError() if code == 429: - self.extractor.wait(until=text.parse_datetime( - response.headers["x-ratelimit-reset"], - "%Y-%m-%dT%H:%M:%S.%fZ", - )) + self.extractor.wait(until=self.extractor.parse_datetime_iso( + response.headers["x-ratelimit-reset"])) continue raise exception.AbortExtraction(response.json().get("error")) |
