You-Get : un téléchargeur simple pour récupérer le Web
(github.com/soimort)- You-Get est un petit utilitaire en ligne de commande pour télécharger depuis le Web des contenus multimédias comme des vidéos, de l’audio et des images, à utiliser lorsqu’il n’existe pas d’autre méthode simple
- Il permet de télécharger des vidéos, images et fichiers audio depuis de nombreux sites comme YouTube, Youku, niconico, Tumblr, SoundCloud, Instagram, bilibili ou TikTok, ou de streamer des vidéos en ligne vers un lecteur multimédia
--infopermet de consulter les qualités et formats disponibles, et--itagde les sélectionner, mais la sélection du format n’est généralement pas implémentée sur la plupart des sites pris en charge ; par défaut, la meilleure qualité est utilisée- L’installation est possible via
pip, téléchargement ou clonage depuis GitHub, Homebrew,pkgde FreeBSD, Flox, etc. Les dépendances recommandées sont Python 3.7.4 ou ultérieur, FFmpeg 1.0 ou ultérieur, et RTMPDump en option - Il propose le téléchargement direct par URL, le scraping de pages Web, le téléchargement basé sur la recherche Google Videos, la pause et reprise, les proxys, le chargement de cookies, ainsi que la sortie des URL extraites ou en JSON, mais certaines fonctions sont expérimentales ou pas encore stabilisées
Ce que fait You-Get
- You-Get est un petit utilitaire en ligne de commande qui télécharge des contenus multimédias depuis le Web
- Les contenus ciblés sont les vidéos, l’audio et les images
- Il est destiné aux cas où il n’existe pas d’autre méthode simple de téléchargement sur le Web
- Les raisons d’utilisation mises en avant incluent le téléchargement pour un usage personnel, la reprise de contrôle sur des vidéos en ligne dont l’enregistrement est bloqué, le contournement de technologies fermées ou de JavaScript/Flash propriétaires, ainsi qu’une orientation culture hacker et logiciel libre
- Ses principales fonctions sont les suivantes
- Téléchargement de vidéos et d’audio depuis des sites populaires comme YouTube, Youku et Niconico
- Streaming de vidéos en ligne dans un lecteur multimédia sans passer par un navigateur Web
- Scraping de pages Web pour télécharger des images d’intérêt
- Téléchargement de contenus non HTML arbitraires, comme des fichiers binaires
Installation et environnement d’exécution
- Les dépendances recommandées sont Python 3.7.4 ou ultérieur, FFmpeg 1.0 ou ultérieur, et RTMPDump en option
- Selon une annonce du 30 mai 2022, la prise en charge de Python 3.5, 3.6 et 3.7 finira par être abandonnée
- Plusieurs méthodes d’installation sont disponibles
- Depuis PyPI avec
pip install you-get - Pour les utilisateurs de Zsh, avec Antigen :
antigen bundle soimort/you-get - Téléchargement de la branche stable
masterou de la branchedevelopsur GitHub git clone git://github.com/soimort/you-get.git, recommandé aux développeurs- Sur macOS :
brew install you-get - Sur FreeBSD :
pkg install you-get - Sur Mac, Linux et Windows WSL :
flox install you-get
- Depuis PyPI avec
- Les définitions d’autocomplétion shell pour Bash, Fish et Zsh se trouvent dans
contrib/completion - La mise à niveau peut se faire, selon le mode d’installation, avec
pip install --upgrade you-get, en téléchargeant la dernière release, ou en réinstallant de force la branchedevelop
Flux de téléchargement de base
- Pour télécharger une vidéo, on peut d’abord vérifier les qualités et formats disponibles avec
you-get -i URLou--info- La sortie inclut le site, le titre, les flux, le conteneur, la qualité, la taille et des exemples de
--itagà utiliser pour le téléchargement - Le téléchargement par défaut utilise le premier élément de la liste
- La sortie inclut le site, le titre, les flux, le conteneur, la qualité, la taille et des exemples de
- Pour un autre format, il faut utiliser la valeur
--itagindiquée dans la sortie- Par exemple, pour la vidéo YouTube
Me at the zoo,--itag=18permet de sélectionner le mp4
- Par exemple, pour la vidéo YouTube
- Si une vidéo YouTube dispose de sous-titres, ils sont téléchargés avec le fichier vidéo au format de sous-titres SubRip
- La sélection du format n’est pas encore implémentée comme fonction générale sur la plupart des sites pris en charge
- Dans ce cas, le format téléchargé par défaut est celui de la meilleure qualité
- FFmpeg est nécessaire pour télécharger et fusionner les vidéos streamées en plusieurs fragments, ainsi que pour les vidéos YouTube haute résolution en 1080p et au-delà
- Pour éviter la fusion des fragments après le téléchargement, utilisez
--no-mergeou-n
- Pour éviter la fusion des fragments après le téléchargement, utilisez
Téléchargement par URL, page Web et recherche
- Si l’URL exacte de la ressource est connue, elle peut être téléchargée directement avec
you-get URL- Par exemple, avec l’URL d’une image JPEG, l’outil affiche le site, le titre, le type et la taille, puis enregistre le fichier
- Si l’on fournit l’URL d’une page Web plutôt que l’URL exacte d’une ressource, l’outil tente de scraper la page pour y trouver des éléments d’intérêt
- Cette fonction est expérimentale et n’est pas parfaite
- Elle fonctionne le mieux pour scraper de grandes images sur des sites populaires comme Tumblr et Blogger
- Il n’existe pas de motif universel applicable à tous les sites Internet
- Si l’argument fourni n’est pas une URL, l’outil recherche sur Google Videos et télécharge la vidéo la plus pertinente
- Le résultat peut ne pas être exactement celui voulu, mais il est présenté comme ayant de fortes chances d’être très plausible
Contrôle du téléchargement et options d’exécution
- Un téléchargement peut être interrompu avec
Ctrl+C, ce qui laisse un fichier temporaire.downloaddans le répertoire de sortie- En relançant la même commande avec les mêmes arguments, le téléchargement reprend depuis la dernière session
- Si un fichier complet sans extension temporaire existe déjà, le téléchargement est ignoré
--forceou-fforce un nouveau téléchargement et écrase les fichiers existants ou temporaires portant le même nom
--output-dirou-opermet de préciser le chemin d’enregistrement, et--output-filenameou-Ole nom du fichier- C’est utile lorsque le titre vidéo par défaut contient des caractères spéciaux incompatibles avec le shell, le système d’exploitation ou le système de fichiers actuels
- C’est aussi pratique dans des scripts de téléchargement par lots pour enregistrer dans un dossier et sous un nom définis
- Un proxy HTTP peut être indiqué avec
--http-proxyou-x- Par défaut, le réglage de proxy système via la variable d’environnement
http_proxyest appliqué - Pour désactiver le proxy, utilisez
--no-proxy - Sur certains sites comme Youku,
--extractor-proxyou-ypeut être utilisé pour extraire des informations de vidéos accessibles uniquement depuis la Chine continentale
- Par défaut, le réglage de proxy système via la variable d’environnement
--playerou-ptransmet la vidéo à un lecteur multimédia commempvouvlcau lieu de la télécharger- En spécifiant un navigateur comme lecteur, il est possible de regarder la vidéo dans le navigateur sans publicité ni section de commentaires
- Cela peut aussi servir à lancer un autre gestionnaire de téléchargement, même si l’intégration peut ne pas être idéale
Authentification, données extraites et sites pris en charge
- Pour les contenus nécessitant une connexion à un compte, comme des vidéos non publiques, il faut transmettre les cookies du navigateur avec
--cookiesou-c- Les formats de cookies actuellement pris en charge sont Mozilla
cookies.sqliteet Netscapecookies.txt
- Les formats de cookies actuellement pris en charge sont Mozilla
--urlou-uaffiche la liste des URL de ressources téléchargeables extraites de la page--jsonaffiche un résumé des données extraites au format JSON- Cette fonction n’est pas encore stabilisée, et le schéma JSON pourrait subir des changements incompatibles à l’avenir
- La liste des sites pris en charge inclut YouTube, X(Twitter), VK, Vimeo, Tumblr, SoundCloud, Pinterest, Internet Archive, Instagram, Facebook, Dailymotion, Bandcamp, niconico, bilibili, Youku, Naver, TikTok, Zhihu, etc.
- La prise en charge des vidéos, images et fichiers audio varie selon les sites
- Pour les sites absents de la liste, un extracteur générique recherche dans la page les ressources d’intérêt et les télécharge
Signalement de problèmes et licence
- Lorsqu’il est impossible de télécharger le contenu souhaité, consultez d’abord les Known Bugs
- Avant de signaler un nouveau problème ou de contribuer, il faut lire les consignes de contribution
- Pour les questions rapides, le canal Gitter #soimort/you-get est disponible
- Le logiciel est distribué sous MIT license
- Le logiciel est fourni « tel quel », sans garantie
- L’auteur n’est pas responsable des usages portant atteinte au droit d’auteur ou poursuivant d’autres objectifs illégaux
- Le dépôt ne fournit que le code ; la manière de l’utiliser relève du choix de l’utilisateur
1 commentaires
Avis sur Hacker News
Pendant un temps, Internet coûtait cher et la bande passante était limitée, mais j’aimais écouter de la musique et des cours sur YouTube. À un moment, j’ai compris que ne récupérer que le flux audio permettait de réduire de 90 % le coût en bande passante.
youtube-dletyt-dlpavaient un flag-Gqui affichait l’URL du format/de la qualité demandés ; sur ordinateur, j’obtenais l’URL en ligne de commande et je la collais dans VLC.Sur téléphone, au début, j’utilisais un contournement compliqué : je téléchargeais d’abord le fichier sur un VPS via SSH, puis je le retéléchargeais sur le téléphone. Plus tard, j’ai découvert que le navigateur du téléphone pouvait lire l’URL directement, et j’ai donc créé un frontend PHP pour
youtube-dl -G -f bestaudio {url}.Il n’est plus en ligne aujourd’hui et j’ai perdu le code, mais c’était essentiellement une ligne.
you-getsemble aussi prendre en charge le même usage avec--url/-u, donc je voulais signaler à quel point cette fonctionnalité est utile.En lisant écran éteint, on économise aussi 80 % de batterie. YouTube le sait aussi, et c’est probablement pour cela qu’ils ont fait de la lecture en arrière-plan, quand on ne récupère que le flux audio, une fonctionnalité payante.
youtube-dlne semble plus très bien fonctionner, et j’ai dû utiliser le fork yt-dlp. Changer de projet comme ça est toujours inquiétant, mais au moins il semble assez largement utilisé.node-redun bot Telegram qui traite les liens YouTube qu’on lui partage.Les liens sont envoyés dans une FIFO, puis un petit daemon les télécharge séquentiellement et les enregistre dans un dossier incoming dédié. Le bot peut récupérer uniquement l’audio ou la vidéo complète, mais pour l’ID Telegram de ma mère, je l’ai configuré pour ne récupérer que l’audio.
Ce dossier est surveillé par Jellyfin, ce qui lui permet de télécharger ou d’écouter directement. En deux ans, elle a récupéré plus de 1 To de livres audio et elle en est ravie.
Code du daemon : https://gist.github.com/entropie/d265e94136b9777cc6b3190189b...
Les vidéos en 144p ont quelque chose d’étrangement paisible et confortable. On n’est pas distrait par des couleurs éclatantes ou des détails complexes, on peut simplement se concentrer sur l’écoute.
Je m’en sers surtout pour lire des vidéos réservées aux membres qui ne se lancent pas en arrière-plan même avec YouTube Premium. À chaque mise à jour d’iOS, je prie pour qu’ils ne corrigent pas ce « glitch ».
Ce projet semble ne pas vouloir qu’on signale seulement des issues sans PR de correction.
C’est formulé comme « pour signaler un problème découvert lors de l’utilisation de you-get, vous devez ouvrir une Pull Request… », et je n’avais jamais vu cette approche auparavant.
Les exigences sont une description détaillée du problème et au moins un commit qui couvre ce problème par un test unitaire. Le mot « addressing » est mal choisi ici ; « demonstrating » aurait sans doute été meilleur.
you-getexpérimente actuellement une approche agressive de gestion des issues, et les rapports de bug doivent être traités dans le code via des pull requests.https://github.com/soimort/you-get/commit/75b44b83826b3c2d9a...
Ils ont probablement eu beaucoup trop de spam. À noter que
tests/test.pysemble exécuter directement les extracteurs sur plusieurs sites web, et je n’ai pas trouvé où les requêtes et réponses réseau sont mockées. L’objectif est peut-être de simplifier le processus pour les personnes qui créent une PR.you-get, donc je ne sais pas ce qu’ils subissent.C’est peut-être un moyen efficace de filtrer le flot d’issues répétitives postées par des gens qui ne savent pas exécuter correctement un programme en ligne de commande.
Si cela rend le projet plus facile à maintenir et lui permet de durer plus longtemps, ça me semble acceptable.
En ne voyant que le titre et le début de la description, je pensais que c’était un outil fondé sur des heuristiques qui essayait d’attraper n’importe quoi sur une page. Le genre d’outil utile quand il n’existe pas de prise en charge spécifique pour un site, autrement dit, la plupart du temps, « quand yt-dlp ne le prend pas en charge ».
Mais en réalité, son architecture repose sur des extracteurs, avec un extracteur distinct pour chaque source un minimum populaire. Au final, je me demande si ce n’est pas plutôt une copie plus simple de yt-dlp.
Je me demande si d’autres personnes rencontrent constamment cette erreur
Ça commence par
you-get: [error] oops, something went wrong., puis ça conseille de vérifier les problèmes réseau, de vérifier qu’on a la dernière version, de chercher les bugs connus et de lancer avec l’option--debugMême avec le flag de débogage, ça n’a pas vraiment aidé, et j’ai eu
TypeError: decoding to str: need a bytes-like object, NoneType foundsurpattern = str(pattern, 'latin1')Je voulais voir s’il était possible de contourner la limite d’âge, mais la même erreur se produisait aussi sur des vidéos sans limite d’âge
On peut passer à un Python récent avec un outil comme Pyenv, ou lancer une image Docker du genre
docker run -it -v $(pwd):/mnt python:3.13 bashet essayer l’utilitaire à l’intérieurQuelqu’un peut expliquer en quoi c’est mieux que yt-dlp ?
Par exemple, j’ai trouvé étonnant qu’il y ait un assembleur MP4 dédié. Si ffmpeg existe déjà, il doit être difficile de faire vraiment mieux soi-même
https://github.com/soimort/you-get/blob/develop/src/you_get/...
Il est difficile de qualifier précisément d’outil « bête » un téléchargeur de médias façon ytdl doté d’une bibliothèque d’extracteurs et de convertisseurs propres à chaque site, mais c’est toujours une bonne chose de voir davantage de projets comme ytdl
Je ne comprends pas trop pourquoi Bandcamp figure dans la liste des sites pris en charge. Bandcamp permet tout simplement de télécharger les fichiers si l’on paie d’abord l’artiste
Ce qu’on peut récupérer avec cet outil l’est parce que l’artiste a autorisé l’écoute gratuite avant achat. Télécharger avec cet outil semble totalement inutile et un peu irrespectueux. Bandcamp héberge surtout de petits artistes et labels indépendants
Personnellement, il m’arrive aussi de vouloir, ou de devoir, consommer des médias hors ligne à cause d’un réseau instable ou lent, ou d’opérateurs coûteux. Cela ne veut pas dire que je ne paierai pas plus tard si ça me plaît
Ça a l’air bien fait. Mais, en tant que consommateur, je me demande quelle raison j’aurais d’utiliser
you-getplutôt que yt-dlpQuel avantage a-t-il par rapport à yt-dlp, qui fonctionne plutôt bien sur un nombre énorme de sites ?
[1] https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites....
La documentation dit : « Rechercher et télécharger depuis Google Videos :
$ you-get "Richard Stallman eats"»Je ne lis pas souvent la documentation, mais cette fois je l’ai lue et j’y ai trouvé un easter egg assez répugnant
J’aime bien. J’imagine qu’une extension compagnon pour Chrome/Firefox, qui utiliserait
you-getcomme backend et serait intégrée de façon fluide, serait sympaEn allant plus loin, on peut imaginer une extension
you-getqui, lorsqu’on va sur YouTube, contourne le lecteur YouTube et lit directement le contenu sans publicité. Ce serait applicable non seulement à YouTube, mais aussi à d’autres plateformeshttps://addons.mozilla.org/en-US/firefox/addon/faststream/?u...