#51 31/08/2017 21:42:33

zubrick
Développeur guide xmltvDéveloppe le guide tv_grab_fr_telerama et maintient tv_grab_fr.
Inscription : 15/03/2010
Messages : 53
Mythbox

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

sdrik a écrit :
zubrick a écrit :

Merci Metaplop, j'ai rajouté ta ligne.
J'ai créé un github. Si tu as fait des ajouts intéressants, ça peut être bien de les mettre dedans.
D'ailleurs, vu que tu as l'air de t'y connaître en caractères spéciaux, si tu as une idée pour l'encodage, je suis preneur.

Pour ce qui est des erreurs 503.
503 est l'erreur http pour forbidden, je penses donc que c'est plutôt un problème de rate limiting sur leur api que de vrais erreurs qui reverrai plutôt une erreur 500.
Est-ce que vous avez beaucoup de trous avec la version 1.23 qui essaie une deuxième fois en cas de 503?

Non, c'est le 403 pour forbidden.
503 c'est un serveur web frontal qui reçoit une erreur d'un serveur web backend : soit c'est de la surcharge, soit c'est un bug dans un backend qui renvoie une réponse vide au frontal.
Quand c'est persistant sur certaines pages de certaines chaines, j'aurais plutôt tendance à dire que c'est le deuxième cas. Quand ça disparaît en attendant quelques secondes, c'est le premier.
Et je confirme que plus on avance en date, moins il y a d'erreur.

Ouais, t'as totalement raison pour la 503, courte nuit, longue journée, plus les yeux en fasse des trous.
Moi en tout cas, j'en ai plus vraiment. J'ai par contre des problèmes de décodage du json

Hors ligne

#52 31/08/2017 22:46:02

zubrick
Développeur guide xmltvDéveloppe le guide tv_grab_fr_telerama et maintient tv_grab_fr.
Inscription : 15/03/2010
Messages : 53
Mythbox

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

J'ai corrigé le problème des trous pour certaines chaines, liés à l'encodage des caractères spéciaux, principalement les guillemets qui entraient en conflict avec la syntaxe du json.
La dernière version est dispo là: https://github.com/zubrick/tv_grab_fr_telerama

J'ai toujours un problème d'encodage que je ne comprends pas. Le xml a bien l'air d'être en utf8, mais mythfilldatabase ne doit pas le comprendre, parce que je n'ai toujours pas le bon encodage dans mon mythtv, ce qui veut dire que l'encodage est différent de l'ancienne version. Si quelqu'un a une idée...

Hors ligne

#53 31/08/2017 22:58:22

sdrik
Membre
Inscription : 28/08/2017
Messages : 17

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

Voici un petit protoype python qui implémente l'algo de recherche dichotomique des trous.
J'obtiens une couverture de 100%
En moyenne il faut 15 requêtes pour ramener un jour complet pour une chaine quand il y a des trous, et 1 seule requête quand il n'y en a pas.
Si je passe la liste des 32 chaines TNT et une taille initiale de 2048 pour le 31/08 j'obtiens les 956 programmes en 27 requêtes. Pour le 30/08 (qui est bourré de trous), les 973 sortent en 133 requêtes.

import requests
import json

# size doit être une puissance de 2
def get_program(date, channel, size, page):
    if size == 0:
        return None
    print('%s %s %d %d' % (date, channel, size, page))
    r = requests.get(API_URL + PROGRAM_URL, {
        'dates': date,
        'id_chaines': channel,
        'nb_par_page': size,
        'page': page
    })
    print(r.status_code)
    if r.status_code == 503:
        r1 = get_program(date, channel, int(size/2), (page-1)*2+1)
        r2 = get_program(date, channel, int(size/2), (page-1)*2+2)
        if r1 == None:
            if r2 == None:
                return None
            return r1
        else:
            if r2 == None:
                return r1
            if not 'donnees' in r1:
                return None
            if not 'donnees' in r2:
                return r1
            r1['donnees'].extend(r2['donnees'])
            r1['pagination']['nb_par_page'] += r2['pagination']['nb_par_page']
            r1['pagination']['nb_sur_page'] += r2['pagination']['nb_sur_page']
            return r1
    return r.json()

r = get_program('2017-08-30', '4', 128, 1)
with open('/tmp/test.json', 'w') as f:
    json.dump(r, f)

Hors ligne

#54 01/09/2017 07:40:37

zubrick
Développeur guide xmltvDéveloppe le guide tv_grab_fr_telerama et maintient tv_grab_fr.
Inscription : 15/03/2010
Messages : 53
Mythbox

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

J'avais encore un bug pour le dernier élément de la page, je crois que c'est réglé. Version dispo sur github.
Dans tous mes essais, je ne suis jamais tombé sur une 503, je prend une page/jour/chaine et ça marche très bien.

Définitivement un truc étrange avec cet encodage. mythfilldatabase, lorsqu'il appel directement tv_grab_fr_telerama, produit des erreurs d'encodage. Par contre, si je grab dans un fichier xml et que je l'importe avec --file dans mythfilldatabase, l'encodage est nickel.
Vous avez aussi ça ou je suis le seul?

En me basant sur la page https://www.mythtv.org/wiki/Mythfilldatabase j'ai modifié un peu leur script (il n'y a pas 20 jours dispo, donc on s'arrête à 8). Je l'ai aussi mis sur github.
Je perd pas espoir de trouver une solution plus propre, mais en attendant, ça fera l'affaire.

Hors ligne

#55 01/09/2017 08:44:47

andres@hotmail.fr
Membre
Inscription : 30/08/2017
Messages : 21

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

En fait api.telerama.fr semble correspondre a l'application Telerama sur l'iphone (peut-etre sur Android aussi ?)
On a les programmes par heure en cliquant sur l'horloge.
En cliquant sur Compte on peut ajouter des chaines.
Si on n'ajoute pas Canal Sport(chaine 35 qui provoque l'erreur 503), tout se passe bien, dans le cas contraire ca plante avec un message indiquant un format incorrect.
L'erreur 503 correspond donc bien à un probleme de contenu et surtout Telerama est interesse a le résoudre car il a des repercussions directes sur son application.
C'est d'ailleurs ce qu'il fait.

Par contre, l'erreur 503 peut provoquer un trou non récupérable:
Par exemple, https://api.telerama.fr/v1/programmes/t … =1&page=16 trouve le dernier programme de Canal Sport du 31/08. Après, avec page>=17, ca plante.
Le programme correspondant à page=16 est Fight+; or en allant sur le site programme-tv.net, on voit que l'emission suivante du 1/9 à partir de 5:05 est "Les Guignols" (c'est toujours cette émission qui termine les programmes d'ailleurs); on a donc bien perdu cette ligne de programme (nb: pour le site api.telerama.fr, la journéee ne commence pas à 0h mais vers 6h30 et se termine à la même heure le lendemain !!? ...)

Hors ligne

#56 01/09/2017 09:45:10

Jean-Loup
Invité

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

Bonjour,

J'ai testé la nouvelle version 1.25, j'ai des soucis comme indiqué de codage, mais a priori pas de soucis 503.

J'ai vérifié le JSON est bon. J'ai lancé le grab vers un XML est j'ai des soucis d'encodage dans le XML.
Lors du lancement du grab j'ai des remontées d'erreurs :

desc element: Wide character in print at /usr/lib/x86_64-linux-gnu/perl/5.26/IO/Handle.pm line 159.

Du coup comme le XML présente des erreurs de codage forcement Mythtv a aussi des erreurs de codage avec des points d'interrogation au lieu des accents attendus.

#57 01/09/2017 10:16:49

Jean-Loup
Invité

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

Je reviens sur le point encodage, après petite recherche le JSON affiché dans Firefox est correcte en encodage. Par contre après téléchargement et ouverture dans un éditeur de texte le caractére "é" devient "\u00e9".
Je ne sais pas si cela peux aider. J'espère en tout cas.

#58 01/09/2017 15:38:40

ed
Invité

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

Bonjour et merci a zubirck pour tv_grab_fr_telerama_1.23 moi aussi j’étais dans l'ennui et grâce a vous tous (je suis une quiche en php) je crois bien que je vais en sortir! :-)

#59 01/09/2017 16:56:55

patrick-g
Membre
Inscription : 30/08/2011
Messages : 51

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

zubrick a écrit :

J'avais encore un bug pour le dernier élément de la page, je crois que c'est réglé. Version dispo sur github.
Dans tous mes essais, je ne suis jamais tombé sur une 503, je prend une page/jour/chaine et ça marche très bien.


L'erreur 503 signifie la plupart du temps un problème de surcharge du serveur. On peut imaginer qu'avec le changement d'API, tous les smartphones ont téléchargé les nouvelles données durant les premiers jours.
Il y a quelques dizaines de minutes le serveur Télérama était en maintenance pour régler des problèmes de performance d'après le message affiché. C'est reparti, et ça devrait mieux marcher.

zubrick a écrit :

Définitivement un truc étrange avec cet encodage. mythfilldatabase, lorsqu'il appel directement tv_grab_fr_telerama, produit des erreurs d'encodage. Par contre, si je grab dans un fichier xml et que je l'importe avec --file dans mythfilldatabase, l'encodage est nickel.
Vous avez aussi ça ou je suis le seul?

Le fichier reçu est un json, il est donc déjà en UTF8, codé à la mode du langage java : \uxxxx, où les x sont des chiffres hexa.

Dans la fonction get_page_json, tu devrais supprimer le
    Encode::from_to($page, "windows-1252", "UTF8");
qui doit faire plus de mal que de bien, ainsi que les corrections anti caractères spéciaux que tu as mises en place juste au-dessus et juste en dessous de cette ligne.

Il faut juste utiliser la fonction json_decode du module JSON à la place du "JSON->new->utf8(1)->decode($page)" dans le eval, comme tu l'as fait dans get_channels. 

Il faut également remplacer le "no utf8" en début de fichier par "utf8" pour que le script perl fonctionne en utf8.
Sinon le perl risque de mal interpréter les chaînes ainsi que les hash (qui sont également en UTF8) cf. json;org.

Et tout devrait rentrer dans l'ordre (ou pas loin).

Je n'ai malheureusement pas de PC sous la main en ce moment pour tester moi-même.

A noter : il n'y a plus besoin d'un user-agent spécifique (au moins pour l'instant) puisqu'on voit les pages dans n'importe quel navigateur.

Hors ligne

#60 01/09/2017 18:21:13

GiPé
Membre
Inscription : 01/09/2017
Messages : 8

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

Bonjour à tous,

Zubrick,

la génération du tag "icon" dans le programme ne fonctionne pas, le tag json correspondant est "vignettes" (au pluriel) dans ton code, tu as utilisé "vignette" (au singulier).

D’autre part, la critique est avec le tag json "notule" et non pas "critique".

Cordialement, et merci pour le super boulot !

Dernière modification par GiPé (01/09/2017 19:23:53)

Hors ligne

#61 01/09/2017 19:36:50

sdrik
Membre
Inscription : 28/08/2017
Messages : 17

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

andres@hotmail.fr a écrit :

Par contre, l'erreur 503 peut provoquer un trou non récupérable:
Par exemple, https://api.telerama.fr/v1/programmes/t … =1&page=16 trouve le dernier programme de Canal Sport du 31/08. Après, avec page>=17, ca plante.
Le programme correspondant à page=16 est Fight+; or en allant sur le site programme-tv.net, on voit que l'emission suivante du 1/9 à partir de 5:05 est "Les Guignols" (c'est toujours cette émission qui termine les programmes d'ailleurs); on a donc bien perdu cette ligne de programme (nb: pour le site api.telerama.fr, la journéee ne commence pas à 0h mais vers 6h30 et se termine à la même heure le lendemain !!? ...)

Je ne pense pas.
Les pages 17 et 18 plantent, mais la page 19 renvoie bel et bien un enregistrement "Les Guignols" commençant à 05:05 (l'heure de fin de Fight+).

Mes tests confirment qu'il est possible de récupérer 100% des programmes malgré les erreurs 503 persistantes (celles qui reviennent systématiquement pour une URL donnée indépendamment de la charge). Ces erreurs sont très certainement liées à un bug de jeunesse dans leur données, il ne semble plus y en avoir (en tout cas sur les chaînes de la TNT) à partir du 02/09.

Hors ligne

#62 01/09/2017 19:41:09

zubrick
Développeur guide xmltvDéveloppe le guide tv_grab_fr_telerama et maintient tv_grab_fr.
Inscription : 15/03/2010
Messages : 53
Mythbox

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

GiPé: Je viens de corriger ça sur github

patrick-g: Quand j'ai vu ton message, j'étais plein d'espoir, car il me semble que c'est déjà toi qui avait réglé ça la dernière fois. Mais malheureusement, sans succès cette fois. Du coup, si je ne convertis pas et que je ne supprime pas les caractère spéciaux, j'ai les mêmes erreurs que Jean-Loup, que je n'avais pas avant.

Hors ligne

#63 01/09/2017 21:14:27

patrick-g
Membre
Inscription : 30/08/2011
Messages : 51

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

@Zubrick :
C'était bien moi smile.

Peut-être encore une des subtilité du perl : d'après la doc du module JSON, il semble que par défaut il n'encode/decode pas en UTF8 !
il faudrait faire une commande du type (cf. plus haut sur le même lien) :
    $json = $json->utf8([$enable])
avant d'appeler l'une ou l'autre des fonctions.

Si, à propos de Jean-Loup,  tu parles de l'erreur

desc element: Wide character in print at /usr/lib/x86_64-linux-gnu/perl/5.26/IO/Handle.pm line 159.

je ne suis pas sûr que HANDLE->print sache gérer l'UTF8 encodé en binaire. Il faut peut-être l'encoder en UTF8 chaine avant de lui transmettre la chaine. une fonction du même type que json->encode ou utf8(1)->encode

Hors ligne

#64 01/09/2017 22:44:42

GiPé
Membre
Inscription : 01/09/2017
Messages : 8

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

Bonsoir,

@Zubrick,

Merci pour les fixes. Ça fonctionne correctement.

un autre petit défaut dans l'xml généré :

    <audio>
      <stereo>ARRAY(0x980b808)</stereo>
    </audio>

Cordialement et bonne soirée à tous.

Hors ligne

#65 01/09/2017 23:48:49

hamelg
Membre
Inscription : 03/07/2012
Messages : 44
Mythbox

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

Le bug des accents est très curieux : il survient uniquement si le fichier de configuration en contient.

TEST1 >> Résultat OK

$ cat ~/.xmltv/tv_grab_fr_telerama.conf
channel 192 TF1;http://television.telerama.fr/sites/tr_master/files/sheet_media/tv/500x500/192.png
$ ./tv_grab_fr_telerama --output zz --days 1
using config filename /home/hamelg/.xmltv/tv_grab_fr_telerama.conf
getting listings: ##################################################
Grabber process finished in 3 seconds.
$ file zz
zz: XML 1.0 document, ISO-8859 text, with very long lines

TEST2  (notez le Ô de France Ô) >> Résultat KO

$ cat ~/.xmltv/tv_grab_fr_telerama.conf
channel 160 France Ô;http://television.telerama.fr/sites/tr_master/files/sheet_media/tv/500x500/160.png
$ ./tv_grab_fr_telerama --output zz --days 1
using config filename /home/hamelg/.xmltv/tv_grab_fr_telerama.conf
getting listings: desc element: Wide character in print at /usr/lib/perl5/core_perl/IO/Handle.pm line 420.
desc element: Wide character in print at /usr/lib/perl5/core_perl/IO/Handle.pm line 420.
desc element: Wide character in print at /usr/lib/perl5/core_perl/IO/Handle.pm line 420.
##################################################
Grabber process finished in 3 seconds.
$ file zz
zz: XML 1.0 document, Non-ISO extended-ASCII text, with very long lines

Peut-être est ce un indice intéressant ...

Hors ligne

#66 02/09/2017 00:21:49

racacax
Membre
Inscription : 31/08/2017
Messages : 13

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

sdrik a écrit :

Mes tests confirment qu'il est possible de récupérer 100% des programmes malgré les erreurs 503 persistantes (celles qui reviennent systématiquement pour une URL donnée indépendamment de la charge). Ces erreurs sont très certainement liées à un bug de jeunesse dans leur données, il ne semble plus y en avoir (en tout cas sur les chaînes de la TNT) à partir du 02/09.

Je confirme que les erreurs diminuent. A partir du 03/09, il n'y en a aucune. La preuve. On peut récupérer toutes les données d'un coup pour ce jour là :
http://api.telerama.fr/v1/programmes/te … 000&page=1

Hors ligne

#67 02/09/2017 13:40:36

aristide
Membre
Inscription : 02/09/2017
Messages : 3

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

hamelg a écrit :

Le bug des accents est très curieux : il survient uniquement si le fichier de configuration en contient.

...

Peut-être est ce un indice intéressant ...

J'ai essayé pour voir, et le résultat de 'file' est pareil que pour toi.

J'avais essayé le grabber de schedule direct l'année passée et il "me reste" des fichiers exemple. En les passant à 'file', le résultat est différent:

avec tv_grab_fr_telerama:

test.xml: XML 1.0 document, Non-ISO extended-ASCII text, with very long lines

avec tv_grab_sd_json:

france_eurosport.xml: XML document text

Je suis allé voir dans le script si je trouvais quelque chose (je ne suis pas programmeur et n'y comprend pas grand chose) et j'ai trouvé ceci dans le grabber sd:

# The XMLTV::Writer docs only indicate you need to set 'encoding'. However,
# this value does not get passed to the underlying XML::Writer object. Unless
# 'ENCODING' is also specified XML::Writer does not actually encode the data!
my %w_args = (
	'encoding' => 'utf-8',
	'ENCODING' => 'utf-8',
	'UNSAFE'   => 1,
);

Le bout de code suivant me semble avoir la même fonction dans le grabber tv_grab_fr_telerama:

$w_args{encoding} = 'utf-8';

J'ai donc ajouté les deux lignes supplémentaires comme dans le grabber tv_grab_sd_json et le résultat de file est le suivant:

test_ENCODING.xml: XML 1.0 document, UTF-8 Unicode text, with very long lines

L'affichage avec 'less' est correct, de même que dans le guide des programmes de MythTV.

Hors ligne

#68 02/09/2017 14:02:57

aristide
Membre
Inscription : 02/09/2017
Messages : 3

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

Je confirme, en ajoutant ceci après la ligne n° 583 du script, ça marche:

$w_args{ENCODING} = 'utf-8';
$w_args{UNSAFE} = 1;

J'ai pu importer 10 jours de programmes et mon backend est content smile (et moi aussi par la même occasion). Les règles d'enregistrement avec des titres "accentués" ont l'air de fonctionner.

Il me reste à intégrer le nouveau script dans le backend pour que la récupération des programmes soit "comme avant".

Un grand merci à zubrick et aux autres pour la création du grabber et surtout pour la "réparation" du script cette semaine.

Hors ligne

#69 02/09/2017 14:06:23

hamelg
Membre
Inscription : 03/07/2012
Messages : 44
Mythbox

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

Le module XMLTV:Writter hérite de XML::Writter. La Doc de XML::Writter indique l'argument ENCODING en majuscule, c'est peut-être ça la raison. J'ai retiré tous ce qui avait attrait à l'encoding dans le script et ça continue à fonctionner.

$ grep -i utf tv_grab_fr_telerama
#   coding: utf-8
         Correction définitive (je pense) des problèmes d'encodage UTF8 (le xml généré passe xmltv:tv_validate_file)
#use utf8;
#no utf8;
#binmode(STDOUT, ":utf8");
$w_args{ENCODING} = 'UTF-8';
    #my $length = Encode::from_to($page, "windows-1252", "UTF8") ;
    #Encode::from_to($page, "windows-1252", "UTF8");

Hors ligne

#70 02/09/2017 14:24:57

zubrick
Développeur guide xmltvDéveloppe le guide tv_grab_fr_telerama et maintient tv_grab_fr.
Inscription : 15/03/2010
Messages : 53
Mythbox

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

Hello,

Merci pour vos retours. J'ai donc fait comme hamelg le suggère, et ça fonctionne aussi pour moi.
C'est étrange, il me semblait pas avoir modifié ça
J'ai également corrigé le flag stereo.

Nouvelle version 1.26: https://raw.githubusercontent.com/zubri … r_telerama

Hors ligne

#71 02/09/2017 19:08:48

GiPé
Membre
Inscription : 01/09/2017
Messages : 8

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

Bonjour à tous,

Je n'ai pas dans W9 un film de l'après-midi à 16h20 : "Trouver l'amour à Valentine" ni dans le JSON ni dans le XML (normal), mais il est bien dans mon application iphone.

Du coup j'aurais pu le rater sad

Trêve de plaisanterie, cela fait un trou dans le programme... Avez-vous constaté le même problème ? Une idée ?

Hors ligne

#72 02/09/2017 19:45:43

Icarus
Invité

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

Je ne suis qu'un simple utilisateur du script (avec Tvheadend) mais je tenais à vous dire beau boulot pour la réactivité smile

#73 02/09/2017 19:46:02

zubrick
Développeur guide xmltvDéveloppe le guide tv_grab_fr_telerama et maintient tv_grab_fr.
Inscription : 15/03/2010
Messages : 53
Mythbox

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

GiPé a écrit :

Bonjour à tous,

Je n'ai pas dans W9 un film de l'après-midi à 16h20 : "Trouver l'amour à Valentine" ni dans le JSON ni dans le XML (normal), mais il est bien dans mon application iphone.

Du coup j'aurais pu le rater sad

Trêve de plaisanterie, cela fait un trou dans le programme... Avez-vous constaté le même problème ? Une idée ?

Tu utilises mon grabber? parce que moi il m'aurait sans problème enregistré "Trouver l'amour à Valentine" (il est dans mon xml de 16h20 à 18h10), mais comme j'avais pas regardé mon programme je l'ai loupé aussi ;-)

Hors ligne

#74 02/09/2017 19:53:48

GiPé
Membre
Inscription : 01/09/2017
Messages : 8

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

J'ai relancé ton grabber. Pas de Valentine dans le xml, seulement Sugarcreek, mais c'est pas la même ville !

Bon si toi tu l'as c'est que ce n'est pas un problème du grabber.

Bonne soirée !

Hors ligne

#75 02/09/2017 20:11:44

andres@hotmail.fr
Membre
Inscription : 30/08/2017
Messages : 21

Re : tv_grab_fr_telerama 1.21 ne fonctionne plus ...

Gipé,
il est dans le Json en tout cas:
https://api.telerama.fr/v1/programmes/t … =1&page=11

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Si vous êtes un être humain ne changez pas le contenu de ces deux champs.

Pied de page des forums

Propulsé par FluxBB

Webmasteur SnouF

Hébergé par Tuxfamily

Valid XHTML 1.0 Strict