Add Scripts/unblock-bluesky.py

This commit is contained in:
2026-09-07 14:48:02 +02:00
parent b9878ecb52
commit f713e87195
+87
View File
@@ -0,0 +1,87 @@
"""
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 = '<Bluesky-Handle>' # Beispiel "myhandly.bsky.social"
BSKY_PASSWORD = '<App-Passwort>' # 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)