diff --git a/docs/supportedsites.md b/docs/supportedsites.md index 7dc3f893..ecbf93f1 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -142,7 +142,7 @@ Consider all listed sites to potentially be NSFW. Bluesky https://bsky.app/ - Avatars, Backgrounds, Feeds, Followed Users, Hashtags, Likes, Lists, Media Files, Posts, Replies, Search Results, User Profiles + Avatars, Backgrounds, Feeds, Followed Users, Hashtags, User Profile Information, Likes, Lists, Media Files, Posts, Replies, Search Results, User Profiles Supported diff --git a/gallery_dl/extractor/bluesky.py b/gallery_dl/extractor/bluesky.py index f284c74b..f60ea158 100644 --- a/gallery_dl/extractor/bluesky.py +++ b/gallery_dl/extractor/bluesky.py @@ -205,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"), @@ -301,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}" diff --git a/test/results/bluesky.py b/test/results/bluesky.py index e2da3c0c..277a8a5d 100644 --- a/test/results/bluesky.py +++ b/test/results/bluesky.py @@ -42,6 +42,11 @@ __tests__ = ( ), }, +{ + "#url" : "https://bsky.app/profile/bsky.app/info", + "#class" : bluesky.BlueskyInfoExtractor, +}, + { "#url" : "https://bsky.app/profile/bsky.app/avatar", "#category": ("", "bluesky", "avatar"),