在 Python 脚本中更改嵌入使用的 YouTube-DL 默认保存位置
Changing YouTube-DL Default Save Location for Embedded use in Python Script
YouTube-DL
默认保存在工作目录中,除非您在 youtube-dl.conf
文件中特别指示它。但是,这个文件在安装时不存在,我在创建它时遇到了很多麻烦。
我是 运行 Digital Ocean 上的 Ubuntu 16.04 LAMP 堆栈服务器。
我尝试在 /usr/local/etc
下创建 youtube-dl.conf
,然后将其添加到其中:--o ~/html/media/audio/%(title)s
但没有任何作用。
我尝试了 this 答案中的解决方案:
mkdir -p ~/.config/youtube-dl/
echo "-o ~/html/media/audio/%(title)s" > ~/.config/youtube-dl/config
它运行没有任何问题,但我找不到它创建目录的位置,而且无论哪种方式都不起作用。
我不能简单地执行 youtube-dl -o "~/Desktop/%(title)s.%(ext)s" 'youtube file url'
之类的操作,因为我在 Python 脚本而不是命令行中使用 youtube-dl
。 运行 没有 URL 的上述命令不起作用。 Related askubuntu question.
谁能帮帮我?工作目录是/var/www/html
,但我需要它保存在/var/www/html/media/audio
。 Ubuntu 还是新手。谢谢!
Youtube-DL Github Configuration Section
编辑:使用下面@phihag 的回答,我添加了这个:
subprocess.check_call(['youtube-dl', '--output', '/var/www/html/media/audio/%(title)s.%(ext)s', url])
但这是将文件保存为 mkv
,我需要 mp3
格式。我试过类似的东西:
subprocess.check_call(['youtube-dl', '--audio-format', 'mp3', '--output', '/var/www/html/media/audio/%(title)s.%(ext)s', url])
和其他变体,但我得到类似这样的错误:
subprocess.CalledProcessError: Command '['youtube-dl', '--extract-audio --audio-format mp3 --output '/var/www/html/media/audio/%(title)s', 'url']' returned non-zero exit status 2
这些是我以前使用的选项,现在我正尝试使用 subprocess
:
来模拟这些选项
ydl_opts = {
'fixup': 'detect_or_warn',
'format': 'bestaudio/best',
'extractaudio': True,
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '320',
}],
'logger': MyLogger(),
'progress_hooks': [my_hook],
}
使用以上这些选项不允许更改默认位置。这必须通过命令行逐案完成,每次你想下载,或者你需要使用配置文件(据我所知。我没有在我的搜索中看到任何人可以的例子通过脚本中的 API 指定默认保存位置。
无需编写配置文件;您也可以从 python 设置输出模板:
from __future__ import unicode_literals
import youtube_dl
ydl_opts = {
'outtmpl': '/var/www/html/media/audio/%(title)s.%(ext)s',
'extractaudio': True,
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '320',
}],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['https://www.youtube.com/watch?v=BaW_jenozKc'])
YouTube-DL
默认保存在工作目录中,除非您在 youtube-dl.conf
文件中特别指示它。但是,这个文件在安装时不存在,我在创建它时遇到了很多麻烦。
我是 运行 Digital Ocean 上的 Ubuntu 16.04 LAMP 堆栈服务器。
我尝试在 /usr/local/etc
下创建 youtube-dl.conf
,然后将其添加到其中:--o ~/html/media/audio/%(title)s
但没有任何作用。
我尝试了 this 答案中的解决方案:
mkdir -p ~/.config/youtube-dl/
echo "-o ~/html/media/audio/%(title)s" > ~/.config/youtube-dl/config
它运行没有任何问题,但我找不到它创建目录的位置,而且无论哪种方式都不起作用。
我不能简单地执行 youtube-dl -o "~/Desktop/%(title)s.%(ext)s" 'youtube file url'
之类的操作,因为我在 Python 脚本而不是命令行中使用 youtube-dl
。 运行 没有 URL 的上述命令不起作用。 Related askubuntu question.
谁能帮帮我?工作目录是/var/www/html
,但我需要它保存在/var/www/html/media/audio
。 Ubuntu 还是新手。谢谢!
Youtube-DL Github Configuration Section
编辑:使用下面@phihag 的回答,我添加了这个:
subprocess.check_call(['youtube-dl', '--output', '/var/www/html/media/audio/%(title)s.%(ext)s', url])
但这是将文件保存为 mkv
,我需要 mp3
格式。我试过类似的东西:
subprocess.check_call(['youtube-dl', '--audio-format', 'mp3', '--output', '/var/www/html/media/audio/%(title)s.%(ext)s', url])
和其他变体,但我得到类似这样的错误:
subprocess.CalledProcessError: Command '['youtube-dl', '--extract-audio --audio-format mp3 --output '/var/www/html/media/audio/%(title)s', 'url']' returned non-zero exit status 2
这些是我以前使用的选项,现在我正尝试使用 subprocess
:
ydl_opts = {
'fixup': 'detect_or_warn',
'format': 'bestaudio/best',
'extractaudio': True,
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '320',
}],
'logger': MyLogger(),
'progress_hooks': [my_hook],
}
使用以上这些选项不允许更改默认位置。这必须通过命令行逐案完成,每次你想下载,或者你需要使用配置文件(据我所知。我没有在我的搜索中看到任何人可以的例子通过脚本中的 API 指定默认保存位置。
无需编写配置文件;您也可以从 python 设置输出模板:
from __future__ import unicode_literals
import youtube_dl
ydl_opts = {
'outtmpl': '/var/www/html/media/audio/%(title)s.%(ext)s',
'extractaudio': True,
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '320',
}],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['https://www.youtube.com/watch?v=BaW_jenozKc'])