如何在youtube-dl中设置默认下载位置,以便使用youtube-dl下载的所有内容都进入该默认目录?
如何在youtube-dl中设置默认下载位置,以便使用youtube-dl下载的所有内容都进入该默认目录?
-o
开关youtube-dl
的输出是通过--output
或-o
开关处理的;将其作为选项传递,后跟您想要保存下载内容的目标:
youtube-dl -o "%USERPROFILE%\Desktop\%(title)s-%(id)s.%(ext)s" www.youtube.com/link/to/video
请注意,-o
具有双重功能,它还设置了用于命名输出文件的模板,使用变量。在此示例中,它将输出原始下载视频的标题,后跟文件扩展名,这是我的个人偏好。有关可用于文件名的所有变量,请参阅youtube-dl文档。
youtube-dl
还允许使用配置文件 - 这是一种可以用于配置您最常使用的开关的文件,因此程序可以从那里获取它们,而无需每次运行时显式调用它们,节省您的时间。 这就是您寻找的默认下载位置所需的功能。配置文件可用于设置默认输出目标,以便您永远不必再次显式设置输出。
要为youtube-dl设置配置文件,假设你使用的是Windows:
在%APPDATA%\Roaming
中,如果不存在,请创建一个名为youtube-dl
的文件夹。
在该文件夹中,创建一个名为config.txt
的纯文本文件。
将youtube-dl
选项与命令行中使用的方式一样放入文件中,每个选项占用一行。例如,对于输出开关,您可以使用:-o %USERPROFILE%\Desktop
。要了解更多有关配置文件的信息,请阅读此处的文档。
即使在配置文件中配置了选项,也可以通过在命令行中显式调用来覆盖它。因此,如果您已经在配置文件中设置了-o
以便默认下载到某个位置,但希望在当前作业中将下载保存到其他位置,只需在命令行上调用-o
即可覆盖当前程序运行时的配置文件。
%(title)s-%(id)s.%(ext)s
添加到输出模板中就可以获得默认的基本文件名。 - phihag我找到了一种直接下载“Downloads”文件夹中文件的方法,花费了很长时间进行搜索。我复制了整个函数,这样你就可以理解上下文了。这是我的代码,它可能对某些人有所帮助:
import os
def download_audio(request):
SAVE_PATH = '/'.join(os.getcwd().split('/')[:3]) + '/Downloads'
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
'outtmpl':SAVE_PATH + '/%(title)s.%(ext)s',
}
link = request.GET.get('video_url')
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(["https://www.youtube.com/watch?v="+link])
如果有问题,请告诉我。
os.path.join()
将是更好的跨平台建议。 - Arpan Srivastavayoutube-dl
:
在Linux中,这将是您的用户配置文件:您可以通过将任何支持的命令行选项放入配置文件中来配置youtube-dl。 在Linux和macOS上,系统范围的配置文件位于
/etc/youtube-dl.conf
,用户范围的配置文件位于~/.config/youtube-dl/config
。 在Windows上,用户范围的配置文件位置为%APPDATA%\youtube-dl\config.txt
或C:\Users\<user name>\youtube-dl.conf
。 请注意,默认情况下可能不存在配置文件,因此您可能需要自己创建。
# Save all my videos to the Videos directory:
-o ~/Videos/%(title)s.%(ext)s
根据您的需求,我认为将文件移动后会非常有用:
--exec CMD Execute a command on the file after
downloading, similar to find's -exec
syntax. Example: --exec 'adb push {}
/sdcard/Music/ && rm {}'
这是我使用的完整解决方案:
from youtube_dl import YoutubeDL
ydl_opts = {
'format': 'best',
'outtmpl': 'DIR-PATH-HERE%(title)s'+'.mp4',
'noplaylist': True,
'extract-audio': True,
}
video = "https://www.youtube.com/watch?v=SlPhMPnQ58k"
with YoutubeDL(ydl_opts) as ydl:
info_dict = ydl.extract_info(video, download=True)
video_url = info_dict.get("url", None)
video_title = info_dict.get('title', None)
video_length = info_dict.get('duration')
# print(video_title)
"%userprofile%/Desktop/DL/%(title)s-%(id)s.%(ext)s"
我的Bash命令:
youtube-dl -c -i -f "mp4" -o "/home/Youtube_Downloads/%(title)s-%(id)s.%(ext)s" -a youtube_list
'youtube_list'是一个包含Youtube链接的原始文本文件,每行一条链接。
man youtube-dl
)How do I put downloads into a specific folder?
Use the -o to specify an output template, for example -o "/home/user/videos/%(title)s-%(id)s.%(ext)s". If you want this for all of your downloads, put the option into your configuration file.
The current default template is %(title)s-%(id)s.%(ext)s.
这是另一种有用的方法,可以将您的视频下载到所需目录中,并且还可以保留下载的原始文件名。
以下是您的配置文件:
-o %userprofile%/Desktop/DL/%(title)s-%(id)s.%(ext)s
批处理文件设置:
::Variables: Set program="%USERPROFILE%\Desktop\YOUTUBE-DL\v20201209\youtube-dl.exe" Set option=best SET MYPATH="%USERPROFILE%\Desktop\YOUTUBE-DL\v20201209\config" SET MYCONFIG="--config-location" SET MYDLDIR="%USERPROFILE%\Desktop\DL" SET INSTR='%%(title)s-%%(id)s.%%(ext)s' MKDIR "%USERPROFILE%\Desktop\DL" ::Ask user for input. Set /P youtubelink=[Past Link]: :: For use of config file, for default download location. %program% -f %option% "%youtubelink%" "%MYCONFIG%" "%MYPATH%" :: There are many ways to accomplish this: :: For Batch File, NOTE extra (%) character needed. :: "%program%" -f "option" --merge-output-format mp4 -o "%MYDLDIR%"\%%(title)s-%%(id)s.%%(ext)s %youtubelink% :: or this use of variable :: "%program%" -f "option" --merge-output-format mp4 -o "%MYDLDIR%"\%INSTR% %youtubelink%
注意:在变量选项中有空格时使用“引号”。
最终信息:
创建配置文件,将其放入您希望引用的文件夹(目录)中。转到您的youtube-dl.exe文件,并使用CMD或批处理文件将上面列出的“参数”传递给它。完成。(贡献和友善)
youtube-dl
使用的默认文件名/基本名称只是一个任意的默认设置,当没有设置-o
选项时使用,如果你已经使用了-o
选项,那么你应该将其设置为你想要的格式,没有理由不这样做。 - Hashim Azizyoutube-dl -f best -o "%userprofile%/Desktop/DL/%(title)s-%(id)s.%(ext)s" --ignore-config https://www.youtube.com/watch?v=T6vKZhfI7qY
- 请注意,最后一个选项确保我根本没有使用我的配置文件,并且我仍然按预期获得下载。输出目录甚至不需要存在,因为 youtube-dl
会自动创建它。 - Hashim Aziz
youtube-dl --output /path/to/your/dir
。我认为没有一种永久设置输出目录的方法。 - JALyoutube-dl
命令的目录中。 - JALpushd
和popd
切换到输出目录,从其位置调用youtube-dl
,然后切换回来。 - Synetechyoutube-dl
团队能够接受我的功能请求 :-) - SebMa