Présentation de l'outil youtube-dl qui fonctionne sur la ligne de commande et télécharge des vidéos à partir de sites vidéo tels que Youtube. De plus, comme cette option est trop longue à retenir, j'ai écrit une fonction de complétion pour zsh, donc je vais la présenter.
youtube-dl
Depuis le terminal
youtube-dl "URL"
Si vous l'exécutez, vous pouvez le télécharger s'il s'agit d'un site compatible.
Comment installer
Avec le module de gestion de paquets de Python pip
sudo pip install youtube-dl
Vous pouvez l'installer avec. Cependant, notez que le nom du module Python est souligné par youtube_dl
dans les spécifications.
Il semble facile à installer en utilisant Homebrew sur Mac.
brew install youtube-dl
Si vous souhaitez construire à partir de la source, veuillez consulter la famille principale.
Les sites pris en charge sont
youtube-dl --extractor-description
Vous pouvez le voir en l'exécutant, mais il semble qu'il supporte actuellement 621 sites. Je pense que YouTube, bien sûr, les vidéos de Nico Nico, Twitch et d'autres lieux célèbres sont couverts. Voici ceux avec des liens vers les sites pour chacun. … Il existe de nombreux sites suspects, soyez donc prudent lorsque vous visitez.
De plus, comme vous pouvez le voir dans l'aide, vous pouvez l'exécuter avec diverses options. La façon la plus simple de l'utiliser est simplement sans options comme mentionné au début.
youtube-dl "URL"
C'est une méthode pour coller directement l'url sous forme de. Dans Youtube, vous pouvez également spécifier l'ID sous watch =
dans l'URL. Vous pouvez également télécharger toutes les vidéos enregistrées dans la playlist simplement en le spécifiant.
Vous pouvez également spécifier le format de la vidéo et la télécharger, vous pouvez afficher le format de téléchargement pris en charge avec -F
, et spécifier le format de celles-ci avec -f
et exécuter Je peux.
Ensuite, vous pouvez spécifier le nom du fichier à enregistrer avec -o
, mais en écrivant un modèle ici, le titre de la vidéo, le titre de la playlist, le numéro dans la playlist, le site à partir duquel vous l'avez téléchargée, le téléchargeur Etc. peut être inclus dans le nom du fichier vidéo. Pour plus d'informations (ry
En outre, il peut être utile de se rappeler que vous pouvez placer tous les fichiers que vous souhaitez télécharger dans un fichier texte et plus tard
youtube-dl -a dl_list
Si tel est le cas, il téléchargera toutes les vidéos de ce fichier.
Lors du téléchargement de nombreuses vidéos, comme lors du téléchargement à partir d'une liste de lecture, l'ajout de l'option -i
est pratique car elle ignore les erreurs qui se produisent au milieu et continue de traiter la vidéo suivante.
De plus, les fichiers vidéo qui ont arrêté le traitement pour une raison quelconque, comme un dysfonctionnement du réseau, sont enregistrés avec l'extension .part
, alors utilisez à nouveau la commande youtube-dl pour enregistrer avec le même nom de fichier. Une fois exécuté, le téléchargement reprendra à partir du milieu. Cependant, veuillez noter que si vous interrompez le processus avec Ctrl-c
etc., vous devrez peut-être recommencer.
Si vous voulez le lire en streaming au lieu de le télécharger, utilisez l'option -o
pour le sortir en sortie standard et le diriger vers mplayer.
youtube-dl URL -o - | mplayer -
Si vous utilisez un lecteur multimédia capable de lire des vidéos à partir d'URL telles que mplayer et vlc, vous pouvez le lire tel quel. Dans mpv, le hook youtube-dl est préparé, vous pouvez donc le lire simplement en collant l'URL de la vidéo telle quelle. (Il peut ne pas être possible de lire avec la méthode ci-dessus)
Parmi les scripts préparés dans youtube-dl, il y a un script qui génère automatiquement la fonction de complétion zsh.
Téléchargez ces deux et dans le même répertoire, regardez la ligne 12 de zsh-completion.py
ZSH_COMPLETION_TEMPLATE = "zsh-completion.in"
Changer pour
python zsh-completion.py
Crée un fichier appelé youtube-dl.zsh
dans le même répertoire. Si vous placez ceci dans le répertoire où vous avez placé la fonction de complétion zsh, lorsque youtube-dl est exécuté, toutes les options longues seront affichées, et pour certaines options, le nom du fichier et le répertoire Il sera également complété.
Cependant, j'ai l'impression de devoir me souvenir des options que j'utilise souvent telles quelles, alors voici quelques-unes de mes propres modifications. Veuillez le télécharger et l'utiliser de manière appropriée. Si vous souhaitez ajouter ou écrire quelque chose de mieux, je vous serais reconnaissant si vous pouviez me le faire savoir d'une manière ou d'une autre.
#-------- youtube-dl completion
# put this script in your .zshrc
# generated by:
# https://github.com/rg3/youtube-dl/blob/master/devscripts/zsh-completion.in
# https://github.com/rg3/youtube-dl/blob/master/devscripts/zsh-completion.py
# and modified manually by Shotaro Fujimoto (https://github.com/ssh0)
__youtube_dl() {
local curcontext="$curcontext" fileopts diropts cur prev
typeset -A opt_args
fileopts="--download-archive|-a|--batch-file|--load-info|--cookies|--ffmpeg-location"
diropts="--cache-dir"
local ddir="/media/shotaro/STOCK/Videos"
cur=$words[CURRENT]
case $cur in
:)
_arguments '*: :(::ytfavorites ::ytrecommended ::ytsubscriptions ::ytwatchlater ::ythistory)'
;;
*)
prev=$words[CURRENT-1]
if [[ ${prev} =~ ${fileopts} ]]; then
_path_files
elif [[ ${prev} =~ ${diropts} ]]; then
_path_files -/
elif [[ ${prev} == "--recode-video" ]]; then
_arguments '*: :(mp4 flv ogg webm mkv)'
elif [[ ${prev} == "--audio-format" ]]; then
_arguments '*: :(best aac vorbis mp3 m4a opus wav)'
elif [[ ${prev} == "--convert-subtitle" ]]; then
_arguments '*: :(srt ass vtt)'
elif [[ ${prev} =~ "-o|--output" ]]; then
_arguments "*: :(\
'${ddir}/%(title)s.%(ext)s' \
'${ddir}/%(autonumber)s - %(title)s.%(ext)s' \
'${ddir}/%(extractor)s/%(title)s.%(ext)s' \
'-' \
)"
elif [[ ${prev} == "--proxy" ]]; then
_arguments "*: :( `echo ${http_proxy}` )"
else
_arguments -S\
'-h[Print help]: :' \
'-U[Update the program (run with root)]: :' \
'-i[Continue on download errors]' \
'(-6)-4[Make all connections via IPv4]' \
'(-4)-6[Make all connections via IPv6]' \
'-r[Maximum download rate in bytes per second (e.g. 50K or 4.2M)]' \
'-R[Number of retries (default is 10), or "infinite"]' \
'-a[File containg URLs to download ('-' for stdin)]' \
'-o[Output filename template. (See manpage)]' \
'-q[Activate quiet mode]' \
'-s[Do not download the video and do not write anything to disk]' \
'-g[Simulate, quiet but print URL]' \
'-e[Simulate, quiet but print title]' \
'-j[Simulate, quiet but print JSON information]' \
'-J[Simulate, quiet but print JSON information for each command-line argument]' \
'-f[Video format code, see the "FORMAT SELECTION" for all the info]' \
'-F[List all available formats]' \
'-u[Login with this account ID]' \
'-p[Account pass word. If this option is left out, youtube-dl will ask interactively]' \
'-2[Two-factor auth code]' \
'-n[Use .netrc authentication data]' \
'-x[Convert video files to audio-only files]' \
'-k[Keep the video file on disk after the post-processing; the video is erased by default]' \
'*: :(--help --version --update --ignore-errors --abort-on-error --dump-user-agent --list-extractors --extractor-descriptions --default-search --ignore-config --flat-playlist --no-color --proxy --socket-timeout --source-address --force-ipv3 --force-ipv6 --cn-verification-proxy --playlist-start --playlist-end --playlist-items --match-title --reject-title --max-downloads --min-filesize --max-filesize --date --datebefore --dateafter --min-views --max-views --match-filter --no-playlist --yes-playlist --age-limit --download-archive --include-ads --rate-limit --retries --buffer-size --no-resize-buffer --test --playlist-reverse --xattr-set-filesize --hls-prefer-native --external-downloader --external-downloader-args --batch-file --id --output --autonumber-size --restrict-filenames --no-overwrites --continue --no-continue --no-part --no-mtime --write-description --write-info-json --write-annotations --load-info --cookies --cache-dir --no-cache-dir --rm-cache-dir --write-thumbnail --write-all-thumbnails --list-thumbnails --quiet --no-warnings --simulate --skip-download --get-url --get-title --get-id --get-thumbnail --get-description --get-duration --get-filename --get-format --dump-json --dump-single-json --print-json --newline --no-progress --console-title --verbose --dump-pages --write-pages --youtube-print-sig-code --print-traffic --call-home --no-call-home --no-check-certificate --prefer-insecure --user-agent --referer --add-header --bidi-workaround --sleep-interval --format --all-formats --prefer-free-formats --list-formats --youtube-include-dash-manifest --youtube-skip-dash-manifest --merge-output-format --write-sub --write-auto-sub --all-subs --list-subs --sub-format --sub-lang --username --password --twofactor --netrc --video-password --extract-audio --audio-format --audio-quality --recode-video --keep-video --no-post-overwrites --embed-subs --embed-thumbnail --add-metadata --metadata-from-title --xattrs --fixup --prefer-avconv --prefer-ffmpeg --ffmpeg-location --exec --convert-subtitles)'
fi
;;
esac
}
compdef __youtube_dl youtube-dl
Mettez ceci dans .zshrc
local ddir=""
Si vous modifiez la partie de à l'emplacement du répertoire dans lequel vous souhaitez télécharger la vidéo, vous pouvez la compléter avec zsh. Si vous relisez les paramètres zsh, tapez youtube-dl
et appuyez sur la touche TAB pour voir l'explication de l'option à 1 caractère, et ajoutez les informations que vous souhaitez ajouter pour certaines options. C'est devenu comme. (Par exemple, modèle de sortie, adresse proxy, etc.)
youtube-dl Super pratique. Il existe des modules complémentaires de navigateur similaires, mais il y a eu des problèmes, tels que l'utilisation du flash, et les vidéos téléchargées en mode économique pour les vidéos Nico Nico sont également devenues économiques. À cet égard, cela est pratique car il vous suffit de connaître l'URL du site et vous n'avez pas à vous soucier de lancer un navigateur. Cependant, si vous accédez à tout cela en même temps, ce sera une nuisance pour le site, alors soyez prudent là-bas. Assurez-vous également que le téléchargement du site est approuvé par le titulaire du droit.
Il semble difficile d'écrire la fonction de complétion de zsh car il y a beaucoup de méta caractères, etc., mais si vous vous en souvenez, le travail dans le terminal sera beaucoup plus rapide, donc celui que vous utilisez activement est complété. Je veux écrire une fonction.
Recommended Posts