使用 youtube-dl 下载整个 YouTube 频道

使用 youtube-dl 下载整个 YouTube 频道

因此,我尝试使用 youtube-dl 下载整个 YouTube 频道。我知道,如果您使用 -F 命令,它会为您提供视频质量类型的列表。我的问题是:如何下载所有视频中质量最好的视频,以便下载不会默认为 460p 或类似的低质量。

答案1

此答案不适用于旧版本的 youtube-dl。您需要将 youtube-dl 更新到最新版本。您可以在 Python 虚拟环境中本地安装最新版本的 youtube-dl (虚拟环境),或者您可以下载最新版本的 youtube-dl 并使用pip( sudo apt remove youtube-dl && sudo apt install python-pip && pip install --user youtube-dl) 安装它。youtube-dl 也是一个 snap 包。要安装它,请输入:

sudo snap 安装 youtube-dl# 使用 snap run youtube-dl 启动它

打开终端并输入:

youtube-dl -f best -ciw -o "%(title)s.%(ext)s" -v <url-of-channel>

...其中,<url-of-channel>替换为频道的 URL。

笔记:如果您要下载大量视频,则应在开始下载之前将目录更改为要保存视频的目录。

解释

-f, --format FORMAT
    video format code. The special name "best" will pick the best quality.

-c, --continue                   
    force resume of partially downloaded files

-i, --ignore-errors              
    continue on download errors, for example to skip unavailable videos in a channel 

-w, --no-overwrites
    do not overwrite files

-o, --output
    Output filename template, this example functions similarly to the old --title option

-v, --verbose
    print various debugging information

答案2

总结使用-f 'bestvideo[height>=720]+bestaudio/best'标志来获得更高的分辨率。我使用的完整命令是:

youtube-dl -f "bestvideo[height>=720]+bestaudio/best" -ciw -o "%(title)s.%(ext)s" -v <url-of-channel>

这就是为什么-f best可能无法为您提供最高分辨率的原因。

当您使用-F标志列出可能的文件格式时,有时它会将 360p 格式列为“最佳”,例如:

youtube-dl -F https://www.youtube.com/watch?v=FmZXCqqx6q0
[youtube] FmZXCqqx6q0: Downloading webpage
[info] Available formats for FmZXCqqx6q0:
format code  extension  resolution note
249    webm   audio only tiny   61k , opus @ 50k (48000Hz), 12.74MiB
250    webm   audio only tiny   80k , opus @ 70k (48000Hz), 16.87MiB
140    m4a    audio only tiny  132k , m4a_dash container, mp4a.40.2@128k (44100Hz), 31.35MiB
251    webm   audio only tiny  158k , opus @160k (48000Hz), 33.34MiB
...
244    webm   854x480    480p  271k , vp9, 30fps, video only, 35.05MiB
398    mp4    1280x720   720p  443k , av01.0.05M.08, 30fps, video only, 102.27MiB
247    webm   1280x720   720p  480k , vp9, 30fps, video only, 63.02MiB
136    mp4    1280x720   720p  489k , avc1.4d401f, 30fps, video only, 114.12MiB
18     mp4    640x360    360p  360k , avc1.42001E, 30fps, mp4a.40.2@ 96k (44100Hz), 87.29MiB (best)

如您所见,最后一个选项虽然分辨率较低,但仍然被列为最佳选项。我们可以通过几种方法解决这个问题,我尝试从以 720p 上传的频道下载,因此对我来说最简单的方法就是使用标志-f 'bestvideo[height>=720]+bestaudio/best'

根据您的情况,您可能需要使用格式选择器表达式,也许将其从 720 增加到 1080 或选择特定的文件格式,如 mp4。

查看其他格式选择器示例

要查看选项的完整细分

您将需要安装 ffmpeg 或从 mkv 转换。

答案3

您可以将其与 一起使用youtube-dl
但我建议使用yt-dlp,因为它提供更好的下载速度。

Windows 批处理脚本的示例。
也可以适用于 Linux Bash。

来自 Linux Bash 脚本的启发https://askubuntu.com/a/1022993/803975

@ECHO OFF
REM Downloads Video, converts into MKV and embeds subtitles
REM https://askubuntu.com/questions/1022855/download-everything-from-a-youtube-video-using-youtube-dl/1022993#1022993
IF NOT EXIST "./archive/videos/TZM_Archive/" MKDIR "./archive/videos/TZM_Archive/" 
IF NOT EXIST "./archive/videos/TZM_Archive/TZM_Archive.ytdlarchive" ECHO. > "./archive/videos/TZM_Archive/TZM_Archive.ytdlarchive" 
yt-dlp ^
--retries "3" ^
--no-overwrites ^
--call-home ^
--write-info-json ^
--write-description ^
--write-thumbnail ^
--all-subs ^
--convert-subs "srt" ^
--write-annotations ^
--add-metadata ^
--embed-subs ^
--download-archive "./archive/videos/TZM_Archive/TZM_Archive.ytdlarchive" ^
--format "bestvideo+bestaudio/best" ^
--merge-output-format "mkv" ^
--output "./archive/videos/TZM_Archive/%%(upload_date)s_%%(id)s/TZM_Archive_%%(upload_date)s_%%(id)s_%%(title)s.%%(ext)s" ^
"https://www.youtube.com/user/TZMOfficialChannel/videos"

IF NOT EXIST "./archive/videos/TZM_Archive/TZM_Archive.ytdlarchive" ECHO. > "./archive/videos/TZM_Archive/TZM_Archive_subtitles.ytdlarchive" 
REM Downloads additional externally available SUBTITLES to the folder of downloaded video
yt-dlp ^
--skip-download ^
--retries "3" ^
--call-home ^
--all-subs ^
--convert-subs "srt" ^
--output "./archive/videos/TZM_Archive/%%(upload_date)s_%%(id)s/TZM_Archive_%%(upload_date)s_%%(id)s_%%(title)s.%%(ext)s" ^
"https://www.youtube.com/user/TZMOfficialChannel/videos"


REM Downloads additional and missing THUMBNAILS
yt-dlp ^
--skip-download ^
--write-all-thumbnails ^
--ignore-config ^
--id ^
--output "./archive/videos/TZM_Archive/%%(upload_date)s_%%(id)s/TZM_Archive_%%(upload_date)s_%%(id)s_%%(title)s.%%(ext)s" ^
"https://www.youtube.com/user/TZMOfficialChannel/videos"
PAUSE

答案4

有点晚了,我想提出我的下载器,我将其作为 ppa 提供给 Ubuntu 用户:

sudo add-apt-repository ppa:jentiger-moratai/mediatools
sudo apt update
sudo apt install ytdownloader

和我的所有应用一样,我尝试让 UI 尽可能简单。ytdownlaoder 被编写用于下载最优质的视频和音频(可能使用不同的服务器)- 它的后端是 yt-dlp:

1

该应用程序可通过 Gnome、XFCE 和 KDE 上的拖放功能运行

相关内容