this repo has no description
1#!/usr/bin/env python3
2
3import json
4
5collections = {
6 'Popsky': ('app-popsky', 'pop culture hub'),
7 'PinkSea': ('com-shinolabs-pinksea', 'oekaki on atproto'),
8 'WhiteWind': ('com-whtwnd', 'markdown blog service'),
9 'Smoke Signal': ('events-smokesignal', 'manage events and RSVPs'),
10 'teal.fm': ('fm-teal', 'your music, beautifully tracked'),
11 'Frontpage': ('fyi-unravel-frontpage', 'a decentralised and federated link aggregator'),
12 'Flushes': ('im-flushing', 'The Decentralized Toilet Network of Planet Earth & Simulation 12B'),
13 'Streamplace': ('place-stream', 'live video on the AT Protocol'),
14 'Tangled': ('sh-tangled', 'tightly-knit social coding'),
15 'Spark': ('so-sprk', 'short-form video/photo app'),
16 'Statusphere': ('xyz-statusphere', 'atproto quick start'),
17 'Roomy': ('chat-roomy', 'group chat on atproto'),
18 'ATFile': ('blue-zio-atfile', 'store and retrieve files'),
19 'Blue Badge': ('blue-badge', 'badges for atproto handles'),
20 '2048': ('blue-twentyfortyeight', '2048 on atproto'),
21 'recipe.exchange': ('exchange-recipe', 'discover and share your favorite recipes'),
22 'Linkat': ('blue-linkat', 'link collections'),
23 'Rocksky': ('app-rocksky', 'decentralized music tracking and discovery platform'),
24 # 'name': ('ns-id', 'description'),
25}
26
27values = []
28defs = []
29
30key_func = lambda obj: str.casefold(obj[0])
31for name, (identifier, description) in sorted(collections.items(), key=key_func):
32 nsid = identifier.replace('-', '.')
33 if identifier == 'blue-twentyfortyeight':
34 # https://atproto.com/specs/label#recommended-string-syntax
35 nsid = 'blue.2048'
36 values.append(identifier)
37 defs.append(dict(
38 blurs = 'none',
39 severity = 'inform',
40 adultOnly = False,
41 identifier = identifier,
42 defaultSetting = 'warn',
43 locales = [dict(
44 lang = 'en',
45 name = name,
46 description = f'{description} ({nsid}.*)',
47 )],
48 ))
49
50doc = {
51 'labelValues': values,
52 'labelValueDefinitions': defs,
53}
54
55print(json.dumps(doc))