Je vais bientôt faire une publication complète de ce projet dans une page à part, lorsque je serai prêt à le présenter au monde. En attendant, je vais simplement parler de l’ajout que j’ai effectué aujourd’hui. L’erreur que j’ai réglée était un problème de chargement de la page lorsque Firefox ne reconnaît pas le format vidéo. Il s’agit d’un problème avec HTML5 qui se produit avec quelques rares vidéos, mais statistiquement mon bot finit toujours par tomber dessus. YouTube affiche alors simplement une page blanche avec une boîte vidéo qui griche, impossible d’avoir accès aux autres suggestions de vidéos ou aux commentaires. Mon programme, qui fonctionne en extrayant les url des vidéos suggérées pour naviguer sur YouTube indéfiniment, cesse donc de fonctionner. Pour corriger cela, j’ai rajouté l’exception suivante :
last_urls = urls[1:len(urls)]
try:
elements = driver.find_elements_by_css_selector(« a.yt-simple-endpoint.style-scope.ytd-compact-video-renderer »)
urls = []
for element in elements:
urls.append(element.get_attribute(« href »))
except:
urls = last_urls
Ainsi, à chaque vidéo, mon programme n’extrait non plus simplement la première vidéo suggérée mais toutes les vidéos suggérées (si c’est possible). La prochaine vidéo est donc la première de la liste, à moins qu’il y ait un bug avec la page et qu’aucune vidéo recommandée n’est visible. Le programme essaie alors la deuxième vidéo de la liste précédente, en espérant qu’elle ne provoque pas elle aussi une erreur de lecture. Puisqu’il n’y a environ une dizaine d’options dans la liste, c’est statistiquement improbable qu’aucune de ces vidéos ne fonctionne. Cela rajoute donc une bonne robustesse à mon programme, qui était parfois déjà capable de survivre plus de 24 heures sans s’arrêter. Voyons voir maintenant quel record il pourra faire!
Éventuellement j’aimerais utiliser phantomJS, ça marchait l’année passée, mais maintenant YouTube bloque ce genre de navigateur, il faut que je trouve une manière détournée de l’utiliser. Pour l’instant, je privilégie la robustesse à la rapidité. Il va falloir que je pense au remplissage des mémoires tampon et vives à long terme, puisque justement, après 24 heures d’utilisation continue, l’ordi commence à rusher un peu. Peut-être au moyen de redémarrage planifiés cela pourrait bien marcher. Je n’en suis pas encore là.