Écarter les chaînes qui ne font pas partie de l' offre
Pour éviter de remonter les chaînes qui ne font pas partie de l' offre un petit dev pourrait-etre utile.
En effet, c'est un peu long à faire manuellement en sélectionnant chaque chaîne depuis PVR & live TV settings. Mais pour l'ergonomie, c'est quand-même génial de n'avoir que des chaînes fonctionnelles et pour les appareils un peu plus vieux ça évite un gros ralentissement avec le téléchargement de métadonnées inutiles. (en particulier le guide TV et le picto de la chaîne)
Ex une petite boucle qui test chaque chaîne une fois pour toute. Si la chaîne ne fait pas partie de l'offre = soit non ajouté sur la playlist.m3u8, soit cochée comme non utilisée dans le fichier de settings de PVR & live TV settings.
Si c'est du python 3, je peux peut-être donner un coup de main.
Merci pour la discussion dédiée.
Pour commencer à réfléchir à ce sujet, voilà quelques pistes de réflexions et connaissances que j'ai sur le sujet pour le moment.
Idéalement, ça serait cool d'avoir un endpoint chez Orange qui renvoie directement la liste des chaînes filtrées. Mais pour le moment, je n'ai rien vu passer de tel. Et vu que sur le web ou leur application mobile, toutes les chaînes s'affichent, je n'ai pas de raison de croire qu'une telle fonctionnalité existe.
Effectivement, la première alternative, ça serait de tester une à une toutes les chaînes. Il y en a un peu plus de 300, ça pourrait prendre un certain temps, surtout sur du vieux matériel... Pas sûr que ça soit pertinent de faire cette vérification au moment où IPTV Manager s'occupe de rafraîchir la liste et le guide. On pourrait imaginer comme alternative une action depuis les paramètres à lancer manuellement.
Pour la mise à disposition, on a aussi plusieurs solutions, dont certaines que tu listes déjà :
- Filtrer au niveau de ce qu'on renvoie à IPTV Manager (ce que tu appelles
playlist.m3u8, qui n'est en réalité pas généré par cet addon) - Activer/Désactiver automatiquement les chaînes
- J'ai également pensé à un groupe de chaîne dédié. Tu as essayé par exemple de n'afficher que le group "TNT" ?
Dis-moi si je me trompe, mais les soucis que tu évoques, c'est principalement des soucis au moment de l'affichage, quand tu charges les écrans de la liste des chaînes ou du programme TV ? Ou alors tu as des ralentissements aléatoires en plus, quand l'addon rapatrie localement les données des serveurs Orange ?
Et c'est en effet du python 3 (3.8 précisément), tout coup de main est bienvenu ! Faut juste se faire à l'API de Kodi, c'est avec ça que j'ai le plus de mal, ça n'est pas hyper documenté.
Deux choses:
-
Ergonomiquemet parlant, avoir près de 500 chaînes dont une petite partie seulement est fonctionnelle, ça n'est pas génial. Soit on connaît les numéros par cœur, soit on se lasse vite de naviguer et on ne visionne que la TNT. Les chaînes musicales sont bien derriere, on ne parle pas des chaînes d'info et encore moins des chaînes d'info en anglais...
-
Techniquement, lorsque je lance le menu TV, Kodi est à bout de souffle car il tente de charger les logos et programmes de toutes les chaînes. Idem lorsque le plugin Orange met à jour le m3u8.
Je n'avais pas pensé au groupe de chaîne dédié. Mais cela ne résoudrait que l'aspect ergonomique. De ce que j' ai cru comprendre, mettre les chaînes dans un groupe invisible ne les désactive pas.
En effet, autant le code semble accessible à un débutant comme moi, autant les articulations au sein de l' API semblent complexes. La documentation simplifiée sera la bienvenue...
Je vois ton point niveau ergonomie, je constate juste que ça n'est pas ce que fait Orange sur ces interfaces, donc ça me rend sceptique sur l'existence d'un endpoint qui donnerait directement cette information (ce qui serait l'idéal).
Si tu me dis que la mise à jour du guide et de la liste des chaînes ralentit Kodi, il va falloir être malin. Aujourd'hui le plugin fait une dizaine d'appels à ce moment-là (certes un peu lourd, le guide fait 20 Mo chez moi). En ajoutant la vérification de toutes les chaînes, ça nous fait 300 appels de plus, ce qui n'est pas rien pour une petite config.
Qu'est-ce que tu penses d'un bouton dans les paramètres qui ferait cette vérification à la demande, et garderait ce résultat en cache ? Ou alors j'ai une autre idée : un réglage qui prendrait un entier comme valeur, le nombre de jours de validité du cache. Si on met 0, on garde le fonctionnement actuel. Si on met 30, il fera la vérification de la disponibilité des chaînes lors de la prochaine mise à jour. Gros chargement qui mettra ta config à genou, mais tu seras tranquille pour les 30 prochains jours.
Pour ce qui est des explications, je peux déjà te donner les grandes lignes pour le plugin :
managers: il y a trois classes responsables des trois grandes fonctionnalité du plugin : l'envoi de donnée à IPTV Manager, le chargement des flux vidéos, et la navigation dans le replay.providers: les fournisseurs TV qui sont disponibles dans le plugin, l'archi a été initialement pensées pour permettre de brancher à terme SFR, Free ou Bouygues (mais comme je suis personnellement chez Orange, ça n'avance forcément pas très vite), d'où la classeasbtract_provider.pyqui recense toutes les informations qu'on a besoin de récupérer d'un fournisseur. Ca m'a permis néanmoins d'ajouter les déclinaisons locales Oranges Caraïbe et Orange Réunion. Et comme ils sont très similaires à leur cousin de métropole, il y a une autre classe abstraiteabstract_orange_provider.pypour regrouper toutes ces fonctionnalités.utils: simplement un dossier qui regroupe des fonctions réutilisées à plusieurs endroits dans le projet
En ce qui concerne l'API web d'Orange, je n'ai hélas pas de documentation précise à te proposer. J'imagine qu'ils doivent avoir ça en interne, mais je ne bosse pas chez eux. Pour avancer, j'ai simplement reproduit ce que faisait mon navigateur en allant sur chaines-tv.orange.fr, en observant l'inspecteur, jusque dans les headers des requêtes HTTP. Une petite galère comme tu peux t'en douter !
J'espère que ça répond déjà un peu à tes questions :)
Réflexions matinales pour faire un peu avancer le schmilblick :
- J'ai trouvé ce lien : https://boutique.orange.fr/tv/chaines-tv-incluses#chainesincluses. Impossible de mettre la main sur un appel API propre, mais c'est peut-être un début. Est-ce que tu as des chaînes payantes de ton côté ? La question que je me pose c'est si cette page est dynamique.
- Pour savoir si c'est le poids des appels ou si plus d'appels mais plus légers peuvent améliorer ta situation, on peut faire un test avec ce qu'on a déjà. Dans le fichier
abstract_orange_provider.py, il y a une variablechunks_per_daydont la valeur est à 2. Je viens de me rappeler que j'avais déjà mis en place un découpage, parce qu'en effet les réponses sont super lourdes. Tu pourrais éventuellement passer ce paramètre à 10 voire 15 ou carrément 24, et voir si ça allège le truc quand IPTV Manager met à jour le guide.
Je ne pense pas que ce soit une bonne idée de scanner, même une fois de temps en temps, les 397 chaînes pour voir celles qui marchent. Cela implique de faire autant de requêtes au serveur de licence et c'est risquer des contre-mesures qui rendraient le plugin inutilisable.
J'ai une idée pour récupérer la liste des chaînes disponibles, je regarde dès que possible.
@eluisne, dans le fichier plugin.video.orange.fr/resources/lib/providers/abstract_orange_provider.py, ligne 69, essaye de remplacer
for channel in channels
par
for channel in channels if any(package in channel['packages'] for package in ['PA_BQ_BASIC_M'])
puis rafraîchis les chaînes dans IPTV Manager. Tu ne devrais plus avoir que les chaînes du bouquet gratuit.
L'étape suivante est de trouver un moyen de récupérer les bouquets auxquels on est abonné. Ça devrait être possible puisque l'interface web affiche un panier dans le coin en haut à gauche d'une chaîne quand on n'y est pas abonné.
Merci @remzouille et @f-lawe J' étais absent les derniers temps, mais je vais prendre le temps de lire et exploiter vos suggestions et ressources dans les jours à venir
@remzouille Mon idée était primaire était en effet bien trop intuitive et je n' avais pas les risques de contre mesure en tête. Dans un premier temps, je vais essayer ta suggestion. Je te tiens au courant.
Une solution facile à votre problème, vous récupérez le fichier m3u que vous modifiez en supprimant les chaînes que vous ne souhaitez pas. C'est rapide et fonctionnel.
@Lulu5353 Le fichier est réécrit en permanence par IPTV Manager, ça n'est pas durable comme solution.
@eluisne Tu as pu faire des essais avec les différentes options évoquées ? Ca donne quelque chose ?
Effectivement, cependant sur les versions précédentes du plugin orange ça fonctionnait correctement. J'avais une liste m3u avec des liens du plugin orange melangés à des liens du plugin vavooto . Sur le coup je ne peux aider, je suis un simple utilisateur sans connaissance. En tout cas bravo pour votre travail!
@Lulu5353 désolé, en ce moment je suis débordé. Mais effectivement le fichier m3u est réécrit régulièrement car les liens m3u sont basés sur le token il me semble. C'est peut-être une nouveauté éphémère par rapport au passé, mais on n'a pas vraiment le choix?
C'est le fonctionnement d'IPTV Manager. Il va régulièrement faire le tour des plugins compatibles, leur demander une liste de chaînes et un guide des programmes, puis il regroupe le tout et l'exposer à IPTV Simple PVR. Ca permet à plusieurs fournisseurs de m3u8 de fonctionner ensemble.
Concernant le token : l'astuce qui est utilisée, c'est que les chaînes Orange TV France générées par le plugin n'indiquent pas directement une url publique qui serait disponible sur le web. Elles pointent vers une url interne à Kodi (en plugin://), qui lance le plugin. C'est lui qui s'occupe ensuite de se connecter correctement à Orange, de récupérer le flux vidéo, et de l'envoyer à IPTV Simple PVR.
En fait, après essai, la technique de récupérer le fichier m3u et enlever les chaînes non souhaitées fonctionne bel et bien. Il suffit juste de remettre le lien du fichier dans la config IPTV simple.
Ok, je pense que j'ai trouvé. Le site internet a fait peau neuve, et on voit clairement si un chaîne fait partie de l'abonnement ou pas, si on affiche la page en mode connecté : https://tv.orange.fr/en-direct/programmes-en-cours. Le endpoint derrière est un peu relou à parser, mais y'a ce qu'il faut : un attribut rightTag sur les chaînes qui ne sont pas disponibles.
A voir d'ailleurs si on migre vers ces nouveaux appels, pour mimer le comportement. Il n'y a plus la recherche, mais on a gagné des catégories transversales à toutes les chaînes pour le replay, genre tous les films disponibles sur toutes les plateformes. Sympa.
J'ai une solution qui évite de modifier les endpoints.
En mode connecté, dans la page https://tv.orange.fr, il y a une variable javascript __pinia.userStore.packages qui contient les packages auxquels on est abonné (si quelqu'un est abonné à des packs et peut nous donner le contenu de cette variable pour vérifier).
Voici un patch qui en tient compte, avec un peu de nettoyage (variables inutilisées).
@f-lawe, si tu veux je peux lancer une PR.
Je ne sais pas si quelqu'un a testé la solution que j'ai proposée dans le message précédent mais elle marche très bien.
Elle a même un gros avantage : les chaînes disponibles sont récupérées chaque jour, c'est comme ça que j'ai vu qu'en ce moment on a accès à beIN SPORTS 1, 2 et 3.
Je ne sais pas si quelqu'un a testé la solution que j'ai proposée dans le message précédent mais elle marche très bien.
Elle a même un gros avantage : les chaînes disponibles sont récupérées chaque jour, c'est comme ça que j'ai vu qu'en ce moment on a accès à beIN SPORTS 1, 2 et 3.
Bonjour remzouille, j'aurai aimé tester ton patch, cependant aucune idée de la façon de l'installer, pourrais tu m'expliquer. Par avance, merci à toi
Tu peux télécharger cette version ici : https://github.com/remzouille/plugin.video.orange.fr/archive/refs/heads/master.zip
J' ai été un peu occupé ces derniers temps. Je viens juste de tester la solution proposée par @remzouille ça marche très bien. Un grand merci ! La solution était beaucoup plus simple que ce j' imaginais devoir faire. Ma TV Android gagne en célérité au lancement et l'interface est bien plus agréable avec juste le choix des chaînes fonctionnelles. En effet des petits bonus comme beIN SPORTS 1, 2 et 3 deviennent évidents.
Si on voulait aller plus loin, j' imaginais deux choses :
- Créer un petit bouton pour activer/désactiver le filtrage des chaînes qui font parties de l'abonnement. Ça aurait aussi l'avantage d'anticiper un changement chez Orange. Avec la possibilité de revenir au fonctionnement initial si la condition mise en œuvre par @remzouille disparaissait ou était codée différemment.
- Filtrer également les chaînes du Replay. (Est-ce que ce serait aussi simple à coder?)
Qu'en pensez-vous?
@eluisne, tu as modifié la ligne 69 dans abstract_orange_provider.py (c'était juste une POC pour tester) ou tu as installé le zip dont j'ai donné le lien un peu plus haut ?
Si tu as pris le zip, c'est une solution qui devrait être durable car la liste des packages auxquels on est abonné est téléchargée, et pas codée en dur. Dans ce cas, tu devrais avoir dans le log une ligne info <general>: [plugin.video.orange.fr] Packages : [...] avec la liste de ces packages à la place des ...
Tu peux la poster pour vérifier ?
Dans la dernière version en date, j'ai aussi appliqué ce filtrage aux chaînes du replay.
Quant à mettre une option pour pouvoir désactiver ce filtrage, je laisse à @f-lawe le soin de voir s'il veut utiliser cette solution car c'est son plugin avant tout.
@remzouille, j' ai directement pris ton .zip. Mais, hier les chaînes du Replay n' étaient pas filtrés. Je vérifie ce soir et je te donne aussi les logs.
Ce sont ceux de mon RPI 4:
2025-01-21 19:47:10.993 T:1036 info
2025-01-21 19:48:23.952 T:1036 info
Il devrait y avoir une ligne avec [plugin.video.orange.fr] Packages : [...].
Il faut peut-être rafraîchir les chaînes dans IPTV Manager.
Désolé, aucune occurence "orange" en plus de celles que je t'ai transmises depuis le RPI4. Côté TV Android, pas possible de récupérer les logs. Tout est verrouillé.
Mais je suis sur le premier.zip que tu as envoyé. Il y a une autre version?
Il faut sûrement rafraîchir les chaînes dans IPTV Manager car c'est à ce moment que le plugin les récupère et affiche la ligne dans le log.
Sur ta TV Android, tu peux installer l'addon Log Viewer for Kodi pour voir les logs.
Si les chaînes du replay ne sont pas filtrées c'est que tu n'as pas la dernière version. Pour avoir celle-ci, le lien reste le même. Avec cette version, les packages apparaissent dans le fichier userdata/addon_data/plugin.video.orange.fr/settings.xml sous l'entrée provider.packages.
Génial, je viens de tenter de réinstaller le .zip ça marche. Je n' ai que les replay opérationnel. Bravo @remzouille! Je teste la solution aussi sur la tv et je te trouve les logs
<setting id="provider.packages">["PA_BQ_BASIC_I"]</setting>