Vous connaissez Popcorn Time ? si ça ne vous dit rien, c’est que vous viviez dans une grotte ces derniers mois !

Un peu d’histoire donc…

Sorti en février 2014, Popcorn Time est un logiciel de lecture de vidéos en ligne sur le principe du streaming via le protocole BitTorrent. Vous allez me dire, à juste titre : « Et alors, c’est quoi la nouveauté ? ».

Logo officiel de Popcorn Time

Je vois trois innovations/raisons qui ont fait son succès :

  • le principe peu développé du streaming via BitTorrent
  • une interface utilisateur en HTML5 de toute beauté, simple et intuitive
  • un catalogue fourni de films et de séries en qualité HD

Ce succès n’a évidemment pas plu aux voleurs acteurs de l’industrie cinématographique d’Hollywood, et devant la pression, les concepteurs ont décidé d’arrêter le projet bien que celui-ci n’ait à priori rien d’illégal.

Popcorn Time étant un logiciel libre, des petits malins se sont emparés du code pour en faire d’autres versions avec plus ou moins de succès. Parmi les plus connues, on peut citer popcorntime et time4popcorn.

Comme l’original, ces logiciels sont régulièrement la cible des autorités judiciaires et peuvent donc fermer à tout moment, mais, tel un phoenix, reviennent à la vie quelques heures plus tard avec un nouveau nom de domaine.

popcorn-time_0

Motivations

Pourquoi faire soi-même son Popcorn Time ?

  • les versions « officielles » peuvent disparaître à tout moment
  • le contrôle absolu du programme
  • création d’un serveur multimédia léger, sur un Raspberry Pi par exemple (c’est mon cas)
  • se passer de solutions propriétaires comme le Chromecast de Google ou Airplay d’Apple
  • le goût du challenge (vous êtes là pour ça non !?)

A la fin de ce tutoriel, vous aurez en main une application ayant les fonctionnalités suivantes :

  • recherche d’un film ou d’un épisode d’une série
  • lecture du média cible
  • arrêt de la lecture

Cette application web sera contrôlable à distance, grâce à une adresse HTTP, sur tous vos périphériques (téléphone, tablette, ordinateur,…).

fwph8o

Création de l’application

Le seul prérequis de ce tutoriel est de posséder un ordinateur ou un serveur ayant un système Unix (Debian, Ubuntu, OS X,…).

Sur le principe de la rétroingénierie, nous allons reproduire les fonctionnalités utilisées par Popcorn Time de manière plus « basique » :

  • un système de streaming de torrent
  • une interface web en HTML5

Streaming d’un torrent, Peerflix

Le logiciel Popcorn Time est basé sur Peerflix qui permet de streamer un flux provenant d’un torrent. Grâce à Peerflix, ce flux est donc visible dans n’importe quel lecteur de vidéo (VLC, OMX, MPlayer,…) tout en étant téléchargé.

Peerflix est écrit en langage NodeJS, le Javascript côté serveurs. Si ce n’est pas déjà fait, installez NodeJS via la commande (dans un terminal) :
sudo apt-get install nodejs

Il faut évidemment remplacer la commande « apt-get » par celle correspondant au gestionnaire de paquets de votre distribution.

Puis, installez Peerflix :
sudo npm install -g peerflix

Pour lancer un torrent, il suffit de taper la commande suivante :
peerflix "magnet/torrent link" --vlc

Après une mise en mémoire tampon qui peut prendre quelques secondes, VLC se lance automatiquement et démarre le média spécifié dans le torrent. Si vous êtes sur le Raspberry, il peut être judicieux de lancer OMXPlayer qui est nativement plus optimisé que VLC. Pour cela, tapez la commande :
sudo peerflix "magnet/torrent link" --omx

Interface web, Python et Flask

Nous avons donc une commande qui nous permet de lancer la lecture d’un flux vidéo provenant d’un torrent. Il faut maintenant créer une interface web permettant de faciliter la recherche de vidéos et de lancer automatiquement Peerflix sans passer par le terminal.

Pour réaliser cette interface, nous allons utiliser un micro-framework web Python appelé Flask. Pour l’installer, rien de plus simple :
sudo pip install Flask requests
Si vous ne disposez pas de la commande pip, veuillez suivre les instructions ici.

Le squelette (très simple) de notre application est le suivant :

HomeStream/
-> index.py
-> templates/
-> index.html

Pour commencer, créez les dossiers « HomeStream » et « templates » (vides) présents dans ce squelette. Récupérez ensuite les fichiers index.py et index.html, puis les placer dans les bons dossiers.

Une petite explication s’impose !

Fichier index.html

Ce fichier contient le code HTML/CSS/JQuery de notre interface. Il n’y a rien de sorcier, l’utilisateur peut trouver un film ou une série via une balise select et un champ de recherche.

Le média en cours de lecture peut être arrêté en cliquant sur le bouton « stop » présent à droite du menu.

Fichier index.py

Ce fichier Python est le coeur de notre application et contient trois fonctions : index, play, stop.

La fonction index récupère les paramètres donnés par l’utilisateur via l’interface web :

  • search : requête de recherche
  • provider : type de média recherché (film, série, liste des épisodes)

Elle renvoie la liste des médias trouvés selon les paramètres spécifiés ci-dessus. Cette liste est ensuite affichée dans l’interface web. Cette fonction interroge deux bases de données, utilisées par Popcorn Time, pour satisfaire la requête :

  • YIFI via une API, pour les films et les sous titres
  • EZTV pour les séries

La fonction play récupère un lien vers un torrent (ou un magnet) pour ensuite lancer Peerflix afin de lire le flux vidéo cible.

La fonction stop arrête le streaming et donc la lecture du film en cours.

Lancement

Toujours dans un terminal, placez vous dans le dossier HomeStream, puis tapez la commande suivante :
sudo python index.py

Deux lignes s’affichent dans le terminal, indiquant le bon démarrage de l’application :

* Running on http://0.0.0.0:8001/
* Restarting with reloader

Votre application web est maintenant accessible via l’adresse http://localhost:8001 (si vous êtes en local), ou http://adresse_ip_du_serveur:8001 si vous y accédez à distance.

Sécurité (personnelle)

Je vous rappelle que le téléchargement, le partage et le visionnage d’un média « piraté » est puni par la loi. Si vous ne voulez pas recevoir une petite lettre d’Hadopi, je vous conseille de prendre un Serveur Privé Virtuel (VPN) pour quelques euros par mois 🙂

Vous trouverez facilement des dizaines de spécialistes du VPN en faisant une petite recherche sur Google, je ne m’étendrai donc pas sur le sujet.

Rendu

Quelques captures d’écran de l’application…

Page d’accueil

Page d'accueil

Recherche d’un film

Recherche d'un film

Recherche d’une série

Capture d’écran 2014-10-27 à 18.18.48

Liste des épisodes d’une série

Capture d’écran 2014-10-27 à 18.19.01

Bon visionnage 😉

Forum_Lien

Anth0kuto

Anth0kuto

gérant chez Byprog
Administrateur

Freelance Full-Stack Développeur, plus d'infos sur byprog.com !

Fervent linuxien depuis plus de 10 ans, je suis passionné par l'univers de l'open source et par la programmation en particulier. Ma mission si vous l'acceptez: vous emporter dans d'autres contrées!
Anth0kuto
Raspberry Pi : Ajouter un écran de démarrage
Jolla : Raccourci carte SD dans un OS