如何在不下载视频的情况下使用 youtube-dl 获取有关视频的信息
How to get info about video, without downloading it, using youtube-dl
我使用 python 和 youtube-dl 库制作了自己的脚本,可以轻松地从在线电台下载歌曲。它的工作原理是复制一个播放列表,将其保存到一个 .txt 文件,然后 运行 一个脚本遍历播放列表并丢弃每一行的时间,然后用歌曲名称搜索 youtube 并下载第一首它发现。
由于很多歌曲是重复的,程序会再次下载歌曲并对其进行处理(将其转换为 mp3 并仅隔离音频)并覆盖旧歌曲。我感兴趣的是如何在不下载的情况下只检索视频名称,并检查该歌曲是否已经下载以避免不必要地浪费时间和资源。我知道“”团队已经准备好了歌曲,我不确定它是否可以不同地使用。下面是一个.py脚本和一个歌曲列表的例子(列表通常有500行,所以有很多重复)。
<main.py>
import os
radio = "BBCRadio1"
lista = []
with open ("./list.txt" ,"r", encoding="utf8") as f:
lines = f.readlines()
for line in lines:
lista.append(line.split("\t")[1].strip())
lista = list(dict.fromkeys(lista))
for song in lista:
print("------------------------------------------Downloading " + str(lista.index(song) + 1) + ". song of " + str(len(lista)) + " songs------------------------------------------")
os.system("youtube-dl -o \"D:\Projects\YT-DL/songs/" + radio + "/%(title)s.%(ext)s\" --extract-audio --audio-format mp3 \"ytsearch:" + song + "\"")
<BBCRadio1.txt>
14:32 Harry Styles - Watermelon Sugar
14:27 Drake - Passionfruit
14:24 Phoebe Bridgers - I See You
14:20 Avicii - Lonely Together (feat. Rita Ora)
14:17 Jawsh 685 & Jason Derulo - Savage Love (Laxed - Siren Beat)
14:13 Clipz, Ms. Dynamite, Ms Banks & JayKae - Again
14:09 Katy Perry - Chained To The Rhythm (feat. Skip Marley)
14:06 Dave - Funky Friday (Glastonbury 2019)
14:02 Dave - Location (Glastonbury 2019) (feat. Burna Boy)
13:58 Topic - Breaking Me (feat. A7S)
13:54 Lily Allen - The Fear
13:49 The Weeknd - I Feel It Coming (feat. Daft Punk)
13:46 Sports Team - Going Soft
13:42 Megan Thee Stallion & Beyoncé - Savage (Remix)
13:38 Jonas Brothers - Sucker
我不确定您为什么要使用 youtube-dl 来获取视频元数据。在尝试下载文件之前,您可以使用 os.path.isfile(fname)
查看该文件是否存在于目录中。这样就可以避免重复
或者您可以使用 youtube-dl python 库并设置 download=False
您应该尝试 ytdl
已有的方法来跳过播放列表中已下载的文件。简而言之,--download-archive
功能,source。示例如下:
youtube-dl --download-archive archive.txt "https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re"
此处 archive.txt
文件将包含已从播放列表下载的所有视频。
你是这个意思吗?
youtube-dl --write-annotations --write-info-json --skip-download www.youtube.com/yourvideo
--write-annotations
获取注释
--write-info-json
将元数据保存在 json 文件中
--skip-download
跳过视频下载
如果你只想要标题,你可以使用选项
-e
或 --get-title
即“模拟,安静但打印标题”
如果您想要 json 信息而不下载它,您可以使用
-j
或 --dump-json
到“模拟,安静但打印 JSON 信息。有关可用键的说明,请参阅“输出模板”。
-J
or --dump-single-json
to "Simulate, quiet but print JSON information for each command-line argument. If the URL refers to a playlist, dump the whole playlist information在一行中。"
我使用 python 和 youtube-dl 库制作了自己的脚本,可以轻松地从在线电台下载歌曲。它的工作原理是复制一个播放列表,将其保存到一个 .txt 文件,然后 运行 一个脚本遍历播放列表并丢弃每一行的时间,然后用歌曲名称搜索 youtube 并下载第一首它发现。 由于很多歌曲是重复的,程序会再次下载歌曲并对其进行处理(将其转换为 mp3 并仅隔离音频)并覆盖旧歌曲。我感兴趣的是如何在不下载的情况下只检索视频名称,并检查该歌曲是否已经下载以避免不必要地浪费时间和资源。我知道“”团队已经准备好了歌曲,我不确定它是否可以不同地使用。下面是一个.py脚本和一个歌曲列表的例子(列表通常有500行,所以有很多重复)。
<main.py>
import os
radio = "BBCRadio1"
lista = []
with open ("./list.txt" ,"r", encoding="utf8") as f:
lines = f.readlines()
for line in lines:
lista.append(line.split("\t")[1].strip())
lista = list(dict.fromkeys(lista))
for song in lista:
print("------------------------------------------Downloading " + str(lista.index(song) + 1) + ". song of " + str(len(lista)) + " songs------------------------------------------")
os.system("youtube-dl -o \"D:\Projects\YT-DL/songs/" + radio + "/%(title)s.%(ext)s\" --extract-audio --audio-format mp3 \"ytsearch:" + song + "\"")
<BBCRadio1.txt>
14:32 Harry Styles - Watermelon Sugar
14:27 Drake - Passionfruit
14:24 Phoebe Bridgers - I See You
14:20 Avicii - Lonely Together (feat. Rita Ora)
14:17 Jawsh 685 & Jason Derulo - Savage Love (Laxed - Siren Beat)
14:13 Clipz, Ms. Dynamite, Ms Banks & JayKae - Again
14:09 Katy Perry - Chained To The Rhythm (feat. Skip Marley)
14:06 Dave - Funky Friday (Glastonbury 2019)
14:02 Dave - Location (Glastonbury 2019) (feat. Burna Boy)
13:58 Topic - Breaking Me (feat. A7S)
13:54 Lily Allen - The Fear
13:49 The Weeknd - I Feel It Coming (feat. Daft Punk)
13:46 Sports Team - Going Soft
13:42 Megan Thee Stallion & Beyoncé - Savage (Remix)
13:38 Jonas Brothers - Sucker
我不确定您为什么要使用 youtube-dl 来获取视频元数据。在尝试下载文件之前,您可以使用 os.path.isfile(fname)
查看该文件是否存在于目录中。这样就可以避免重复
或者您可以使用 youtube-dl python 库并设置 download=False
您应该尝试 ytdl
已有的方法来跳过播放列表中已下载的文件。简而言之,--download-archive
功能,source。示例如下:
youtube-dl --download-archive archive.txt "https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re"
此处 archive.txt
文件将包含已从播放列表下载的所有视频。
你是这个意思吗?
youtube-dl --write-annotations --write-info-json --skip-download www.youtube.com/yourvideo
--write-annotations
获取注释
--write-info-json
将元数据保存在 json 文件中
--skip-download
跳过视频下载
如果你只想要标题,你可以使用选项
-e
或 --get-title
即“模拟,安静但打印标题”
如果您想要 json 信息而不下载它,您可以使用
-j
或 --dump-json
到“模拟,安静但打印 JSON 信息。有关可用键的说明,请参阅“输出模板”。
-J
or --dump-single-json
to "Simulate, quiet but print JSON information for each command-line argument. If the URL refers to a playlist, dump the whole playlist information在一行中。"