Quel avantage par rapport aux sites proposant ce service, type Keevid ?
- Eiffel V s'exécute en local.
- Eiffel V est libre (licence CeCILL).
- Eiffel V gère les vidéos incluses sur des sites tiers.
- Eiffel V est localisable.
- Eiffel V est conçu de manière à ce que vous puissiez ajouter les sites dont vous avez besoin.
- Eiffel V est en Python.
- Je suis gentil.
Quel inconvénient ?
- Eiffel V ne fonctionne pas sur Windows.
- Eiffel V n'est pas inclus dans le navigateur.
- Eiffel V a quelques dépendances : wxPython et BeautifulSoup.
- Que ça ?
Téléchargement et installation
Téléchargez l'archive, décompressez, lancez eiffel.py, et ça devrait y être...
Que fait-il vraiment ?
Il gère Youtube, Dailymotion, Myspace, Metacafe, Google Vidéos, même avec un lecteur inclus sur une autre page, et les lecteurs FLV basiques genre celui de Neolao. Il repère les vidéos, vous demande lesquelles souhaitez-vous télécharger, puis s'en occupe. Si vous le lancez en ligne de commande avec une URL en argument, il démarre comme un grand. Si vous avez une idée de fonctionnalité supplémentaire, je suis preneur...
Ajouter un site de vidéos
- Créez une classe avec pour nom la première partie du domaine du site, avec une majuscule, en la dérivant de la classe
Site. Par exemple avec youtube.com,class Youtube(Site). - Créez une méthode
_do, à laquelle sera passé l'élémentdom, un objet BeautifulSoup. Faîtes-en ce que vous voulez pour obtenir l'URL du fichier FLV et son titre. Vous avez éventuellement accès àself.urlqui est l'adresse de la page. - S'il n'y a pas de vidéo (vidéo rejetée, supprimée, etc.) sur la page, créez un évènement vide :
self.evt = ParsingIsDone(videos = []). Sinon, créez celui-ci :self.evt = ParsingIsDone(videos = [Video(url_flv, titre)]). Puis ajoutez ces lignes à la fin de la méthode_do:
if self.send_evt:
wx.PostEvent(prog.frame, self.evt)
- Éventuellement, le site peut permettre à ses utilisateurs d'inclure son lecteur. Si vous désirez gérer ce cas, vous devez créer une méthode
_in, à laquelle sera passé l'objet BeautifulSoup représentant l'<embed>ou l'<object>du lecteurflash_object, et la liste des vidéos déjà traitéesdone_urls. En effet, certains sites utilisent et embed et object, il faut ainsi éviter les doublons. - Tout d'abord, trouvez la véritable adresse de la vidéo, ou n'importe quel élément qui l'identifie à coup sûr et qui nécessite le moins de traitement. Vérifiez ensuite s'il se trouve dans
done_urls:
if url_trouvee in done_urls:
self.evt = ParsingIsDone(videos = [])
return
Puis ajoutez-le :
done_urls.append(url_trouvee)
- Enfin, trouvez l'adresse du fichier FLV et le titre de la vidéo, puis créez l'évènement :
self.evt = ParsingIsDone(videos = [Video(url_flv, title)]). Attention, pas besoin de l'envoyer avec wx.PostEvent cette fois-ci. - Vous devez ensuite spécifier un élément qui sera caractéristique de votre site d'inclusion de vidéos, typiquement l'URL du lecteur Flash, que Eiffel V ira chercher dans le contenu des <embed> et des <object> de la page, comme http://lads.myspace.com/videos/vplayer.swf pour Myspace vids. Faîtes le en donnant à la classe un attribut
embed_url, par exemple :Vids_myspace.embed_url = 'http://lads.myspace.com/videos/vplayer.swf' - Ajoutez votre nouvelle classe à la variable SITES.
Regardez les classes déjà présentes si vous avez besoin d'exemples, et envoyez-moi les vôtres (baptiste-at-aozeo_dot_com), que j'ajouterai à la prochaine version de Eiffel V :-) Merci pour les retours...


