No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Releva la cartelera semanal de las salas de CABA del padrón data/salas.json y
publica una web con tres vistas: Películas, Por cine y Calendario.
Salas hoy (17): Cinemark Caballito, Hoyts Abasto, Hoyts DOT, Cinemark Palermo, Cinemark Puerto Madero,
Cinemark Parque Brown, Atlas Caballito, Cine Gaumont (Espacio INCAA Km 0), Multiplex Belgrano, Multiplex Lavalle,
Showcase Belgrano, Cine Cosmos UBA, Atlas Flores, Atlas Liniers, Atlas Alcorta, Atlas Patio Bullrich y
Cinépolis Recoleta. Cada sala tiene id, barrio, comuna, coordenadas, cadena
(define el color), fuente (módulo de carteleras/sources/), cfg (parámetros
para ese módulo), alcance (semana: la fuente publica varios días; dia: solo el día de la corrida) y
cobertura (completa o parcial: la fuente lista solo parte de la cartelera). activa: false saca una sala de la
corrida sin borrarla. carteleras/salas.py valida el padrón (incluye alcance y cobertura) y run.py aborta si es
inválido. Para agregar una sala de una fuente existente alcanza con una entrada nueva en el JSON.
Sólo biblioteca estándar de Python 3. Sin dependencias. Una credencial opcional: TMDB_TOKEN (ver «TMDb por API»).
python3 run.py # releva todo y genera salida/cartelera.html + salida/datos.json
python3 run.py --salida salida/cartelera-caba.html --json salida/datos-caba.json # para probar sin pisar lo de la rutina
python3 run.py --sin-puntajes # más rápido, sin consultar TMDb
python3 -m unittest discover -s tests -t .
node --test tests/js/*.test.js # funciones puras de filtros (bloque al principio de templates/app.js)
node scripts/contar_watchlist.mjs <export.zip|watchlist.csv> salida/datos-caba.json # conteo local de matches de una watchlist (no imprime títulos que no cruzan)
Ventana y fechas. La ventana es la fecha de Buenos Aires de la corrida + 4 días (no depende de Cinemark). Las fuentes «solo hoy»
(unica diario, Showcase) se asignan siempre a esa fecha; los días siguientes de esas salas se muestran con la leyenda «Esta sala publica
su programación día a día» (nunca se copian horarios a otros días). El dataset trae por sala alcance, cobertura y dias_con_datos.
La rutina diaria tiene que correr a las 11:00 ART (no antes de las 10).
Tests (ninguno sale a la red): test_fuentes_nuevas.py (unica semanal/diario, Multiplex, Showcase y su cruce, con muestras reales en tests/fixtures/fuentes/), test_run_fuentes.py (corrida completa con fuentes falsas), test_tmdb.py (matching, caché, 401/429, corrida completa y anti-fuga del token, con respuestas guardadas en tests/fixtures/tmdb/), test_parsers.py (parsers frágiles),
test_salas.py (padrón), test_unify_salas.py (cruce por sala y no regresión
contra tests/legacy_unify.py, el construir de main con 4 salas fijas),
test_cinemark_fixture.py (JSON-LD real recortado en tests/fixtures/).
run.py imprime un resumen al final (películas por sala, cuántas con puntaje,
pedidos HTTP y duración) y escribe en stderr ATENCION sin_datos=<ids de sala>
si alguna quedó en cero, o ATENCION sin_puntajes=<tmdb|rt> si un proveedor de
puntajes no devolvió ninguno.
| Sala | Fuente | Cómo |
|---|---|---|
| Cinemark y Hoyts (6 salas) | cinemark.com.ar | JSON-LD renderizado del lado del servidor en /cartelera/<slug> (una página por sala, en serie); la ficha en el payload de Next.js de /pelicula/<slug> (máx. 4 en paralelo). La sinopsis se descarta si tiene menos de 40 caracteres o empieza con $ (a veces el payload trae un precio) |
| Atlas Caballito | atlascines.com | API interna sin auth (GetFechasDisponibles, GetCacheFuncionesComplejoPeliculaFecha), complejo 191 (cfg.complejo). Si la API viene vacía (503 de Cloudflare) cae a unica diario: la sala pasa a dia/parcial en esa corrida (cfg.respaldo en el padrón) |
| Gaumont y Cosmos UBA | www.unica-cartelera.com.ar | Programación semanal en prosa (unica.semanal, expandir_semana). Se reparte solo dentro de la semana del encabezado «SEMANA DEL JUEVES dd AL MIÉRCOLES dd DE »; sin encabezado legible, hasta el miércoles siguiente a la fecha de corrida |
| Atlas Flores, Liniers, Alcorta, Patio Bullrich y Cinépolis Recoleta | www.unica-cartelera.com.ar | Una tarjeta por película con los horarios del día de la consulta e idioma (Cast. = D, Subt. = S) (unica.diario). Cobertura parcial (observado: lista 2 películas donde la web oficial de Cinépolis lista más de 25). «(Martes y miércoles cerrado)»: si la corrida cae en ese día, la sala queda sin datos |
| Multiplex Belgrano y Lavalle | multiplex.com.ar | Un solo pedido a la home: JSON en data-funciones (~55 días). Complejo por la etiqueta de <input name="complejo">, título del <h4>, noche de cine (dia, no dia_real), deduplicado por id de función; se recorta a la ventana |
| Showcase Belgrano | todoshowcase.com/cartelera/belgrano | HTML del lado del servidor, solo el día actual, formato e idioma por función (un <p> puede traer una línea por idioma) |
| TMDb (id, títulos, puntaje) | api.themoviedb.org | API oficial v3 con TMDB_TOKEN: 1 búsqueda + 1 ficha por película nueva, verificando el director. Caché en |
carteleras/tmdb.py)Da por película: tmdb_id, titulo_original, titulo_local (es-AR, si falta es-MX, es-ES),
titulo_en, anio_tmdb y el puntaje (score, sólo con vote_count >= 20). Con tmdb_id la
tarjeta muestra «Ver en Letterboxd» (letterboxd.com/tmdb/<id>/) y «TMDb»; sin id no hay enlaces.
This is the beginning of the README. Read the rest at the original. Read the full README ↗
data/tmdb-cache.json| Puntajes | rottentomatoes.com | Tomatómetro y público; requiere headers de navegador completos |