diff --git a/docs/configuration.rst b/docs/configuration.rst
index d2c0da4c..d6a80048 100644
--- a/docs/configuration.rst
+++ b/docs/configuration.rst
@@ -1586,6 +1586,7 @@ Description
``"posts"``,
``"replies"``,
``"media"``,
+ ``"video"``,
``"likes"``,
It is possible to use ``"all"`` instead of listing all values separately.
diff --git a/docs/supportedsites.md b/docs/supportedsites.md
index 9b753846..7592a0bc 100644
--- a/docs/supportedsites.md
+++ b/docs/supportedsites.md
@@ -148,7 +148,7 @@ Consider all listed sites to potentially be NSFW.
| Bluesky |
https://bsky.app/ |
- Avatars, Backgrounds, Feeds, Followed Users, Hashtags, User Profile Information, 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, Videos |
Supported |
diff --git a/gallery_dl/extractor/bluesky.py b/gallery_dl/extractor/bluesky.py
index dde75963..ec274b81 100644
--- a/gallery_dl/extractor/bluesky.py
+++ b/gallery_dl/extractor/bluesky.py
@@ -225,6 +225,7 @@ class BlueskyUserExtractor(BlueskyExtractor):
(BlueskyPostsExtractor , base + "posts"),
(BlueskyRepliesExtractor , base + "replies"),
(BlueskyMediaExtractor , base + "media"),
+ (BlueskyVideoExtractor , base + "video"),
(BlueskyLikesExtractor , base + "likes"),
), (default,))
@@ -259,6 +260,16 @@ class BlueskyMediaExtractor(BlueskyExtractor):
self.groups[0], "posts_with_media")
+class BlueskyVideoExtractor(BlueskyExtractor):
+ subcategory = "video"
+ pattern = USER_PATTERN + r"/video"
+ example = "https://bsky.app/profile/HANDLE/video"
+
+ def posts(self):
+ return self.api.get_author_feed(
+ self.groups[0], "posts_with_video")
+
+
class BlueskyLikesExtractor(BlueskyExtractor):
subcategory = "likes"
pattern = USER_PATTERN + r"/likes"
diff --git a/test/results/bluesky.py b/test/results/bluesky.py
index c884b70c..87305bb9 100644
--- a/test/results/bluesky.py
+++ b/test/results/bluesky.py
@@ -39,6 +39,7 @@ __tests__ = (
"https://bsky.app/profile/did:plc:z72i7hdynmk6r22z27h6tvur/posts",
"https://bsky.app/profile/did:plc:z72i7hdynmk6r22z27h6tvur/replies",
"https://bsky.app/profile/did:plc:z72i7hdynmk6r22z27h6tvur/media",
+ "https://bsky.app/profile/did:plc:z72i7hdynmk6r22z27h6tvur/video",
"https://bsky.app/profile/did:plc:z72i7hdynmk6r22z27h6tvur/likes",
),
},
@@ -93,6 +94,16 @@ __tests__ = (
"#count" : 40,
},
+{
+ "#url" : "https://bsky.app/profile/mikf.bsky.social/video",
+ "#category": ("", "bluesky", "video"),
+ "#class" : bluesky.BlueskyVideoExtractor,
+ "#urls" : (
+ "https://conocybe.us-west.host.bsky.network/xrpc/com.atproto.sync.getBlob?did=did:plc:cslxjqkeexku6elp5xowxkq7&cid=bafkreibmoobktxndnzauku65onoxu2tvvqswetezv76tqcwipktjs3cw3m",
+ "https://conocybe.us-west.host.bsky.network/xrpc/com.atproto.sync.getBlob?did=did:plc:cslxjqkeexku6elp5xowxkq7&cid=bafkreihq2nsfocrnlpx4nykb4szouqszxwmy3ucnk4k46nx5t6hjnxlti4",
+ ),
+},
+
{
"#url" : "https://bsky.app/profile/did:plc:jfhpnnst6flqway4eaeqzj2a/feed/for-science",
"#category": ("", "bluesky", "feed"),