在Python脚本中更改嵌入式使用的YouTube-DL默认保存位置

时间:2017-10-10 00:38:53

标签: ubuntu youtube-dl

YouTube-DL默认保存在工作目录中,除非您在youtube-dl.conf文件中特别指示它。但是,这个文件在安装时不存在,我在创建它时遇到了很多麻烦。

我正在Digital Ocean上运行Ubuntu 16.04 LAMP堆栈服务器。

我尝试在youtube-dl.conf下创建/usr/local/etc,然后将其添加到其中:--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,而不是从命令行使用/var/www/html。在没有URL的情况下运行上述命令不起作用。 Related askubuntu question

任何人都可以帮助我吗?工作目录为/var/www/html/media/audio,但我需要将其保存在subprocess.check_call(['youtube-dl', '--output', '/var/www/html/media/audio/%(title)s.%(ext)s', url]) 中。对Ubuntu来说还是新手。谢谢!

Youtube-DL Github Configuration Section

编辑:使用下面的@phihag的答案,我添加了这个:

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], } 模拟:

- parent
   - sub-parent
      - sub-module-1
      - sub-module-2
   - module-1
   - module-2

使用上述选项不允许更改默认位置。这必须通过命令行逐个进行,每次你想下载,或者你需要使用配置文件(据我所知。我没有在我的搜索中看到任何有人可以的例子通过脚本中的API指定默认保存位置。

1 个答案:

答案 0 :(得分:1)

无需编写配置文件;你也可以从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'])