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