TV Shows : Mon module Netvibes - Beta Test! (4ème partie)
Mercredi 16 janvier 2008 à 23 h 30
Précédemment sur ce blog:
La fonction "Vu/Non vu" n'est pas encore mise en place car je ne sais pas encore comment l'implémenter (des idées ?). La prochaine fois, j'expliquerais comment je récupère la liste des épisodes qui m'intéresse et le fonctionnement de mon widget en UWA. Et vous pourrez normalement commencer à beta-tester le widget pour m'aider à le debugger. Si vous avez des choses à me dire afin d'améliorer ce widget, n'hésitez pas !

Dans le billet précédent vous avez compris comment je récupérais la liste des séries. Je ne vais pas réexpliquer comment je récupère la liste des épisodes pour chaque série car le fonctionnement est identique. Cependant pour représenter la liste des épisodes d'une série, je formate mon document sous un format XML qui à cet aspect :
<?xml version='1.0' standalone='yes'?>
<episodes>
<show>
<title>Nom de la série</title>
<idshow>id epguides.com pour savoir l'url</idshow>
</show>
<episode number="numéro de l'épisode">
<season>numéro de la saison</season>
<date>date de diffusion de l'épisode</date>
<title>titre de l'épisode</title>
<url>url fiche tv.com</url>
</episode>
etc. etc. pour chaque épisode
</episodes>
Le fichier XML tient compte de la période demandée, c'est à dire que si on souhaite voir les épisodes des 7 prochains jours seulement, le fichier XML retournera seulement les épisodes à venir dans les 7 prochains jours.
Malheureusement avec un nombre conséquent de série suivie. Les performances ont vite chutée. J'ai donc mis en place un système de cache tout simple afin de ne pas refaire le parsing à chaque refresh. J'ai appliqué ce système de cache à la fois pour la récupération des séries et pour les épisodes. Le temps de refresh est paramétrable, j'ai pour l'instant fixé celui-ci à :
- refresh toutes les 5 heures pour récupérer la liste des séries existantes.
- refresh toutes les 2 heures pour récupérer la liste des épisodes.
Mais on sait que des nouvelles séries n'arrivent pas tous les jours, je pourrais pousser le système de refresh à une semaine, voire deux. Pour la liste des épisodes je pense qu'un refresh toutes les semaines sera suffisant aussi. J'aimerais avoir votre avis sur ce point donc n'hésitez pas à vous exprimez en commentaire.
Le widget est donc prêt en beta : rendez-vous à cette adresse pour le tester en standalone. Vous pouvez aussi directement l'ajouter à vos Netvibes/iGoogle respectif via les boutons en dessous du widget. Pour tester le tout sous Windows Live/Vista/Mac/Opera et iPhone/iPod Touch il faudra attendre un peu. N'hésitez pas à me soumettre vos idées ! La prochaine fois je détaillerai le code javascript UWA du widget en lui-même et ça sera probablement le dernier billet pour ce widget qui devrait être terminé.
La fonction "Vu/Non vu" n'est pas encore mise en place car je ne sais pas encore comment l'implémenter (des idées ?). La prochaine fois, j'expliquerais comment je récupère la liste des épisodes qui m'intéresse et le fonctionnement de mon widget en UWA. Et vous pourrez normalement commencer à beta-tester le widget pour m'aider à le debugger. Si vous avez des choses à me dire afin d'améliorer ce widget, n'hésitez pas !

Dans le billet précédent vous avez compris comment je récupérais la liste des séries. Je ne vais pas réexpliquer comment je récupère la liste des épisodes pour chaque série car le fonctionnement est identique. Cependant pour représenter la liste des épisodes d'une série, je formate mon document sous un format XML qui à cet aspect :
<?xml version='1.0' standalone='yes'?>
<episodes>
<show>
<title>Nom de la série</title>
<idshow>id epguides.com pour savoir l'url</idshow>
</show>
<episode number="numéro de l'épisode">
<season>numéro de la saison</season>
<date>date de diffusion de l'épisode</date>
<title>titre de l'épisode</title>
<url>url fiche tv.com</url>
</episode>
etc. etc. pour chaque épisode
</episodes>
Le fichier XML tient compte de la période demandée, c'est à dire que si on souhaite voir les épisodes des 7 prochains jours seulement, le fichier XML retournera seulement les épisodes à venir dans les 7 prochains jours.
Malheureusement avec un nombre conséquent de série suivie. Les performances ont vite chutée. J'ai donc mis en place un système de cache tout simple afin de ne pas refaire le parsing à chaque refresh. J'ai appliqué ce système de cache à la fois pour la récupération des séries et pour les épisodes. Le temps de refresh est paramétrable, j'ai pour l'instant fixé celui-ci à :
- refresh toutes les 5 heures pour récupérer la liste des séries existantes.
- refresh toutes les 2 heures pour récupérer la liste des épisodes.
Mais on sait que des nouvelles séries n'arrivent pas tous les jours, je pourrais pousser le système de refresh à une semaine, voire deux. Pour la liste des épisodes je pense qu'un refresh toutes les semaines sera suffisant aussi. J'aimerais avoir votre avis sur ce point donc n'hésitez pas à vous exprimez en commentaire.
Le widget est donc prêt en beta : rendez-vous à cette adresse pour le tester en standalone. Vous pouvez aussi directement l'ajouter à vos Netvibes/iGoogle respectif via les boutons en dessous du widget. Pour tester le tout sous Windows Live/Vista/Mac/Opera et iPhone/iPod Touch il faudra attendre un peu. N'hésitez pas à me soumettre vos idées ! La prochaine fois je détaillerai le code javascript UWA du widget en lui-même et ça sera probablement le dernier billet pour ce widget qui devrait être terminé.
Pour moi ça marchait bien jusqu'à ce que j'ajoute The Unit en 3 série, ce qui affiche les erreurs suivantes :
Warning: simplexml_load_file() [function.simplexml-load-file]: http://jeremyselier.com/apis/getXMLEpisodes.php?show=Unit&period=7:4: parser error : Opening and ending tag mismatch: META line 4 and head in /home/jeremyse/www/apis/getEpisodeList.php on line 32
Warning: simplexml_load_file() [function.simplexml-load-file]: </head> in /home/jeremyse/www/apis/getEpisodeList.php on line 32
Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /home/jeremyse/www/apis/getEpisodeList.php on line 32
Warning: simplexml_load_file() [function.simplexml-load-file]: http://jeremyselier.com/apis/getXMLEpisodes.php?show=Unit&period=7:4: parser error : AttValue: " or ' expected in /home/jeremyse/www/apis/getEpisodeList.php on line 32
Warning: simplexml_load_file() [function.simplexml-load-file]: <table border=6 cellpadding=5 width=660> in /home/jeremyse/www/apis/getEpisodeList.php on line 32
Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /home/jeremyse/www/apis/getEpisodeList.php on line 32
4 ou 5 fois à la suite ces mêmes lignes. Dès que je retire The Unit ça remarche, dès que je remet, ça revient.
C'est corrigé pour The Unit.
Reproductible 100% (réessayé avec une seule série, puis un autre différente). Ca reset aussi en changeant les tabs de iGoogle.
En gros, c'est un bug iGoogle qui est censé être en cours de réparation... Du coup je suis coinçé pour que mon widget marche sous iGoogle... Un peu dégouté pour le coup... Vous ne pouvez donc le tester que sur Netvibes...
La liste est par ordre alphabetique, les séries qui commencent par "The" ne sont pas à la lettre T mais à la première lettre du mot suivant. Je sais pas si ça marche sur tous les navigateurs mais une fois que je clique sur le liste déroulante, je commence à taper au clavier le nom de la série et le curseur se déplace au bon endroit.
QUand j'ai rajouté The office (US) j'ai eu cette erreur :
Warning: simplexml_load_file() [function.simplexml-load-file]: http://jeremyselier.com/apis/getXMLEpisodes.php?show=OfficeUS&period=7:2: parser error : Extra content at the end of the document in /home/jeremyse/www/apis/getEpisodeList.php on line 32
Warning: simplexml_load_file() [function.simplexml-load-file]: <b>Warning</b>: fopen(http://jeremyselier.com/apis/proxy.php?proxy_url=http://e in /home/jeremyse/www/apis/getEpisodeList.php on line 32
Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /home/jeremyse/www/apis/getEpisodeList.php on line 32
Warning: Invalid argument supplied for foreach() in /home/jeremyse/www/apis/getEpisodeList.php on line 33
L'erreur reste même après un refresh du module/ de netvibes.
"Parfois quand je passe sur l'onglet contenant le widget, celui ci est géant puis se rétrécit d'un coup." ça je ni peux rien, c'est netvibes qui adapate la taille des blocs, je sais pas sur quoi il se base, le principal est qu'au final il soit à la bonne taille (ce qui est le cas non ?)
En revanche j'ai un problème d'encodage sur les dates (F�vrier), et il y a quelques bugs par rapport a la hauteur du widget, comme ça a été dit précédemment.
(Firefox 2.0.0.11, XP SP2)
PS : J'ai toujours l'erreur sur The Office.
Juste pour le suivi du beta test : comme tu peut le constater ici, il y a parfois quelques séries qui n'apparaissent pas alors qu'elles sont diffusées ( ex : scrubs, house, csi, supernatural ). Elles sont bien évidemment déjà dans mes séries.
FF 2.0.0.11
PS : j'ai un joli bug sous IE6
du coup tout le reste buggue, l'affichage ainsi que la suppression de ces séries