From 9a2cfd442168be33e6ad75d368e79a41fcfd7cae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Thu, 27 Oct 2022 14:26:42 +0200 Subject: [PATCH] [mastodon] support cross-instance user references (#3109) --- gallery_dl/extractor/mastodon.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/gallery_dl/extractor/mastodon.py b/gallery_dl/extractor/mastodon.py index 296fd5f4..5f6b3443 100644 --- a/gallery_dl/extractor/mastodon.py +++ b/gallery_dl/extractor/mastodon.py @@ -111,9 +111,15 @@ class MastodonUserExtractor(MastodonExtractor): "count": 60, }), ("https://baraag.net/@pumpkinnsfw"), + ("https://mastodon.social/@yoru_nine@pawoo.net", { + "pattern": r"https://mastodon\.social/media_proxy/\d+/original", + "range": "1-10", + "count": 10, + }), ("https://mastodon.social/@id:10843"), ("https://mastodon.social/users/id:10843"), ("https://mastodon.social/users/jk"), + ("https://mastodon.social/users/yoru_nine@pawoo.net"), ) def statuses(self): @@ -211,9 +217,13 @@ class MastodonAPI(): if username.startswith("id:"): return username[3:] - handle = "@{}@{}".format(username, self.extractor.instance) + if "@" in username: + handle = "@" + username + else: + handle = "@{}@{}".format(username, self.extractor.instance) + for account in self.account_search(handle, 1): - if account["username"] == username: + if account["acct"] == username: self.extractor._check_move(account) return account["id"] raise exception.NotFoundError("account")