Source code for nkdsu.apps.vote.management.commands.update_mastodon_instances
import os
from django.core.management.base import BaseCommand
import requests
from nkdsu.apps import vote
SOURCE_INSTANCES = {
'mastodon.social',
'icosahedron.website',
}
[docs]
class Command(BaseCommand):
[docs]
def write_instances(self, instances: list[str]) -> None:
txt_path = os.path.join(
os.path.dirname(vote.__file__), 'mastodon_instances.txt'
)
with open(txt_path, 'wt') as f:
for instance in instances:
f.write(f"{instance}\n")
[docs]
def handle(self, *args, **kwargs) -> None:
instances: set[str] = set()
for source_instance in SOURCE_INSTANCES:
instances.update(
requests.get(f"https://{source_instance}/api/v1/instance/peers").json()
)
self.write_instances(sorted(instances))