标签: youtube-dl

将 WebVTT 文件从 Youtube 转换为纯文本

我正在使用 youtube-dl 从 youtube 下载 WebVTT 文件。

典型的文件如下所示:

WEBVTT
Kind: captions
Language: en

00:00:00.730 --> 00:00:05.200 align:start position:0%

[Applause]

00:00:05.200 --> 00:00:05.210 align:start position:0%
[Applause]


00:00:05.210 --> 00:00:11.860 align:start position:0%
[Applause]
hi<00:00:06.440><c> I'm</c><00:00:07.440><c> here</c><00:00:07.740><c> to</c><00:00:08.160><c> talk</c><00:00:08.429><c> to</c><00:00:09.019><c> share</c><00:00:10.019><c> an</c><00:00:10.469><c> idea</c><00:00:10.820><c> to</c>

00:00:11.860 --> 00:00:11.870 align:start position:0%
hi I'm here to talk to share an idea to


00:00:11.870 --> 00:00:15.890 align:start position:0%
hi I'm here to talk to share an idea to
communicate<00:00:12.920><c> but</c><00:00:13.920><c> what</c><00:00:14.790><c> is</c><00:00:14.940><c> communication</c>

00:00:15.890 --> 00:00:15.900 align:start …
Run Code Online (Sandbox Code Playgroud)

bash awk youtube-dl webvtt

7
推荐指数
1
解决办法
1408
查看次数

使用 Youtube-dl 将缩略图嵌入 mp3 引发异常

我正在尝试使用 youtube-dl 将一些 youtube 视频声音下载为 mp3 并嵌入缩略图。但是每次尝试时都会出现以下错误:

thumbnail_filename = info['thumbnails'][-1]['filename'] KeyError: 'filename'
Run Code Online (Sandbox Code Playgroud)

这是我的 youtube-dl 选项

    ydl_opts = {
        'key':'IgnoreErrors',
        'format': 'bestaudio/best',
        'download_archive': self.songs_data,
        'outtmpl': '/'+download_path+'/'+'%(title)s.%(ext)s',
        'progress_hooks': [self.my_hook],
        'postprocessors': [{
            'key': 'FFmpegExtractAudio',
            'preferredcodec': 'mp3',
            'preferredquality': '192'},
            {'key': 'EmbedThumbnail'},]}
Run Code Online (Sandbox Code Playgroud)

任何想法为什么?嵌入缩略图没有任何参数。

谢谢

python youtube-dl

6
推荐指数
1
解决办法
4521
查看次数

如何在youtube-dl上使用代理?

我想使用代理并运行它 youtube-dl --proxy socks5://127.0.0.1:1080

这是下面的错误

Usage: youtube-dl [OPTIONS] URL [URL...]

youtube-dl: error: You must provide at least one URL.

这里有什么问题?

youtube-dl

6
推荐指数
1
解决办法
1万
查看次数

zsh:/usr/local/bin/youtube-dl:错误的解释器:/usr/local/opt/python/bin/python2.7:没有这样的文件或目录

macOS 10.12

这里似乎是同样的问题但最佳答案只会引发更多问题。

最佳答案说要做:

brew link --overwrite python

产生:

Warning: Already linked: /usr/local/Cellar/python/3.6.5
To relink: brew unlink python && brew link python
Run Code Online (Sandbox Code Playgroud)

我很确定我需要让自制软件切换到 2.7 而不是使用版本 3。我愿意

brew unlink python && brew link python

并得到:

Unlinking /usr/local/Cellar/python/3.6.5... 25 symlinks removed
Linking /usr/local/Cellar/python/3.6.5... 25 symlinks created
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉它链接到特定版本?/usr/local/Cellar/python/包含:2.7.13 2.7.14 2.7.14_3 3.6.3 3.6.5

如何让我的系统始终使用2.7.14_3

/usr/local/opt/python/bin包含python3python3-config和 3.6 版本。我怎样才能在这里得到 2.7 并删除 3 和 3.6?

which python返回/usr/bin/python。当我输入时,python -V …

python macos python-2.7 python-3.x youtube-dl

6
推荐指数
1
解决办法
4297
查看次数

python使用youtube_dl检索自动字幕并转换为成绩单

从youtube提取的自动英文字幕不包含可读形式的信息和重复的文本信息。

welcome<00:00:01.790><c> my</c><00:00:02.790><c> name</c><c.colorCCCCCC><00:00:02.820><c> is</c><00:00:03.210><c> Helga</c></c><c.colorE5E5E5><00:00:03.449><c> Vieira</c><00:00:03.929><c> and</c><00:00:04.080><c> this</c></c>

00:00:04.670 --> 00:00:04.680 align:start position:0%
welcome my name<c.colorCCCCCC> is Helga</c><c.colorE5E5E5> Vieira and this
 </c>
Run Code Online (Sandbox Code Playgroud)

我的代码:

def captions_test02(url):
    ydl = youtube_dl.YoutubeDL({'writesubtitles': True, 'allsubtitles': True, 'writeautomaticsub': True})
    res = ydl.extract_info(url, download=False)
    if res['requested_subtitles'] and res['requested_subtitles']['en']:
        print('Grabbing vtt file from ' + res['requested_subtitles']['en']['url'])
        response = requests.get(res['requested_subtitles']['en']['url'], stream=True)
        f1 = open("testfile01.txt", "w")
        f1.write(response.text)
        f1.close()
        if len(res['subtitles']) > 0:
            print('manual captions')
        else:
            print('automatic_captions')
    else:
        print('Youtube Video does not have any english captions')

if __name__ == '__main__': …
Run Code Online (Sandbox Code Playgroud)

python youtube-dl

6
推荐指数
1
解决办法
1575
查看次数

如何使用 youtube-dl 的 --add-header 选项?

我正在尝试使用 youtube-dl(一种带有命令行界面的流行视频下载器)添加自定义标题。

我在 Windows 10 上使用 PowerShell(或 CMD)。

官方文档如下所示,但我似乎无法正确使用它。

--add-header FIELD:VALUE
指定自定义 HTTP 标头及其值,以冒号“:”分隔。您可以多次使用此选项

我正在尝试为请求添加多个标头,例如:

"Accept-Encoding": "identity;q=1, *;q=0",
"范围": "字节=6488064-",
"Referer": "https://avideosite.net/video/0123456",
"用户代理": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36"

但是当我尝试类似的东西时

start youtube-dl --add-header "Accept-Encoding":"identity;q=1, *;q=0" --add-header "Range":"bytes=6488064-" --add-header "Referer":"https://avideosite.net/video/0123456" --add-header "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36" "http://11.22.333.444:8280/abcdefg=.mp4?st=97WbFiADB5Hla7Y-fZx58g&e=1560574126"
Run Code Online (Sandbox Code Playgroud)

它不起作用并引发如下错误:

启动过程:找不到接受参数的位置参数
'接受编码'。
在行:1 字符:1
+ 启动 youtube-dl --add-header "Accept-Encoding":"identity;q=1, *;q=0" ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (:) …

python powershell command-line cmd youtube-dl

6
推荐指数
1
解决办法
1万
查看次数

youtube-dl 文件名格式化小写和破折号

youtube-dl经常使用并且有一个非常简单的文件命名方案:仅小写字母,同一组的事物用“-”(减号,破折号等)连接,而不同的事物用“_”(下划线)连接。

我不喜欢正则表达式,因此,如果可以配置youtube-dl配置文件来根据我的命名方案存储下载的剪辑,我真的很困惑。例如:

视频:

youtube-dl https://www.youtube.com/watch?v=X8uPIquE5Oo
Run Code Online (Sandbox Code Playgroud)

我的 youtube-dl config

--output '~/videos/%(uploader)s_%(upload_date)s_%(title)s.%(ext)s' --restrict-filenames
Run Code Online (Sandbox Code Playgroud)

我的输出:

Queen_Forever_20111202_Bohemian_Rhapsody_Live_at_Wembley_11-07-1986.mp4
Run Code Online (Sandbox Code Playgroud)

期望的输出:

queen-forever_20111202_bohemian-rhapsody-live-at-wembley-11-07-1986.mp4
Run Code Online (Sandbox Code Playgroud)

注意:手册上说有可能的python 选项,但我无法将它们转移到我的案例中。

python regex youtube-dl

6
推荐指数
1
解决办法
1727
查看次数

提取 YouTube 视频的特定帧而不下载视频

我需要提取在线视频的特定帧来处理算法,但我不想下载整个视频,因为这会使其效率极低。

首先,我尝试使用 YouTube 视频。youtube-dl我可以使用以下方式下载整个视频:

ydl_opts = {'outtmpl': r'OUTPUT_DIRECTORY_HERE',}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    ydl.download([url])
Run Code Online (Sandbox Code Playgroud)

然后我可以捕捉各个帧。

我需要避免下载整个视频。经过一些研究,我发现这ffmpeg可能会帮助我做到这一点。我发现无法仅下载帧,因此如果不可能,第二个选项是我可以下载视频的特定部分。linux 中的一个这样的例子是here,但我找不到任何适用于python 的解决方案。

只下载帧或部分视频(在 python 中)而不下载整个内容的好方法是什么?

python opencv ffmpeg video-capture youtube-dl

6
推荐指数
1
解决办法
8446
查看次数

youtube-dl 库是否支持从 Instagram 下载故事?

我使用名为 YouTube-dl 的库,可以从许多网站下载。

\n

它支持cookies文件。我编写了以下代码:

\n
youtube-dl -j \xe2\x80\x94-cookies /path/to/cookies.txt URLgoesHere\n
Run Code Online (Sandbox Code Playgroud)\n

我想要的是如何使用这个库从 Instagram 下载故事?在命令行上。

\n

python shell command-line instagram youtube-dl

6
推荐指数
1
解决办法
9632
查看次数

如何使用 youtube-dl 从播放列表中的 Youtube 视频中提取上传日期、标题、URL 和持续时间?

我正在尝试从特定播放列表的所有 Youtube 视频中提取Upload DatesTitlesURLs和,我不需要视频 - 只需上面的数据。Durationsyoutube-dl

\n

到目前为止,我已经测试了Alen Paul Varghese此处建议的以下两种方法:

\n

Youtube-dl 的 GitHub Doc 用作参考

\n

用于测试的播放列表 URL

\n

方法#1

\n
youtube-dl --skip-download --print-json https://www.youtube.com/playlist?list=PLRqwX-V7Uu6by61pbhdvyEpIeymlmnXzD > example.json\n
Run Code Online (Sandbox Code Playgroud)\n

\n

方法#2

\n
youtube-dl --get-upload_date https://www.youtube.com/playlist?list=PLRqwX-V7Uu6by61pbhdvyEpIeymlmnXzD > example.txt\n
Run Code Online (Sandbox Code Playgroud)\n

方法 #1输出整个 json 转储 \xe2\x80\x94 每个视频大约 3000 行 - 处理大量 Youtube 视频播放列表非常不方便 - 但它包含 4 个所需的数据。

\n

方法 #2返回以下错误:

\n
youtube-dl: error: no such option: --get-upload_date\n
Run Code Online (Sandbox Code Playgroud)\n

我想支持方法#2, …

windows youtube json python-3.x youtube-dl

6
推荐指数
1
解决办法
5878
查看次数