Du libre, du code, des idées, du mélange d’ArraKISS…

De l’épice pour la pensée

Un peu découragé par la fermeture de btdigg.org et les changements effectués sur torrentproject qui bloque les scripts et un manque de temps, j'ai délaissé dontpanic pour le confier aux bons soins du collectif 3hg.
Pour rappel, dontpanic permet de regarder des vidéos en streaming pendant qu'elles sont récupérées via torrent.

Suite à un gentil message de dyp, j'ai trouvé quelques minutes pour m'y replonger. De plus, j'ai trouvé par change toute une série de moteurs de recherche de torrents basés sur l'index DHT.

Par ailleurs, l'API qui permettait de récupérer les affiches des films et les listes d'épisode va mal et ne répond plus. Cela rendait dontpanic très lent et désagréable à utiliser. Je me suis alors aperçu que j'avais perdu de vue l'objectif de départ : ne pas dépendre d'une API. J'ai donc retiré tout ce qui utilisait cette API, quitte à rendre dontpanic un peu moins sexy.

Voilà donc les changements apportés à dontpanic 2.0 :

  • Ajout du moteur alphareign.
  • Ajout du moteur btdb.
  • Ajout du moteur digbt.
  • Ajout du moteur p2psearch.
  • Retrait du moteur torrentsearch qui bloque les scripts et a fermé son API.
  • Mise à jour du moteur torrent9 à sa nouvelle url.
  • Retrait du support de python 2, vive python 3 !
  • Il n'y a plus besoin de la dépendance python-requests.7
  • Suppression de OMDBAPI
  • Meilleure gestion d'erreur si un site ne répond pas.

Vous pouvez trouver la dernière archive ici : http://3hg.toile-libre.org/dontpanic/download.html

ps : je découvre tout juste un outil semblable à dontpanic, peut-être mieux : https://touchandgo.readthedocs.io/en/master/

Tristes nouvelles autour du torrent dernièrement. L'excellent btdigg ne retourne plus de résultats, torrentz est fermé, torrentproject a fermé son API et utilise une protection le rendant impossible à utiliser hors d'un navigateur web.

Forcément, dontpanic qui a besoin d'un moteur de recherche de torrent se sent bien seul.
Étant seul à le maintenir, ce n'est pas facile à maintenir, surtout dans ces cas là. Heureusement, le collectif 3hg a repris le projet dontpanic. Merci!

Au passage, on peut noter les améliorations suivantes :

  • Retrait des moteurs morts,
  • Mise à jour des moteurs piratebay et kickasstorrent,
  • Ajout du moteur isohunt,
  • Légères améliorations dans le code.

Ce changement d'équipe implique que dontpanic n'est plus hébergé sur mon site et n'est plus empaqueté. Ça n'empêche pas d'utiliser le code source comme avant et lancer dontpanic en ligne de commande :

./dontpanic

Si quiconque est intéressé pour en faire un paquet, un port, il ne faut surtout pas hésiter à se servir des sources.

De quoi streamer du torrent sans retenue.

Ces derniers jours, j'ai été obligé de coder en javascript. C'est une première pour moi. Jusque là, j'utilisais sans vergogne des bibliothèques qui requéraient jquery. Tout marchait bien, j'étais content.
Cependant, je dois héberger un site qui avait besoin de jquery. Soit je le mettais sur le serveur, ou bien j'utilisais les CDN aux dépens de la vie privée des visiteurs. Vous vous doutez que je n'ai pas choisi la seconde solution. La première était possible, mais c'est quand même une charge supplémentaire sur le serveur. Qui plus est, c'est une charge inutile, puisque tout, oui tout pouvait être réalisé en javascript simple.

J'ai pu remarquer au passage que les bibliothèques utilisant jquery ne faisaient pas tellement attention à l'optimisation du code, et appelaient une même fonction un nombre incalculable de fois alors qu'il vaut mieux attendre que le visiteur ait finit de faire défiler la page avant de mettre à jour l'affichage.

J'avais donc ce code jquery, qui affichait dans un

le titre du paragraphe actuellement affiché (h1, h2, h3...) :
var timeout;
	if (timeout) {
		clearTimeout(timeout);
	}
	timeout = setTimeout(function() {
		$(window).on('scroll', function() {
			$('body').find(':header').each(function(){
				if($(window).scrollTop() >= $(this).offset().top) {
					var id = $(this).text();
				}
				$(".isread").text(id);
			});
		});
	}, 50);



Que j'ai pu modifier ainsi en javascript pur :

	var timeout_title;

	var headers = document.querySelectorAll("h1, h2, h3, h4, h5, h6");

	window.addEventListener('scroll', function(){
		clearTimeout(timeout_title);
		timeout_title = setTimeout(function(){
			for (var i =0; i < headers.length; i++) {
				if ( document.body.scrollTop + 50 >= headers[i].offsetTop ) {
					document.getElementsByClassName("isread")[0].innerHTML =
						headers[i].innerHTML;
				}
			}
		}, 100);
	});


Le nombre de lignes est quasiment le même, et c'est plus rapide!

J'ai donc creusé un peu plus cette histoire, pour en conclure qu'il vaut mieux faire du javascript simple que du jquery (du moins pour mes besoins). Il existe forcément des équivalents, puisque jquery est lui-même du javascript.

C'est pourquoi, suite à un gentil rapport de bug d'arpinux concernant dontpanic et un défaut dans les css, j'en ai profité pour retirer les appels à jquery dans le code de dontpanic.

J'avais besoin de récupérer des données au format JSON :
$.getJSON("/_getinfos/{{movie_name}}/{{index}}",
                 function(data) {
                     $("#status").html(data.status);
                     $("#playlink").html(data.playlink);
                     $("#subtitles").html(data.subtitles);
                     $("#stop").html(data.stop);
                });



Qui donne sans jquery :
 var request = new XMLHttpRequest();
             request.open('GET', '/_getinfos/{{movie_name}}/{{index}}', true);
 
             request.onload = function() {
                 if (request.status >= 200 && request.status < 400) {
                     data = JSON.parse(request.responseText);
 					document.getElementById("status").innerHTML = data.status;
 					document.getElementById("playlink").innerHTML = data.playlink;
 					document.getElementById("subtitles").innerHTML = data.subtitles;
 					document.getElementById("stop").innerHTML = data.stop;
                 }
             }
            request.send();


C'est un chouilla plus long, et peut certainement être optimisé (vu que ce n'est pas mon truc le js). Cependant, ça ne méritait pas de charger jquery, au risque de ne pas utiliser les derniers correctifs de sécurité.

C'est plus propre, on se sent mieux :)

Depuis le temps, je me replonge dans le code de dontpanic bien qu'il n'y ait plus grand chose à y faire en réalité :)

Il passe donc en version 1.3, avec les changements suivants :

- Correction du bug pour recherche sur tous les moteurs même avec traduction activée,
- Correction d'un bug lors du téléchargement des sous-titres,
- Le même dossier temporaire est utilisé entre deux sessions. Cela évite le surpeuplement de /tmp,
- Dontpanic affiche un petit message s'il peut être mis à jour,
- L'apparence légèrement améliorée.

Je vous invite donc à mettre à jour dontpanic en téléchargeant la dernière version.

Si vous avez ajouté mon dépôt debian, alors un simple "apt update && apt upgrade" sera suffisant.

N'hésitez pas à commenter si vous avez des suggestions à faire ;)

Je suis ravi de vous annoncer la sortie de dontpanic en version 1.2. Cette mouture apporte une nouveauté qui me tenait à coeur point de vue confidentialité.

Voici donc la liste des changements :

  • L'interface a été retravaillée par Tankypon et est désormais compatible avec les nouveaux tags html5, et il faut le dire, plus agréable,
  • Le moteur de recherche kickasstorrent est désormais disponible,
  • Il est désormais possible de réaliser une recherche sur tous les moteurs confondus,
  • On peut enregistrer le moteur de recherche préféré, au lieu devoir le préciser à chaque fois,
  • Il est désormais possible d'utiliser un proxy afin de masquer son adresse IP. C'était la dernière étape pour être anonyme, puisque les échanges sont déjà chiffrés par défaut. Les proxys disponibles sont SOCKS, HTTP et I2P. Voilà de quoi se rassurer à l'utilisation de dontpanic, même si le fonctionnement précédent était déjà robuste,
  • Allociné n'est plus utilisé pour les recherches et suggestions. L'absence d'API fiable et l'incompatibilité avec IMDB devenait pesante,
  • Diverses factorisations du code, plus facile à maintenir.

Puisqu'il y a maintenant un site pour dontpanic, je vous renvoie vers la page de téléchargement pour tester la nouvelle version.

Amusez-vous bien!