Vždy mě baví šokovat, vyděsit a konsternovat více, než jednu komunitu současně, v tomto případě to budou normie a crypto propagátoři BlueSky a programátoři v Pythonu... takhle si po letech pracovní pozici programátora nenajdu ale něčím se začít musí :-) příště už si založím nějaký codeberg nebo giteu a nebudu spamovat tady. Nicméně, na rozdíl od včerejšího releasu tohle už smysl dává...
#!/usr/bin/python3
import json
import requests
import sys
def nasaj(hostname, query = '/api/v2/instance'):
try:
return json.loads(requests.get('https://' + hostname + query, verify = False, timeout = 2).text)
except KeyboardInterrupt:
sys.exit(0)
except:
return None
#!/usr/bin/python3
import chobot
import sys
whoami = 'f.cz'
domeny = chobot.nasaj(whoami, query = '/api/v1/instance/peers') + [whoami,] #it seems that I am not peer of myself?! :-)
#domeny = ('mastodonczech.cz', 'mastodon.arch-linux.cz', 'witter.cz', 'cztwitter.cz', 'f.cz', 'mastodon.pirati.cz', 'mamutovo.cz', 'mastodon.cesko.digital', 'toot.whatever.cz')
fmt = '|%24s |%24s |%8s |%9s |%9s |%10s |%9s |%8s |%8s |%8s |'
total = 0
fsechno = []
print('Got list of %s peers.' % len(domeny))
for domena in domeny:
if domena[-3:] == '.cz':
neco = chobot.nasaj(domena)
if type(neco) is dict and neco.get('usage', None) and neco['usage'].get('users', None) and neco['usage']['users'].get('active_month', None):
fsechno.append(neco)
print(domena, '[ok]')
else:
print(domena, '[failed]')
print(neco)
print (fmt % ('Domain','Version','Monthly','Max.char', 'Max.poll', 'Translate', 'New user', 'Approve', 'Image', 'Video'))
for j in sorted(fsechno, key = lambda k: int(k['usage']['users']['active_month']), reverse = True):
try:
c = j['configuration']
u = j['usage']['users']['active_month']
total += int(u)
print(fmt % (j['domain'], j['version'], u, c['statuses']['max_characters'], c['polls']['max_options'],
c['translation']['enabled'], j['registrations']['enabled'], j['registrations']['approval_required'],
"%d MB" % int(c['media_attachments']['image_size_limit'] >> 20), "%d MB" % int(c['media_attachments']['video_size_limit'] >> 20)))
except:
pass
print('|%24s |%24s |%8s |' % ('Total', len(fsechno), total))