Skip to content

Commit

Permalink
fix example
Browse files Browse the repository at this point in the history
  • Loading branch information
MarshalX committed Nov 12, 2024
1 parent e71197c commit 0ef54f5
Showing 1 changed file with 19 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,52 +2,56 @@

from atproto import Client, IdResolver, models

def fetch_posts(client: Client, resolver: IdResolver, url: str) -> Optional[models.app.bsky.feed.get_posts.Response]:
"""
Fetches a post using its Bluesky URL.

def fetch_posts(client: Client, resolver: IdResolver, url: str) -> Optional[models.AppBskyFeedPost.Record]:
"""Fetch a post using its Bluesky URL.
Args:
client (Client): Authenticated Atproto client.
resolver (IdResolver): Resolver instance for DID lookup.
url (str): URL of the Bluesky post.
Returns:
Optional[models.Record]: The hydrated post record if found, otherwise None.
:obj:`models.AppBskyFeedPost.Record`: Post if found, otherwise None.
"""
try:
# Extract the handle and post ID from the URL
parts = url.split('/')
handle = parts[4] # Username in the URL
post_id = parts[6] # Post ID in the URL
# Extract the handle and post rkey from the URL
url_parts = url.split('/')
handle = url_parts[4] # Username in the URL
post_rkey = url_parts[6] # Post Record Key in the URL

# Resolve the DID for the username
did = resolver.handle.resolve(handle)
if not did:
print(f'Could not resolve DID for handle "{handle}".')
return None
# Construct the `at://` URI for the post and fetch the post record
at_uri = f'at://{did}/app.bsky.feed.post/{post_id}'
return client.get_posts([at_uri])

# Fetch the post record
return client.get_post(post_rkey, did).value
except (ValueError, KeyError) as e:
print(f'Error fetching post for URL {url}: {e}')
return None


def main() -> None:
# Initialize client and authenticate
# Initialize a client and authenticate
client = Client()
client.login('my-handle', 'my-password')

# Initialize IdResolver for DID resolution
resolver = IdResolver()

# Define the URL of the post to fetch
url = 'https://bsky.app/profile/danabra.mov/post/3lagnt6bpkc2l'
bsky_post_url = 'https://bsky.app/profile/test.marshal.dev/post/3laqsdrwwgc24'

# Fetch the post
post_record = fetch_posts(client, resolver, url)
post_record = fetch_posts(client, resolver, bsky_post_url)

# Display the post details
if post_record:
print(f'Post Content: {post_record.text}')
print(f'Post content: {post_record.text}')
else:
print('Post could not be fetched.')


if __name__ == '__main__':
main()

0 comments on commit 0ef54f5

Please sign in to comment.