Ajout de robustesse pour mon extracteur de commentaires sur YouTube

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à.

Finalisation du bloc batterie pour ma station raspberry pi portative

Voici le résultat. J’ai rajouté un couvercle imprimé en 3D qui laisse un espace suffisant pour brancher le port USB et l’interrupteur. Un câble permet de le relier à une source de 5V pour le recharger. Il faudrait que je le mesure précisément, mais selon l’état des batteries qui sont tout de même usagées, l’autonomie du système devrait être au-delà de 5 heures, peut-être même probablement 10 heures. Ça reste à tester.

La dernière chose qu’il manque est un petit script sur le raspberry pi connecté à l’indicateur de batterie faible, qui permettrait d’avertir l’utilisateur d’éteindre le tout et de recharger les batteries. Mais sinon tout est fonctionnel et prêt à utiliser sur le terrain!

Fabrication d’un boîtier pour mon bloc de batteries

Afin de rendre pleinement portatif mon raspberry pi avec écran tactile, j’ai décidé de lui rajouter un bloc de batteries fait maison à partir d’une vieille batterie de mon ordinateur portable. Après l’avoir démonté et rechargé individuellement toutes les cellules, j’ai constaté qu’elles étaient toutes encore en très bon état. J’ai donc divisé les 6 cellules en deux blocs de 3, un bloc pour alimenter l’écran et un bloc pour alimenter le raspberry pi. J’utilise des PowerBoost 1000C de Adafruit, donc le courant max qu’ils peuvent donner est de 1A seulement, c’est pourquoi je sépare les alimentations.

Le programme utilisé sur OpenScad est le suivant :

ep = 2;
difference(){
cube([62+2*ep,42+2*ep,106+ep]);
translate([ep,ep,ep]) cube([62,42,106]);
translate([ep,0,80+ep]) cube([62,42+2*ep,26]);
}