Hébergé chez moi En prod depuis décembre 2019 ± 4 utilisateurs
C'est une application web assez simple permettant d'avoir le programme télé des chaines de la TNT du jour.
Il permet d'afficher les sections suivantes :
La plupart des sites de programmes sont fouillis, lourds, plein de pubs.
Récupérer les informations des programmes, les miniatures. Le détail d'un programme est à la demande.
Il faut donc trois services, un service web et un service qui s'occupe de la mise à jour, et un pour le détail.
Programme de mise à jour
Serveur Web
Client Android
Pour la version android, clique ici.
Programme pour le détail
Le programme pour le détail écoute sur un canal redis, lors d'un nouveau message (par exemple m6@51d59e8732606f9736d5274d449dbc69) formé de la chaine (rouge) et d'un identifiant unique à la chaine (vert), le programme tente de récupérer le détail du programme, en cas de succès le synopsis et d'autres informations sont ajoutés.
Pour détecter les programmes de soirée (première et deuxième partie), je pars du principe qu'à 21h15 la première partie est commencée, puis je sélectionne le programme suivant comme deuxième partie.
Cela n'est pourtant pas vrai pour toutes les chaines, pour cela la config permet de surcharger cette heure en fonction de la chaine.
debut_soiree_chaine:
c8: 21h30
w9: 21h30
tmc: 21h30
De base, le détail d'un programme contient les informations suivantes :
Le détail supplémentaire contient :
Dans la base redis, un champ detail est présent pour avoir l'information sur le détail :
Dans le cas du client web (valable pour android), lors de la demande du détail d'un programme :
La récupération du détail est asynchrone, le détail partiel du programme est affiché et complété ensuite avec le reste.
Les services fonctionnent via systemd. Le programme de mise à jour est lancé tous les jours à 00h10.
Le service web fonctionne avec Gunicorn.
Le client web (html, js, css, …) et les images sont desservis par Nginx (c'est fait pour).
La base de données est un serveur Redis avec les données uniquement en RAM, dans le pire des cas (redémarrage du serveur) il faut relancer le service de mise à jour, cela permet de ne pas faire trop d'écriture sur le disque.