diff options
Diffstat (limited to 'gallery_dl/extractor/bluesky.py')
| -rw-r--r-- | gallery_dl/extractor/bluesky.py | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/gallery_dl/extractor/bluesky.py b/gallery_dl/extractor/bluesky.py index bbff17c..f60ea15 100644 --- a/gallery_dl/extractor/bluesky.py +++ b/gallery_dl/extractor/bluesky.py @@ -75,10 +75,13 @@ class BlueskyExtractor(Extractor): quote = embed["record"] if "record" in quote: quote = quote["record"] + value = quote.pop("value", None) + if value is None: + break quote["quote_id"] = self._pid(post) quote["quote_by"] = post["author"] embed = quote.get("embed") - quote.update(quote.pop("value")) + quote.update(value) post = quote def posts(self): @@ -202,6 +205,7 @@ class BlueskyUserExtractor(BlueskyExtractor): def items(self): base = "{}/profile/{}/".format(self.root, self.user) return self._dispatch_extractors(( + (BlueskyInfoExtractor , base + "info"), (BlueskyAvatarExtractor , base + "avatar"), (BlueskyBackgroundExtractor, base + "banner"), (BlueskyPostsExtractor , base + "posts"), @@ -298,6 +302,17 @@ class BlueskyPostExtractor(BlueskyExtractor): return self.api.get_post_thread(self.user, self.post_id) +class BlueskyInfoExtractor(BlueskyExtractor): + subcategory = "info" + pattern = USER_PATTERN + r"/info" + example = "https://bsky.app/profile/HANDLE/info" + + def items(self): + self._metadata_user = True + self.api._did_from_actor(self.user) + return iter(((Message.Directory, self._user),)) + + class BlueskyAvatarExtractor(BlueskyExtractor): subcategory = "avatar" filename_fmt = "avatar_{post_id}.{extension}" @@ -324,7 +339,8 @@ class BlueskySearchExtractor(BlueskyExtractor): example = "https://bsky.app/search?q=QUERY" def posts(self): - return self.api.search_posts(self.user) + query = text.unquote(self.user.replace("+", " ")) + return self.api.search_posts(query) class BlueskyHashtagExtractor(BlueskyExtractor): |
