···11-#!/usr/bin/env python3
22-33-import json
44-55-collections = {
66- 'Popfeed': ('social-popfeed', 'pop culture hub'),
77- 'PinkSea': ('com-shinolabs-pinksea', 'oekaki on atproto'),
88- 'WhiteWind': ('com-whtwnd', 'markdown blog service'),
99- 'Smoke Signal': ('events-smokesignal', 'manage events and RSVPs'),
1010- 'teal.fm': ('fm-teal', 'your music, beautifully tracked'),
1111- 'Frontpage': ('fyi-unravel-frontpage', 'a decentralised and federated link aggregator'),
1212- 'Flushes': ('im-flushing', 'The Decentralized Toilet Network of Planet Earth & Simulation 12B'),
1313- 'Streamplace': ('place-stream', 'live video on the AT Protocol'),
1414- 'Tangled': ('sh-tangled', 'tightly-knit social coding'),
1515- 'Spark': ('so-sprk', 'short-form video/photo app'),
1616- 'Statusphere': ('xyz-statusphere', 'atproto quick start'),
1717- 'Roomy': ('space-roomy', 'group chat on atproto'),
1818- 'ATFile': ('blue-zio-atfile', 'store and retrieve files'),
1919- 'Blue Badge': ('blue-badge', 'badges for atproto handles'),
2020- '2048': ('blue-twentyfortyeight', '2048 on atproto'),
2121- 'recipe.exchange': ('exchange-recipe', 'discover and share your favorite recipes'),
2222- 'Linkat': ('blue-linkat', 'link collections'),
2323- 'Rocksky': ('app-rocksky', 'decentralized music tracking and discovery platform'),
2424- 'Leaflet': ('pub-leaflet', 'social publishing / blogging'),
2525- 'Wamellow': ('com-wamellow', 'bluesky to discord notifications'),
2626- 'Grain': ('social-grain', 'a photo sharing platform'),
2727- 'Anisota': ('net-anisota', 'a new, experimental way to use social media'),
2828- 'BookHive': ('buzz-bookhive', 'manage, organize, and review your books anywhere'),
2929- 'Woosh': ('link-woosh', 'effortlessly share everything you create, curate, and sell'),
3030- 'Snowpost': ('st-snowpo', 'a simple, minimalist writing platform'),
3131- 'Skylights': ('my-skylights', 'a simple, minimalist writing platform'),
3232- 'Status': ('io-zzstoatzz-status', 'a personal status tracker built on at protocol'),
3333- 'Yōten': ('app-yoten', 'a social tracker for your language learning journey'),
3434- 'Flashes': ('blue-flashes', 'a photo viewing client for u'),
3535- 'at://work': ('place-atwork', 'Your Career. Your Data. Your Place.'),
3636- 'Monomarks': ('at-monomarks', 'a place for sharing and discovering interesting links'),
3737- 'Wafrn': ('net-wafrn', 'a federated social media inspired by Tumblr'),
3838- 'Nooki': ('community-nooki', 'a federated social media inspired by Tumblr'),
3939- 'xcvr': ('org-xcvr', 'hyper-real-time communication on atproto'),
4040- 'Lanyards': ('app-lanyards', 'one link to make your research life easier to share'),
4141- 'Thought Stream': ('stream-thought', 'an experimental real-time, global, multi-agent communication system with optional human participation'),
4242- 'plyr.fm': ('fm-plyr', 'music on atproto'),
4343- 'Sidetrail': ('app-sidetrail', 'a little app for sharing "trails"'),
4444- 'Anchor': ('app-dropanchor', 'an experiment in geolocation on the AT protocol'),
4545- 'ATProtoFans': ('com-atprotofans', 'Connecting Fans and Creators'),
4646- 'Semble': ('network-cosmik', 'A social knowledge tool for researchers built on ATProto'),
4747- 'standard.site': ('site-standard', 'Open standards for long-form & site lexicons'),
4848- 'blento': ('app-blento', 'your home on the internet, create your own personal page'),
4949- # 'name': ('nsid-with-dashes', 'description'),
5050-}
5151-5252-values = []
5353-defs = []
5454-5555-key_func = lambda obj: str.casefold(obj[0])
5656-for name, (identifier, description) in sorted(collections.items(), key=key_func):
5757- nsid = identifier.replace('-', '.')
5858- if identifier == 'blue-twentyfortyeight':
5959- # https://atproto.com/specs/label#recommended-string-syntax
6060- nsid = 'blue.2048'
6161- values.append(identifier)
6262- defs.append(dict(
6363- blurs = 'none',
6464- severity = 'inform',
6565- adultOnly = False,
6666- identifier = identifier,
6767- defaultSetting = 'warn',
6868- locales = [dict(
6969- lang = 'en',
7070- name = name,
7171- description = f'{description} ({nsid}.*)',
7272- )],
7373- ))
7474-7575-doc = {
7676- 'labelValues': values,
7777- 'labelValueDefinitions': defs,
7878-}
7979-8080-print(json.dumps(doc))