Einführung eines Tools youtube-dl, das über die Befehlszeile funktioniert und Videos von Videoseiten wie Youtube herunterlädt. Da diese Option zu viele ist, um sie sich zu merken, habe ich eine Abschlussfunktion für zsh geschrieben, daher werde ich sie einführen.
youtube-dl
Vom Terminal
youtube-dl "URL"
Wenn Sie ausführen, können Sie es herunterladen, wenn es sich um eine kompatible Site handelt.
Wie installiert man
Mit Pythons Paketverwaltungsmodul pip
sudo pip install youtube-dl
Sie können es mit installieren. Beachten Sie jedoch, dass der Name des Python-Moduls in den Spezifikationen als "youtube_dl" unterstrichen ist.
Die Installation mit Homebrew auf einem Mac scheint einfach zu sein.
brew install youtube-dl
Wenn Sie aus der Quelle bauen möchten, wenden Sie sich bitte an die Hauptfamilie.
Unterstützte Seiten sind
youtube-dl --extractor-description
Sie können es sehen, indem Sie es ausführen, aber es scheint, dass es derzeit 621 Sites unterstützt. Ich denke, dass Youtube natürlich Nico Nico Videos, Zuckungen und andere berühmte Orte behandelt werden. Unten finden Sie die Links zu den einzelnen Websites. … Es gibt viele verdächtige Websites. Seien Sie also bei Ihrem Besuch vorsichtig.
Wie Sie der Hilfe entnehmen können, können Sie sie auch mit verschiedenen Optionen ausführen. Der einfachste Weg, es zu benutzen, ist einfach ohne Optionen, wie am Anfang erwähnt.
youtube-dl "URL"
Es ist eine Methode, um die URL direkt als einzufügen. In Youtube kannst du die ID auch unter watch =
in der URL angeben. Sie können auch alle in der Wiedergabeliste registrierten Videos herunterladen, indem Sie sie angeben.
Sie können auch das Format des Videos angeben und es herunterladen, Sie können die unterstützten Downloadformate mit -F
anzeigen und das Format aus diesen mit -f
angeben und ausführen Ich kann.
Dann können Sie den Dateinamen angeben, der mit "-o" gespeichert werden soll. Wenn Sie jedoch hier eine Vorlage schreiben, den Titel des Videos, den Titel der Wiedergabeliste, die Nummer in der Wiedergabeliste, die Site, von der Sie heruntergeladen haben, den Uploader Usw. kann im Namen der Videodatei enthalten sein. Weitere Informationen (ry
Es kann auch nützlich sein, sich daran zu erinnern, dass Sie alle Dateien, die Sie herunterladen möchten, in einer Textdatei und später ablegen können
youtube-dl -a dl_list
In diesem Fall werden alle Videos in dieser Datei heruntergeladen.
Wenn Sie viele Videos herunterladen, z. B. beim Herunterladen von einer Wiedergabeliste, ist das Hinzufügen der Option "-i" praktisch, da Fehler in der Mitte ignoriert werden und das nächste Video weiter verarbeitet wird.
Außerdem werden Videodateien, die aus irgendeinem Grund nicht mehr verarbeitet wurden, z. B. aufgrund einer Netzwerkstörung, mit der Erweiterung ".part" gespeichert. Verwenden Sie den Befehl "youtube-dl" erneut, um sie unter demselben Dateinamen zu speichern. Nach der Ausführung wird der Download von der Mitte aus fortgesetzt. Beachten Sie jedoch, dass Sie möglicherweise erneut von vorne beginnen müssen, wenn Sie den Vorgang mit "Strg-C" usw. unterbrechen.
Wenn Sie es im Streaming abspielen möchten, anstatt es herunterzuladen, verwenden Sie die Option -o, um es auf die Standardausgabe auszugeben und an den mplayer weiterzuleiten.
youtube-dl URL -o - | mplayer -
Wenn Sie einen Media Player wie mplayer oder vlc verwenden, der Videos von einer URL abspielen kann, können Sie ihn so abspielen, wie er ist. In mpv wird der youtube-dl-Hook vorbereitet, sodass Sie ihn abspielen können, indem Sie die URL des Videos so wie er ist einfügen. (Die obige Methode kann möglicherweise nicht im Gegenteil spielen.)
Unter den in youtube-dl erstellten Skripten befindet sich ein Skript, das automatisch die zsh-Vervollständigungsfunktion generiert.
Laden Sie diese beiden herunter und lesen Sie im selben Verzeichnis Zeile 12 von zsh-vervollständigung.py
ZSH_COMPLETION_TEMPLATE = "zsh-completion.in"
Ändern
python zsh-completion.py
Erstellt eine Datei mit dem Namen "youtube-dl.zsh" im selben Verzeichnis. Wenn du dies in das Verzeichnis legst, in das du die zsh-Vervollständigungsfunktion legst, werden bei der Ausführung von youtube-dl alle langen Optionskandidaten angezeigt und für einige Optionen der Dateiname und das Verzeichnis Es wird auch ergänzt.
Ich habe jedoch das Gefühl, dass ich mich daran erinnern muss, welche Optionen ich oft verwende, so wie sie sind. Hier sind einige meiner eigenen Modifikationen. Bitte laden Sie es herunter und verwenden Sie es entsprechend. Wenn Sie etwas Besseres hinzufügen oder schreiben möchten, würde ich es begrüßen, wenn Sie mich auf irgendeine Weise informieren könnten.
#-------- 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
Geben Sie dies in .zshrc
ein
local ddir=""
Wenn Sie den Teil von in den Speicherort des Verzeichnisses ändern, in das Sie das Video herunterladen möchten, können Sie es mit zsh vervollständigen. Wenn Sie die zsh-Einstellungen erneut lesen, geben Sie "youtube-dl" ein und drücken Sie die TAB-Taste, um die Erklärung für die 1-stellige Option anzuzeigen. Fügen Sie dann die Informationen hinzu, die Sie für einige Optionen hinzufügen möchten. Es ist wie geworden. (Zum Beispiel Ausgabevorlage, Proxy-Adresse usw.)
youtube-dl Super praktisch. Es gibt ähnliche Browser-Add-Ons, aber es gab einige Probleme, z. B. die Verwendung von Flash, und die im Economy-Modus für Nico Nico-Videos heruntergeladenen Videos wurden ebenfalls sparsam. In dieser Hinsicht ist dies praktisch, da Sie nur die URL der Site kennen müssen und sich nicht die Mühe machen müssen, einen Browser zu starten. Wenn Sie jedoch auf alle gleichzeitig zugreifen, wird dies die Website stören. Verhalten Sie sich dort also mit Bedacht. Stellen Sie außerdem sicher, dass die Website vom Rechteinhaber zum Download freigegeben wurde.
Es scheint schwierig zu sein, die Vervollständigungsfunktion von zsh zu schreiben, da es viele Metazeichen usw. gibt. Wenn Sie sich jedoch daran erinnern, wird die Arbeit im Terminal viel schneller sein, sodass die von Ihnen aktiv verwendete ergänzt wird Ich möchte eine Funktion schreiben.
Recommended Posts