[bluesky] add 'bookmark' extractor (#8370)

This commit is contained in:
Mike Fährmann
2025-10-08 10:00:12 +02:00
parent d49b819886
commit a4e0091b25
3 changed files with 21 additions and 1 deletions

View File

@@ -44,6 +44,8 @@ class BlueskyExtractor(Extractor):
for post in self.posts():
if "post" in post:
post = post["post"]
elif "item" in post:
post = post["item"]
if self._user_did and post["author"]["did"] != self._user_did:
self.log.debug("Skipping %s (repost)", self._pid(post))
continue
@@ -372,6 +374,15 @@ class BlueskyHashtagExtractor(BlueskyExtractor):
return self.api.search_posts("#"+hashtag, order)
class BlueskyBookmarkExtractor(BlueskyExtractor):
subcategory = "bookmark"
pattern = BASE_PATTERN + r"/saved"
example = "https://bsky.app/saved"
def posts(self):
return self.api.get_bookmarks()
class BlueskyAPI():
"""Interface for the Bluesky API
@@ -407,6 +418,10 @@ class BlueskyAPI():
}
return self._pagination(endpoint, params)
def get_bookmarks(self):
endpoint = "app.bsky.bookmark.getBookmarks"
return self._pagination(endpoint, {}, "bookmarks", check_empty=True)
def get_feed(self, actor, feed):
endpoint = "app.bsky.feed.getFeed"
uri = (f"at://{self._did_from_actor(actor)}"