| app | Primera versió | |
| capcat.py | Primera versió | |
| LICENSE | Primera versió | |
| README.md | Enllaç correcte a geocat | |
| requirements.txt | Primera versió | |
capcat
Bot de Mastodon que fa jugar als usuaris a endevinar la capital de cada comarca catalana. Tot el codi i la comunicació amb els usuaris és en català.
És una variant de geocat (el joc original, on cal endevinar el nom de la comarca): mateixa arquitectura, base de dades i compte de Mastodon totalment separats. Aquí el mapa destaca una comarca i cal endevinar-ne la capital; el mapa de resultat marca la capital amb un punt sobre el territori.
Com jugar
Menciona el compte del bot amb una d'aquestes paraules:
| Paraula | Què fa |
|---|---|
jugar |
Comença una partida nova (ratxa a 0) i mostra la primera comarca a endevinar-ne la capital. |
| (resposta al fil) | Escriu el nom de la capital de la comarca destacada (no el nom de la comarca) en resposta a la pregunta oberta. |
millors |
Mostra el top 10 de jugadors per la seva millor partida individual. |
panell |
Mostra les teves 10 millors partides pròpies. |
ajuda |
Torna a mostrar aquestes instruccions. |
Com funciona una partida: igual que a geocat (ratxa d'encerts consecutius, primer error acaba la partida i en desa la puntuació, victòria en encertar les 43), però la resposta esperada és sempre el nom de la capital, no de la comarca.
Cas especial — el Vallès Occidental: és l'única comarca amb dues cocapitals reals, Sabadell i Terrassa. Qualsevol de les dues es considera resposta correcta, i totes dues es marquen al mapa de resultat.
Origen de les dades de capitals
Els noms de capital vénen de les mateixes propietats (nom_capital_comarca) del dataset original de l'ICGC (ArnauInes/geometries_cat_bcn_2024) que es va fer servir per construir el geojson de geocat, però que s'havien descartat en simplificar-lo per a aquell projecte.
Les coordenades de cada capital (per dibuixar-ne el punt al mapa) s'han calculat com el punt representatiu (shapely.representative_point(), garantit dins del polígon) del municipi corresponent, cercat pel seu nom dins el geojson de municipis catalans del paquet npm es-atlas — el mateix que es va fer servir per construir el geojson de geoval.
Fitxer: app/geo/capitals.json — {comarca: [[nom, lon, lat], ...]} (llista de longitud 1, excepte el Vallès Occidental, que en té 2).
Arquitectura
Idèntica a geocat: client Mastodon fet a mida amb aiohttp (sense Mastodon.py), PostgreSQL via asyncpg, mapes amb matplotlib. Vegeu el README de geocat per als detalls (rate limits, desat en temps real, normalització de respostes, etc.) — tot és exactament igual, només canvia què es compara com a resposta correcta.
Estructura de fitxers
capcat.py # bot principal (streaming, lògica del joc)
app/
geo/
mapa_comarques.py # generació de tots els mapes (amb marcador de capital)
comarques.geojson # 43 comarques (les mateixes que geocat)
capitals.json # comarca -> [[nom capital, lon, lat], ...]
libraries/
mastodon_api.py # client Mastodon fet a mida (aiohttp) — igual que geocat
asyncdb.py # consultes SQL del joc (Database) — igual que geocat
setup.py # configuració de l'aplicació — propi del projecte
services/
postgres.py # pool de connexió Postgres — propi del projecte
db/
schema.py # creació de taules — propi del projecte
imatges/ # cache de mapes generats (es crea sola en executar-se)
Configuració
Al executar capcat.py per primer cop, es demanen els paràmetres de configuració (compte de Mastodon, connexió a Postgres) i es crea la base de dades.
Requisits
pip install aiohttp asyncpg matplotlib loguru python-dotenv