diff options
Diffstat (limited to 'gallery_dl/extractor/mastodon.py')
| -rw-r--r-- | gallery_dl/extractor/mastodon.py | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/gallery_dl/extractor/mastodon.py b/gallery_dl/extractor/mastodon.py index 3f07d21..4f0e38d 100644 --- a/gallery_dl/extractor/mastodon.py +++ b/gallery_dl/extractor/mastodon.py @@ -68,8 +68,8 @@ class MastodonUserExtractor(MastodonExtractor): self.account_name = match.group(1) def statuses(self): - results = self.api.account_search("@" + self.account_name, 1) - for account in results: + handle = "@{}@{}".format(self.account_name, self.instance) + for account in self.api.account_search(handle, 1): if account["username"] == self.account_name: break else: @@ -121,7 +121,10 @@ class MastodonAPI(): return self._call("statuses/" + status_id).json() def _call(self, endpoint, params=None): - url = "{}/api/v1/{}".format(self.root, endpoint) + if endpoint.startswith("http"): + url = endpoint + else: + url = "{}/api/v1/{}".format(self.root, endpoint) while True: response = self.extractor.request( @@ -143,7 +146,7 @@ class MastodonAPI(): def _pagination(self, endpoint, params): url = "{}/api/v1/{}".format(self.root, endpoint) while url: - response = self._call(endpoint, params) + response = self._call(url, params) yield from response.json() url = response.links.get("next") @@ -181,6 +184,7 @@ def generate_extractors(): Extr.instance = instance Extr.pattern = (r"(?:https?://)?" + pattern + r"/@([^/?&#]+)(?:/media)?/?$") + Extr.test = info.get("test-user") Extr.root = root Extr.access_token = token symtable[Extr.__name__] = Extr @@ -193,6 +197,7 @@ def generate_extractors(): Extr.category = category Extr.instance = instance Extr.pattern = r"(?:https?://)?" + pattern + r"/@[^/?&#]+/(\d+)" + Extr.test = info.get("test-status") Extr.root = root Extr.access_token = token symtable[Extr.__name__] = Extr @@ -204,6 +209,15 @@ EXTRACTORS = { "access-token" : "Y06R36SMvuXXN5_wiPKFAEFiQaMSQg0o_hGgc86Jj48", "client-id" : "dBSHdpsnOUZgxOnjKSQrWEPakO3ctM7HmsyoOd4FcRo", "client-secret": "DdrODTHs_XoeOsNVXnILTMabtdpWrWOAtrmw91wU1zI", + "test-user" : ("https://mastodon.social/@jk", { + "pattern": r"https://files.mastodon.social/media_attachments" + r"/files/\d+/\d+/\d+/original/\w+", + "range": "1-60", + "count": 60, + }), + "test-status" : ("https://mastodon.social/@jk/103794036899778366", { + "count": 4, + }), }, "pawoo.net": { "category" : "pawoo", |
