A la cool : Bricolage autour de youtube-dl
Salut les filles,
Bon j’ai décidé de me faire un article à la cool, je suis crevé (boulot, petit, grève dans les transports), soyez indulgent svp.
J’ai besoin de vous en mode « on tape la discut ». J’ai Madame qui devient de plus en plus demandeuse de séries/émissions télé. Tout le monde connait le replay télé et à peu près tout le monde connait youtube-dl
. Pour rappel youtube-dl gère bien plus que YouTube et il y a une interface graphique (youtube-dl-gui) si ça vous intéresse.
J’ai aussi mon beau-père qui sur ma recommandation s’est mis à Captvty car il consomme beaucoup de replay également. Beau papa est actuellement sur Windows mais bidouille de l’Arduino et s’intèresse beaucoup à GNU/Linux quand je lui en parle. Il va y venir hé hé hé.
Mon idée était la suivante :
1/ Créer un bookmarklet qui copie l’URL de la page où on se trouve (YouTube, francetv pluzz, ARTE+7, etc.) et l’envoie dans un fichier texte sur mon server@home
2/ Coller ce bookmarklet sur Firefox de femme, beau papa et moi
3/ Petit script youtube-dl et cron qui téléchargent les vidéos durant la nuit sur mon server@home
4/ Je ramène ensuite une clé USB à beau papa ou mieux je partage le dossier de vidéos grâce à Syncthing avec lui
5/ Je deviens le gendre parfait, il me fait un chèque pour acheter une île, je mv gentilbébédamour vendredi
, je vis d’amour et d’eau fraiche au soleil avec ma petite famille
Le plan était parfait. Madame et beau papa n’ont qu’un clic à faire afin que je récupère l’URL de la vidéo qu’ils désirent et moi derrière j’automatise le truc sur mon server@home avec youtube-dl. Je pourrais aller plus loin car youtube-dl a le bon goût de laisser la possibilité de spécifier un downloader externe : aria2c, axel, curl, httpie, wget. Bref une fois ce bookmarklet en place je peux tout faire avec du curl, wget, youtube-dl, aria2 derrière.
Mais le plan n’est pas si parfait que ça puisque j’échoue à la première étape lol. Pour rappel un bookmarklet c’est comme un favori mais ça exécute du code (en général JavaScript sur les navigateurs). La page de Mozilla sur le sujet me semble un bon point de départ pour comprendre ce que c’est.
Alors maintenant je vais peut-être dire des bêtises mais à ce que j’ai compris avec du JavaScript on ne peut pas écrire dans un fichier local. Je me suis tourné vers PHP évidemment mais je galère (et j’ai eu peu de temps hier), je veux bien un coup de main de mes généreux lecteurs.
A l’heure actuelle, j’arrive à écrire dans un fichier sur le serveur mais je ne sais pas comment m’y prendre pour lui envoyer une URL et qu’il me l’écrive dans le fichier texte. Le code PHP ci-dessous est placé sur le serveur.
<?php $text = 'C'est mon texte'; $filename = 'Liste.txt'; $fp = fopen($filename, 'w'); fwrite($fp, $text); fclose($fp); ?>
La solution de repli c’est un fichier texte éditable comme ici (voir la page d’accueil très chouette), c’est un peu moins pratique mais je pense que ça sera quand-même utilisé par Madame et beau papa.
A titre d’info, voici les options les plus intéressantes de youtube-dl (on peut les mettre dans le fichier de configuration ~/.config/youtube-dl/config
et pour rappel youtube-dl prend par défaut la vidéo de meilleure qualité).
-U, --update Update this program to latest version. Make sure that you have sufficient permissions (run with sudo if needed) -r, --rate-limit LIMIT Maximum download rate in bytes per second (e.g. 50K or 4.2M) -a, --batch-file FILE File containing URLs to download ('-' for stdin) -F, --list-formats List all available formats of requested videos -f, --format FORMAT Video format code, see the "FORMAT SELECTION" for all the info -o, --output "/home/babar/Vidéos/%(title)s.%(ext)s"
Merci de votre aide et de vos bonnes idées ! Évidemment si vous avez mieux je prends !
Déjà 20 avis pertinents dans A la cool : Bricolage autour de youtube-dl
Les commentaires sont fermés.
Sinon, c’est PHP côté serveur, et JavaScript côté client. Rien de plus simple alors : transformer ton bout de PHP en « micro » WebService qui va prendre une requête POST qui contient l’URL et la coller dans un fichier pour que YouTube-dl fasse son taf.
Une connerie du genre (attention, zéro sécurité) :
Maintenant, attention, je fais ça au réveil, sans petit déjeuner, j’écris peut-être quelques grosses conneries. En tout cas, ça demande d’écouter en mode Web côté serveur, et d’avoir une requête POST à faire avec le bookmarklet côté client. Un truc pourri du style (piqué sur un site quelconque) :
Attention, tout ça toujours au réveil sans petit déjeuner, et surtout, pas du tout sûr de la partie JavaScript (mais c’est quelque chose qui m’intéresse
Je viens de rajouter dans l’article que le code PHP était côté serveur.
Tcho !
Pour info le bookmarklet de Shaarli (là il envoie l’URL et le titre de la page) :
Côté serveur c’est du PHP sans base de données : http://sebsauvage.net/wiki/doku.php?id=php:shaarli
Tcho !
Le temps de configurer un hôte virtuel et tester, je te propose ça mais en GET pour le bookmakrlet:
Tu passes donc une clé de sécurité à lire côté serveur pour autoriser ou non l’ajout de l’url passée en paramètre dans ton fichier texte.
Côté serveur :
$fp = fopen($filename, 'w');
?fwrite($fp, $url);
Autre chose un vieux [object Window] s’affiche alors sur la page, on peut faire plus propre ? Dernière chose on peut envoyer la requête sans ouvrir une nouvelle page (je suppose évidemment) ?
Merci !!
L’url est automatiquement rajoutée à ton fichier sur
une nouvelle ligne.J’ai écrit une grosse connerie (voir fwrite).
Tu peux utiliser :
Voir http://php.net/manual/fr/function.fopen.php
Bookmarklet à mettre en marque-page sur Firefox (fonctionne aussi pour Chrome/Chromium).
index.php dans le dossier downloadlist sur le serveur.
Contenu du bootmarklet :
Donc sur une seule ligne, pour reprendre ton idée Seboss666, j’ai également utiliser une requête en ajax dont le code est déporté dans youtube-dl.js :
J’avoue, c’est sale pour le message d’alerte, je n’attends pas le retour de la requête en ajax.
Le lien est bien ajouté, il y a un retour vers l’utilisateur et plus de nouvel onglet ouvert pour rien.
Bon après, j’ai d’autres trucs à tester, donc de mon côté, tant que j’ai SSH pour ajouter les URLs à la liste…
Avec Laurent ça fonctionne hi hi hi. Je vais lui demander de faire un article
à cette feignasse.Tcho !