""" Entblocke alle blockierten Accounts https://atproto.blue/guides/social-graph/#blocks https://bsky.network/docs/bluesky-api/following/#blocking """ from atproto import Client,AtUri BSKY_HANDLE = '' # Beispiel "myhandly.bsky.social" BSKY_PASSWORD = '' # Beispiel "a1b2-c3d4-e5f6-g7" client = Client() client.login(BSKY_HANDLE, BSKY_PASSWORD) def get_blocked_accounts(): """Liest alle von deinem Account blockierten Nutzer aus.""" # Erstelle leeres Array für geblockte Accounts blocked_records = [] # Erstelle leren Cursor für Paginierung cursor = None # Pagination durchlaufen, falls viele Accounts blockiert sind while True: # app.bsky.graph.get_blocks holt die Liste aller Blockierungen response = client.app.bsky.graph.get_blocks(params={"cursor": cursor}) # Wenn Rückgabe, schreibe in Array if response.blocks: blocked_records.extend(response.blocks) # Beende Loop, wenn kein Cursor mehr zurückgegeben cursor = response.cursor if not cursor: break # Gib' Array geblockter Accounts zurück return blocked_records def unblock_accounts(blocked_users: list): """Sucht den Block-Record für jeden User und löscht ihn.""" # Wenn keine blockierten Accounts übergeben, breche ab if not blocked_users: print("Keine blockierten Accounts gefunden.") return # Um die Record-URI zu finden, holen wir die genauen Daten der Blockierungen # viewer.blocking enthält die URI des Block-Eintrags for user in blocked_users: try: # Überprüfen, ob die Record-URI im User-Objekt vorhanden ist if hasattr(user, "viewer") and user.viewer.blocking: # URI auslesen block_uri = user.viewer.blocking # URI hat das Format: at://did:plc:xxx/app.bsky.graph.block/rkey # Wir löschen den Record direkt über die API rkey = AtUri.from_str(block_uri).rkey client.app.bsky.graph.block.delete( repo=client.me.did, rkey=rkey ) print(f"Erfolgreich entblockt: @{user.handle}") else: print(f"Konnte Block-Record für @{user.handle} nicht finden.") except Exception as e: print(f"Fehler beim Entblocken von @{user.handle}: {e}") if __name__ == "__main__": # Blockierte Accounts auslesen print("Hole blockierte Accounts...") blocked_list = get_blocked_accounts(client) print(f"Anzahl blockierter Accounts: {len(blocked_list)}") # Durch die Ausgabeliste iterieren und entblocken unblock_accounts(client, blocked_list)