Získat seznam účtů, které mi followují, bylo celkem netriviální, protože Mastodon z nějakého důvodu (asi výkonostního?) trvá na stránkovaném načítání dlouhých jsonů (limit=80 je maximální možný, víc to nejde), což mi donutilo přepsat svůj miniframwork chobot.py pro povídání si s API (již dříve jsem zveřejňoval), aby podporoval stránkování. Zájemci si případně skript upraví, aby přijímal jméno přezdívky z příkazové řádky. Asi už cítím docela potřebu udělat nějaký web s automaticky generovanými zajímavými rozklikávacími statistikami tohoto typu :-)
chobot.py:
#!/usr/bin/python3
import json
import requests
import sys
def nasaj(hostname, query = '/api/v2/instance'):
url = 'https://' + hostname + query
seznam = []
try:
while url:
response = requests.get(url, verify = False, timeout = 5)
url = response.links.get('next',{}).get('url','')
objekt = json.loads(response.text)
if type(objekt) == list:
seznam += objekt
else:
return objekt
return seznam
except KeyboardInterrupt:
sys.exit(0)
except:
return Nonefollowers.py
#!/usr/bin/python3
import chobot
uzivatel = 'xchaos'
server = 'f.cz'
ucet = chobot.nasaj(server, query = '/api/v1/accounts/lookup?acct=' + uzivatel)
if type(ucet) == dict:
instance = {}
odpoved = chobot.nasaj(server, query = '/api/v1/accounts/' + ucet['id'] + '/following?limit=80')
if type(odpoved) == list:
for ucet in odpoved:
if not '@' in ucet['acct']:
domena = server
else:
domena = ucet['acct'].split('@')[1]
instance[domena] = instance.get(domena,0) + 1
for domena in dict(sorted(instance.items(), key=lambda item: -item[1])):
print(domena, instance[domena])Poznámka: při psaní tohoto kódu nebyl týrán žádný LLM.