[bluesky] add 'reposts' option (#4438, #5248)

pull/5256/head
Mike Fährmann 7 months ago
parent c8b591303f
commit 495c9ee126
No known key found for this signature in database
GPG Key ID: 5680CA389D365A88

@ -1242,6 +1242,16 @@ Description
(See `depth` parameter of `app.bsky.feed.getPostThread <https://www.docs.bsky.app/docs/api/app-bsky-feed-get-post-thread>`__) (See `depth` parameter of `app.bsky.feed.getPostThread <https://www.docs.bsky.app/docs/api/app-bsky-feed-get-post-thread>`__)
extractor.bluesky.reposts
-------------------------
Type
``bool``
Default
``false``
Description
Process reposts.
extractor.cyberdrop.domain extractor.cyberdrop.domain
-------------------------- --------------------------
Type Type

@ -39,12 +39,18 @@ class BlueskyExtractor(Extractor):
self._metadata_facets = ("facets" in meta) self._metadata_facets = ("facets" in meta)
self.api = BlueskyAPI(self) self.api = BlueskyAPI(self)
self._user = None self._user = self._user_did = None
def items(self): def items(self):
for post in self.posts(): for post in self.posts():
if "post" in post: if "post" in post:
post = post["post"] post = post["post"]
pid = post["uri"].rpartition("/")[2]
if self._user_did and post["author"]["did"] != self._user_did:
self.log.debug("Skipping %s (repost)", pid)
continue
post.update(post["record"]) post.update(post["record"])
del post["record"] del post["record"]
@ -75,7 +81,7 @@ class BlueskyExtractor(Extractor):
if self._metadata_user: if self._metadata_user:
post["user"] = self._user or post["author"] post["user"] = self._user or post["author"]
post["post_id"] = post["uri"].rpartition("/")[2] post["post_id"] = pid
post["count"] = len(images) post["count"] = len(images)
post["date"] = text.parse_datetime( post["date"] = text.parse_datetime(
post["createdAt"][:19], "%Y-%m-%dT%H:%M:%S") post["createdAt"][:19], "%Y-%m-%dT%H:%M:%S")
@ -385,8 +391,11 @@ class BlueskyAPI():
else: else:
did = self.resolve_handle(actor) did = self.resolve_handle(actor)
if self.extractor._metadata_user: extr = self.extractor
self.extractor._user = self.get_profile(did) if not extr.config("reposts", False):
extr._user_did = did
if extr._metadata_user:
extr._user = self.get_profile(did)
return did return did

Loading…
Cancel
Save