Skip to content

Instantly share code, notes, and snippets.

@schrodyn
Forked from hamelsmu/follow_theirs.py
Created November 25, 2024 22:29
Show Gist options
  • Save schrodyn/27c3ff77440fe3302b3ccbbaf97e1a79 to your computer and use it in GitHub Desktop.
Save schrodyn/27c3ff77440fe3302b3ccbbaf97e1a79 to your computer and use it in GitHub Desktop.
"I'll have what they are having" for bluesky. The motiviation is to mimic who someone else is following who reports they are having a good experience on bluesky!
def follow_user_follows(client, target_user):
"Follow everyone the target_user is following."
cursor = None
total_followed = 0
while True:
# Step 1: Fetch a batch of accounts the target user is following
# https://docs.bsky.app/docs/api/app-bsky-graph-get-follows
response = client.app.bsky.graph.get_follows({
'actor': target_user,
'limit': 100,
'cursor': cursor
})
# Step 2: Iterate through the accounts
for follow in response.follows:
try:
# Step 3: Follow each account
client.follow(follow.did)
print(f'Following {follow.handle}')
total_followed += 1
# Step 4: Add a delay to respect rate limits
time.sleep(2)
except Exception as e:
print(f'Error following {follow.handle}: {str(e)}')
# Step 5: Check for more accounts to follow
if not response.cursor:
break
cursor = response.cursor
# Step 6: Print progress
print(f'Followed {total_followed} users so far')
# Step 7: Print final result
print(f'Finished following {total_followed} users')
# Step 8: Set up credentials
USERNAME = 'your_username.bsky.social'
APP_PASSWORD = 'your_app_password'
TARGET_USER = 'target_user.bsky.social'
# Step 9: Initialize and authenticate client
client = Client()
client.login(USERNAME, APP_PASSWORD)
# Step 10: Execute the follow process
follow_user_follows(client, TARGET_USER)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment