1
0
Fork
You've already forked capCAT
0
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à.
  • Python 100%
2026年07月13日 15:07:00 +02:00
app Primera versió 2026年07月13日 15:05:17 +02:00
capcat.py Primera versió 2026年07月13日 15:05:17 +02:00
LICENSE Primera versió 2026年07月13日 15:05:17 +02:00
README.md Enllaç correcte a geocat 2026年07月13日 15:07:00 +02:00
requirements.txt Primera versió 2026年07月13日 15:05:17 +02:00

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