Script pour grabber completement sans surcharger Telepoche

Tout ce qui concerne le package XMLTV officiel.

Modérateurs : Modérateurs, Développeurs

Règles du forum
Rappel: Conditions générales d'utilisation du forum zguidetv.net

Pensez à effectuer une recherche, la réponse à votre question a de grandes chances d'avoir déjà été donnée.

Pensez également à consulter les FAQ

On ne hurle pas, on respecte l'opinion de chaque personne, on reste aimable et on respecte le travail des autres, c'est la base d'une entraide constructive.

Tout post ne respectant pas les Règles du forum sera effacé sans préavis.
Avatar du membre
The Real Mc Coy
Administrateur - Site Admin
Messages : 321
Enregistré le : 22 mars 2006 13:16

Script pour grabber completement sans surcharger Telepoche

Message non lu par The Real Mc Coy » 16 janv. 2007 11:45

Lorsque l'on souhaite grabber toutes les chaines (116) disponibles dans XMLTV, avec les descriptions et pour 9 jours on se heurte à plusieurs problèmes :
  1. C'est long, très long, très très long
  2. on surcharge le site de Telepoche (d'où les données sont extraites)
  3. si on le fait plus souvent que tous les 9 jours on télécharge en partie les mêmes données
  4. si le grabber se plante (perte de connection, pb sur le site, pb sur la machine) on perd quasiement tout et on a un fichier non valide
Pour pallier à TOUS ces problèmes il suffit de profiter de certaines fonctions du grabber FR (et peut-être d'autres grabbers, je n'ai pas vérifié) et de l'outil tv_cat fourni dans le package XMLTV :D

Le principe est de ne grabber que les données les plus éloignées dans le temps (à 9 jours donc) et de conserver les données des jours précédents puis de réassembler le tout.

Pour cela il suffit d'utiliser les fonctions --offset et --days (facultatif mais je trouve ça plus propre :P) comme ceci :

Code : Tout sélectionner

xmltv tv_grab_fr --config-file complet.conf --output part9.xml --slow --days 1 --offset 8
Voilà ce que donne le script complet :

Code : Tout sélectionner

rem ----------------------------------- Début ----------------------------------
rem -----------------------------------------------------------------------------
rem ---- On sauvegarde les anciens fichiers dans un répertoire OLD ----
rem -----------------------------------------------------------------------------
xcopy part*.xml old /y
xcopy complet.xml old /y
rem -----------------------------------------------------------------------------
rem --------------- On copie part[J].xml en part[J-1].xml ----------------
rem -----------------------------------------------------------------------------
copy part2.xml part1.xml
copy part3.xml part2.xml
copy part4.xml part3.xml
copy part5.xml part4.xml
copy part6.xml part5.xml
copy part7.xml part6.xml
copy part8.xml part7.xml
copy part9.xml part8.xml
rem -----------------------------------------------------------------------------
rem ---------------------- On grabbe à J+9 ----------------------------------
rem -----------------------------------------------------------------------------
xmltv tv_grab_fr --config-file complet.conf --output part9.xml --slow --days 1 --offset 8
rem -----------------------------------------------------------------------------
rem ------------ On assemble les 9 fichiers en un seul ---------------------
rem -----------------------------------------------------------------------------
xmltv tv_cat --output complet.xml part1.xml part2.xml part3.xml part4.xml part5.xml part6.xml part7.xml part8.xml part9.xml
rem ------------------------------------ Fin -----------------------------------
Petites remarques :
  • Le script n'est pas optimisé du tout nottament sur la copie des fichiers du début (mais je ne me suis pas pris la tête dessus pour le moment)
  • Il n'y a actuellement aucune détection d'erreur pour le moment mais c'est en cours
  • Il faut, la 1ere fois lancer un grabbe sur 8 jours (voir plus bas)
  • Pensez à modifier le nom du fichier de configuration (dans mon cas il s'appelle "complet.conf") et éventuellement le nom du fichier de sortie ("complet.xml" pour moi)
  • Avec ce script mon temps de grab se réduit à environ 40 minutes et j'ai un fichier complet avec descriptions et 116 chaines
  • En cas de problème sur le grabbe je peux juste reprendre le ou les fichiers HS (comme cela a eu lieu pendant 3 jours il y a peu)
  • Ce script est fait pour Windows mais il est facilement adaptable sous Linux ;)
Avant que ce script puisse fonctionner il faut avoir lancé un grab avec la même méthode pour les 8 premiers jours :

Code : Tout sélectionner

xmltv tv_grab_fr --config-file complet.conf --output part1.xml --slow --days 1
xmltv tv_grab_fr --config-file complet.conf --output part2.xml --slow --days 1 --offset 1
xmltv tv_grab_fr --config-file complet.conf --output part3.xml --slow --days 1 --offset 2
xmltv tv_grab_fr --config-file complet.conf --output part4.xml --slow --days 1 --offset 3
xmltv tv_grab_fr --config-file complet.conf --output part5.xml --slow --days 1 --offset 4
xmltv tv_grab_fr --config-file complet.conf --output part6.xml --slow --days 1 --offset 5
xmltv tv_grab_fr --config-file complet.conf --output part7.xml --slow --days 1 --offset 6
xmltv tv_grab_fr --config-file complet.conf --output part8.xml --slow --days 1 --offset 7
The Real Mc Coy
Administrateur

Avatar du membre
kevinpato72
Modérateur
Messages : 180
Enregistré le : 24 mars 2006 8:44
Localisation : Nantes
Contact :

Message non lu par kevinpato72 » 16 janv. 2007 13:01

C'est exactement ce que j'ai fait en fin de semaine dernière mais ca peut en aider certain d'avoir mis la méthode en ligne :D
Kévin
Modérateur/Contributeur ZGuideTV : http://xmltv.dyndns.org (Grab complet de toutes les chaines+TNT)
Groupe Facebook ZGuideTV

Avatar du membre
The Real Mc Coy
Administrateur - Site Admin
Messages : 321
Enregistré le : 22 mars 2006 13:16

Message non lu par The Real Mc Coy » 16 janv. 2007 16:34

En fait je fais ça depuis plusieurs semaines déjà car ça devenait pénible de réussir à faire un fichier complet mise à jour quotidiennement ;)

Par contre j'ai fait ça à l'arrache et je n'ai pas eu de faire des boucles de vérifications...

Mais je vais le faire, ce n'est pas supercompliqué mais ça prend du temps à tester ;)
The Real Mc Coy
Administrateur

Avatar du membre
kevinpato72
Modérateur
Messages : 180
Enregistré le : 24 mars 2006 8:44
Localisation : Nantes
Contact :

Message non lu par kevinpato72 » 16 janv. 2007 16:50

moi je teste juste la taille du fichier obtenu qu'est a peu près stable... mais bon c'est pas génial. Si la taille est inférieur a un certain je refais le grab...
Kévin
Modérateur/Contributeur ZGuideTV : http://xmltv.dyndns.org (Grab complet de toutes les chaines+TNT)
Groupe Facebook ZGuideTV

Avatar du membre
The Real Mc Coy
Administrateur - Site Admin
Messages : 321
Enregistré le : 22 mars 2006 13:16

Message non lu par The Real Mc Coy » 16 janv. 2007 16:57

Comment testes-tu la taille ?
The Real Mc Coy
Administrateur

Avatar du membre
kevinpato72
Modérateur
Messages : 180
Enregistré le : 24 mars 2006 8:44
Localisation : Nantes
Contact :

Message non lu par kevinpato72 » 16 janv. 2007 23:07

Je suis sous linux donc je me sers de 'du'
Kévin
Modérateur/Contributeur ZGuideTV : http://xmltv.dyndns.org (Grab complet de toutes les chaines+TNT)
Groupe Facebook ZGuideTV

Avatar du membre
The Real Mc Coy
Administrateur - Site Admin
Messages : 321
Enregistré le : 22 mars 2006 13:16

Message non lu par The Real Mc Coy » 16 janv. 2007 23:52

Ah oui... forcément :(
The Real Mc Coy
Administrateur

Starcrasher
VIP
Messages : 550
Enregistré le : 31 mars 2006 18:30
Localisation : Perdu dans l'immensité galactique...

Message non lu par Starcrasher » 17 janv. 2007 12:18

TRMC : Pour la vérification, tu peux utiliser tv_sort sans option ce qui trie les programmes par heure de début seulement ou, avec --by-channel qui trie d'abord par id de chaîne puis par heure de début. Il faudrait savoir ce que ZGuideTV aime le mieux, mais j'imagine qu'un tv_sort simple suffit pour chaque fichier, et qu'un tv_sort --by channel est plus digeste pour le fichier complet.
Sous linux, on fait ça facilement avec un pipe. Je pense que ça doit être possible aussi sous windows (à moins qu'ils aient viré ça avec le DOS).

Code : Tout sélectionner

GRABBER="/usr/bin/tv_grab_fr"
OPTIONS="--slow --days 2"

cd $HOME/.xmltv
TMP="/tmp/.$(basename $GRABBER).$$.xml"

$GRABBER $OPTIONS | tv_sort >"$TMP"
mv "$TMP" "$HOME/.xmltv/$(basename $GRABBER).xml"
En simple utilisateur que je suis, je n'ai pas trouvé ça tout seul. C'est le code généré par xmltv-druid http://gshowtv.sourceforge.net/. Merci donc à son auteur.
Note que dans le répertoire man situé dans le sous-répertoire doc de ton installation de xmltv, tu as les versions texte des pages de manuel linux pour toutes les fonctions.

Kévin : Tu peux essayer de faire fonctionner ton grabbeur dans le mode --perweeks, ce qui te donnera un fichier ne contenant que l'index des chaînes et aucun programme. Donc tout fichier n'ayant pas au minimum la taille de ce fichier là est forcément invalide. J'avais pensé à ça pour basculer automatiquement d'un mode à l'autre avant que --perdays devienne le choix par défaut.

Avatar du membre
kevinpato72
Modérateur
Messages : 180
Enregistré le : 24 mars 2006 8:44
Localisation : Nantes
Contact :

Message non lu par kevinpato72 » 17 janv. 2007 13:07

Starcrasher a écrit :Kévin : Tu peux essayer de faire fonctionner ton grabbeur dans le mode --perweeks, ce qui te donnera un fichier ne contenant que l'index des chaînes et aucun programme. Donc tout fichier n'ayant pas au minimum la taille de ce fichier là est forcément invalide. J'avais pensé à ça pour basculer automatiquement d'un mode à l'autre avant que --perdays devienne le choix par défaut.
Je comprend pas trop ce que tu veux dire là...
Kévin
Modérateur/Contributeur ZGuideTV : http://xmltv.dyndns.org (Grab complet de toutes les chaines+TNT)
Groupe Facebook ZGuideTV

Avatar du membre
ronaldo1
Développeur ZGuideTV
Messages : 368
Enregistré le : 25 mars 2006 1:04
Localisation : A votre Avis ?
Contact :

Message non lu par ronaldo1 » 17 janv. 2007 13:25

Starcrasher a écrit : Kévin : Tu peux essayer de faire fonctionner ton grabbeur dans le mode --perweeks, ce qui te donnera un fichier ne contenant que l'index des chaînes et aucun programme. Donc tout fichier n'ayant pas au minimum la taille de ce fichier là est forcément invalide. J'avais pensé à ça pour basculer automatiquement d'un mode à l'autre avant que --perdays devienne le choix par défaut.
Le problème n'ai pas de trouver la taille minimal d'un fichier xmltv mais que même si le fichier a une taille normal cela ne veux pas dire qu'il est pour autant valide ;)

Avatar du membre
kevinpato72
Modérateur
Messages : 180
Enregistré le : 24 mars 2006 8:44
Localisation : Nantes
Contact :

Message non lu par kevinpato72 » 17 janv. 2007 16:51

Oui c'est sur...
Kévin
Modérateur/Contributeur ZGuideTV : http://xmltv.dyndns.org (Grab complet de toutes les chaines+TNT)
Groupe Facebook ZGuideTV

Avatar du membre
ronaldo1
Développeur ZGuideTV
Messages : 368
Enregistré le : 25 mars 2006 1:04
Localisation : A votre Avis ?
Contact :

Message non lu par ronaldo1 » 17 janv. 2007 16:59

kevinpato72 a écrit :Oui c'est sur...
J'ai dit cela car je ne pense pas que Starcrasher avait compris ta réserve sur ce sujet ;)

Avatar du membre
The Real Mc Coy
Administrateur - Site Admin
Messages : 321
Enregistré le : 22 mars 2006 13:16

Message non lu par The Real Mc Coy » 17 janv. 2007 17:24

Sous Windows on doit pouvoir tester la valeur de l'ERRORLEVEL...

Si XMLTV retourne un ERRORLEVEL=0 on peut déjà dire que c'est bon signe car il n'a pas détecté d'erreur dans le processus de grab... Par contre un fichier correct mais vide (seulement la liste des chaines dû à un pb sur le site de TP) retournera aussi un ERRORLEVEL=0 donc ce n'est pas la solution ultime mais cela permet déjà de valider un minimum.

Je vais plonger dans la doc des fonction de XMLTV pour voir si avec tv_validate ou tv_sort on peut avoir ça...
The Real Mc Coy
Administrateur

Starcrasher
VIP
Messages : 550
Enregistré le : 31 mars 2006 18:30
Localisation : Perdu dans l'immensité galactique...

Message non lu par Starcrasher » 17 janv. 2007 18:28

Le test que je propose est le seul (basé sur la taille) qui donne un résultat vrai à chaque fois. Si le fichier a une taille inférieure ou égale à la taille minimum : Problème de grabbeur ou du site de Télép. Je suis d'accord ronaldo1 : Tout test avec une autre taille relève de l'alchimie. Cela ne veux pas dire pour autant que le test de Kévin soit une mauvaise idée. Et, j'imagine qu'il est expérimentalement possible de déterminer une valeur de rejet. Si je devais moi-même faire ce test, je commencerais avec une valeur de 75% de la taille maximale relevée.

J'avais testé le fichier de Caku avec tv_validate_file, cela a tendance à renvoyer pas mal de fausses erreurs. A moins d'utiliser un fichier xmltv.dtd que tu patches au fur et à mesure, ce qui peut rendre le test plus ou moins caduque.

Avatar du membre
The Real Mc Coy
Administrateur - Site Admin
Messages : 321
Enregistré le : 22 mars 2006 13:16

Message non lu par The Real Mc Coy » 18 janv. 2007 11:11

En fait il faut combiner les 2 :
- si pas de message d'erreur -> test taille sinon Fichier HS
- si test taille > 75% de la taille moyenne observée -> fichier considéré comme OK sinon Fichier HS...

Maintenant il faut trouver un outil en ligne de commande qui fasse le test de taille sous Windows (à moins qu'un dévelo nous fasse ça ;)).
The Real Mc Coy
Administrateur

Répondre