From dcaf7293b332efecefdc331dfaf9c86ddb837012 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Wed, 16 Apr 2025 12:00:57 +0200 Subject: [PATCH] [bluesky] add 'video' extractor (#4438) --- docs/configuration.rst | 1 + docs/supportedsites.md | 2 +- gallery_dl/extractor/bluesky.py | 11 +++++++++++ test/results/bluesky.py | 11 +++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) 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"),