Application web (installable sur téléphone) qui liste les films à l'affiche et leurs séances pour un cinéma et un jour donnés. Par défaut : UGC Ciné Cité SQY Ouest, aujourd'hui, séances en VO.
- Heure de début du film (après les pubs) mise en avant :
- cinémas UGC : heure exacte, calculée à partir de l'heure de fin annoncée par ugc.fr (fin − durée du film) ;
- autres cinémas : estimation (≈) = heure de séance + durée de pubs typique de l'enseigne
(réglable dans
scraper/cinemas.json, cléadsMinutes).
- Filtres :
- type de séance : VO (par défaut, y compris les films francophones en français), VF (films doublés), toutes ; formats (IMAX, 4DX, Infinity Vision, 3D, séance adaptée…) ;
- nationalité : films français (coproductions incluses) ou étrangers ;
- genres ;
- note minimale selon la source : presse Allociné, spectateurs Allociné, spectateurs UGC, IMDb, Rotten Tomatoes, Metacritic, ou moyenne de toutes ;
- labels : UGC Aime, UGC Découvre, UGC Frissonne…, avant-premières, nouveautés de la semaine ;
- séances déjà commencées (masquées par défaut).
- Tris : prochaine séance, note (par source ou moyenne), titre, durée.
- Deux vues : par film (avec affiche, notes, synopsis) ou chronologique (toutes les séances triées par heure).
- Choix du cinéma avec recherche et favoris ; réglages mémorisés sur le téléphone.
- Fonctionne hors connexion avec les dernières données consultées.
- Chaque séance renvoie vers la page de réservation.
GitHub Actions (4 fois par jour) GitHub Pages
┌──────────────────────────────────────────┐ ┌──────────────────────────┐
│ scraper/scrape.py │ │ site/ (HTML/CSS/JS) │
│ • Allociné : séances, pays, genres, │ ──────▶ │ site/data/*.json │ ◀── téléphone
│ notes presse/spectateurs │ publie │ │
│ • ugc.fr : heure de fin, labels, note │ └──────────────────────────┘
│ • Wikidata + IMDb : note IMDb │
│ • OMDb (facultatif) : RT, Metacritic │
└──────────────────────────────────────────┘
Un navigateur ne peut pas interroger directement Allociné ou UGC (restrictions CORS) : les données sont donc collectées côté serveur par GitHub Actions puis publiées comme fichiers statiques avec l'application. Les données sont collectées pour 7 jours, vers 6h, 11h, 16h et 19h (heure de Paris).
Cinémas inclus : tous les UGC (48), les MK2 parisiens et les cinémas autour de Saint-Quentin-en-Yvelines.
- Rendre le dépôt public : Settings → General → Danger Zone → Change visibility. (GitHub Pages est gratuit pour les dépôts publics. Le dépôt ne contient aucune donnée personnelle ni clé.)
- Activer GitHub Pages : Settings → Pages → Build and deployment → Source : GitHub Actions.
- Lancer une première mise à jour : Actions → Mise à jour des séances → Run workflow.
- Ouvrir
https://vquemener.github.io/claudecodecloud/sur le téléphone, puis :- Android (Chrome) : menu ⋮ → Ajouter à l'écran d'accueil / Installer l'application ;
- iPhone (Safari) : bouton Partager → Sur l'écran d'accueil.
Elles proviennent d'OMDb, qui demande une clé gratuite (1 000 requêtes/jour, largement suffisant grâce au cache) :
- Demander une clé sur https://www.omdbapi.com/apikey.aspx (offre FREE), puis l'activer via le lien reçu par e-mail.
- Dans le dépôt : Settings → Secrets and variables → Actions → New repository secret,
nom
OMDB_API_KEY, valeur = la clé.
Un secret GitHub est chiffré et n'est jamais visible dans le code, même sur un dépôt public : seul le programme de collecte y a accès pendant son exécution. Il n'apparaît pas non plus dans les journaux, où GitHub le masque automatiquement.
La note IMDb, elle, ne nécessite aucune clé (Wikidata + jeux de données publics IMDb).
Éditer scraper/cinemas.json (directement sur github.com : icône crayon) et ajouter une entrée :
{"id": "B0007", "name": "Ciné 7", "city": "Élancourt", "chain": "Indépendant"}L'identifiant id est celui d'Allociné : il figure dans l'adresse de la page du cinéma
(allocine.fr/seance/salle_gen_csalle=B0007.html). Pour un cinéma UGC, ajouter aussi "ugcId"
(numéro visible dans ugc.fr/cinema.html?id=6) afin d'avoir l'heure exacte de début du film, le label et la note UGC.
python3 scraper/scrape.py --only B9052 --days 2 --no-external # collecte rapide
cd site && python3 -m http.server 8000 # puis http://localhost:8000Options du collecteur : --days N, --only ID1,ID2, --no-external (sans IMDb/OMDb), --workers N.