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.py22
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",