Super Tv

Hébergé chez moi En prod depuis décembre 2019 ± 4 utilisateurs

Présentation

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 :

Pourquoi ?

La plupart des sites de programmes sont fouillis, lourds, plein de pubs.

Solution

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.

Détail

Détection des programmes de soirée

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

                

Détail d'un programme

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.

Technologies utilisées

Serveur Web

Programme de mise à jour

Programme de détail

Client Web

Déploiement

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.

Quelques captures d'écrans du client Web

Écran « En ce moment »

Toutes les chaines affichées