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

De l'épice pour la pensée

Je pose ça là, si vous voulez récupérer toutes les musiques de musicforprogramming.net :

#!/bin/sh
# Auteur :      thuban <thuban@yeuxdelibad.net>
# licence :     MIT

# Description :
# Depends 

URL="http://musicforprogramming.net/rss.php"

DL="ftp -o-"
#DL="wget -qO-"

DLCMD="ftp"
#DLCMD="wget"

DLLIST=$($DL $URL |grep "guid" | grep -o "http://.*\.mp3")

for z in $DLLIST; do
    $DLCMD "$z"
done

exit 0

Lorsqu'on est fan d'une série, on a parfois envie d'aller regarder les derniers épisodes sur le web. Mais quelle horreur, les sites de streaming que l'on peut y trouver son insupportables :

  • Dans le pire des cas, ils nécessitent flashplayer
  • La qualité est médiocre
  • Il y a des publicités partout ! Je suis certain que ça augmente le nombre de cancers dans le monde toutes ces pubs.

On peut alors se fier au protocole bittorrent pour télécharger ses vidéos puis les regarder tranquille. Encore faut-il trouver un site pas trop mauvais qui les recense... Là aussi, on trouve des publicités parfois.
De plus, il faut être patient et attendre que le téléchargement soit terminé... Ou alors, on peut être astucieux et télécharger en priorité les premiers et derniers morceaux du fichier vidéo. De cette façon, le lecteur vidéo fonctionne, et on peut regarder le film alors qu'il est en train d'être téléchargé.

C'est sur ce principe que fonctionne dontpanic dont j'ai déjà parlé ici, et certainement webtorrent. Mais ces outils m'agacent car ils ont un tas de dépendances, et il faut en plus compter sur les moteurs de recherche de torrents...

J'ai donc eu envie de reprendre les morceaux de code qui m'intéressaient dans dontpanic pour créer un outil minimaliste me permettant de regarder mes torrents "en streaming", SANS PUB. En plus, je ne parvenais plus à compiler python-libtorrent et trouvait inutile les dépendances à sqlite. Bref, l'outil en question s'appelle torstream.

Installation
Récupérez l'archive ici.
Décompressez-là, puis lancez torstream :

wget http://git.yeuxdelibad.net/torstream.tgz
tar xvzf torstream.tgz
cd torstream
python3 torstream.py

Pour l'utiliser, vous aurez besoin des dépendances suivantes : python3-beautifulsoup4, aria2 .

Utilisation
Lorsque vous lancez torstream, il vous demande ce que vous voulez regarder. Indiquez votre recherche, il se charge de chercher sur différents moteurs :

$ python3 torstream.py
What do you want to watch ? 
> vikings vostfr
---
### Search results with alphareign
1 - Vikings S04E19 FASTSUB VOSTFR HDTV XviD-T9
    size: 366.76 MB  seeds: 482  leeches: 6
2 - Vikings.S04E17.FASTSUB.VOSTFR.HDTV.XviD-T9
    size: 367.25 MB  seeds: 468  leeches: 7
3 - Vikings.S04E18.FASTSUB.VOSTFR.HDTV.XviD-T9
    size: 367.28 MB  seeds: 381  leeches: 13
4 - Vikings.S04E15.VOSTFR.HDTV.Xvid-EXTREME
    size: 353.03 MB  seeds: 353  leeches: 10
5 - Vikings.S04E16.FASTSUB.VOSTFR.HDTV.Xvid-EXTREME
    size: 321.49 MB  seeds: 285  leeches: 11
6 - Vikings.S04E13.FASTSUB.VOSTFR.HDTV.Xvid-EXTREME
    size: 374.57 MB  seeds: 272  leeches: 8
7 - Vikings.S04E12.FASTSUB.VOSTFR.HDTV.XViD-EXTREME
    size: 371.83 MB  seeds: 243  leeches: 4
8 - Vikings.S04E14.VOSTFR.HDTV.XViD-EXTREME.www.torrent9.biz.avi
    size: 0.00 B  seeds: 238  leeches: 4
9 - [www.Cpasbien.me] Vikings.S01E01.FASTSUB.VOSTFR.HDTV.XviD-MiND
    size: 365.18 MB  seeds: 182  leeches: 6
10 - Vikings.S01E02.VOSTFR.Gillop.avi
    size: 0.00 B  seeds: 4  leeches: 1
11 - [nextorrent.net] Vikings S04 XviD VOSTFR
    size: 7.50 GB  seeds: 38  leeches: 36
12 - Vikings.S01E01.VOSTFR.Gillop.avi
    size: 0.00 B  seeds: 2  leeches: 0
What is your choice : 
(Number, Enter for more results, ctrl-c to cancel) 

Une fois que vous avez le fichier que vous voulez, entrez son numéro puis validez avec Entrée.
Le téléchargement commence alors avec aria2.


Let's watch Vikings.S04E18.FASTSUB.VOSTFR.HDTV.XviD-T9
Press Enter to play the video when you're ready
(Enter to play)  02/14 15:23:01 [NOTICE] Downloading 1 item(s)

(Enter to play)  02/14 15:23:01 [NOTICE] DHT IPv4 : En écoute sur le port UDP 6948

(Enter to play)  02/14 15:23:01 [NOTICE] IPv4 BitTorrent: listening on TCP port 6935

Lorsque la progression du téléchargement vous semble suffisante (quelques %), appuyez de nouveau sur entrée pour lancer la lecture.

Configuration

Vous pouvez choisir que lecteur vidéo sera utilisé en modifiant le fichier ~/.torstream. La configuration par défaut est :

[DEFAULT]
videoplayer = mpv


Moteurs supportés

Les moteurs de recherche suivants sont actuellements supportés. Toutes suggestions sont les bienvenues :

  • alphareign,
  • torrent9,
  • digbt,
  • piratebay,
  • p2psearch,
  • 1337x,
  • btdb,
  • kickasstorrents,
  • isohunt

.
Amusez-vous bien :)

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/

Et hop, grosse mise à jour du fail2ban pour OpenBSD : vilain.
Suite à une remarque de 22decembre concernant les Process lancés, j'ai retroussé mes manches pour essayer de maîtriser un minimum les async des dernières versions de python.
Le résultat est plus léger et facile à comprendre à mon sens.
Au passage, plusieurs expressions régulières pour protéger certains services ont été ajoutées (dovecot, erreur http 401...).

Comme toujours, les suggestions et contributions sont les bienvenues !