我试图使用 Youtubedl 从 Youtube 下载视频。我很容易地下载了该播放列表中的一个视频,但是当我尝试从其 URL 下载第二个视频时,YoutubeDL 开始下载整个播放列表。我是个菜鸟,所以任何帮助都会很棒:) 网址链接是:https : //www.youtube.com/watch?v= wtdFPppcup4&list=PL9ooVrP1hQOH3SvcgkC4Qv2cyCebvs0Ik&index=3&t=0s
可能是网址问题?
正如此处文档中提到的,我需要使用 play() 命令使用源来播放音乐,我正在尝试使用 YoutubeDL 但我无法弄清楚。
我已经检查了 rapptz discord.py 基本语音示例,但由于我没有使用面向对象编程,它让我很困惑。在我看过的所有地方,他们的示例都使用 v0.16 discord.py,但我不知道如何将其转换player = await voice_client.create_ytdl_player(url)
为重写。
我目前的播放功能如下所示:
async def play(ctx, url = None):
...
player = await YTDLSource(url)
await ctx.voice_client.play(player)
await ctx.send("Now playing: " + player.title())
Run Code Online (Sandbox Code Playgroud)
“YTDLSource”是源的占位符。
非常感谢任何帮助,谢谢。
如何获取给定 YouTube 频道上所有播放列表中所有视频的列表?
在下载时只下载标题和其余的元数据,而不是实际的媒体文件。
我正在尝试通过 youtube-dl 为 youtube 播放列表中的所有视频下载 json 元数据(不是视频)。我还想在再次运行相同的命令时忽略为播放列表中的视频下载已下载的 json 元数据。所以,这是我尝试过的命令,
youtube-dl -i --write-info-json --skip-download --download-archive archive.txt {youtube-playlist-url}
Run Code Online (Sandbox Code Playgroud)
--write-info-json写入视频 info.json
--skip-download不下载视频
--download-archive archive.txt archive.txt 包含已下载视频 ID 的列表,因此 youtube-dl 不会再次下载这些视频
但是,将 --skip-download 参数包含到 youtube-dl 会导致视频 ID 未添加到 archive.txt,这表明 yt-dl 仅在下载视频后将视频 ID 添加到 archive.txt。这两个命令(--skip-download & --download-archive archive.txt)可以一起运行吗?或者有没有其他方法可以实现它?
我检查了许多与此相关的问题,但找不到解决我的问题的东西。基本上,我想将 UTF-8 编码的字符串存储在变量中,然后使用该字符串作为文件名。
\n\n例如,我正在尝试下载 YouTube 视频。如果我们打印视频标题,则会显示非英文字符(ytd
这里是youtube-dl
):
./ytd https://www.youtube.com/watch?v=GWYndKw_zbw -e
输出:[LEEPLAY] \xec\x8b\x9c\xed\x8b\xb0\xed\x8c\x9d \xec\x9e\x85\xeb\xac\xb8 City Pop MIX (Playlist)
但是如果我将其存储在变量中并打印它,韩文字符将被忽略:
\n\n$vtitle= ./ytd https://www.youtube.com/watch?v=GWYndKw_zbw -e
$vtitle
输出:[LEEPLAY] City Pop MIX (Playlist)
有一个包含 3012 个视频的播放列表。我想下载这个播放列表的前 100 个视频,实际上是最近的 100 个视频,所以我想%(playlist_index)s
从 3012 到 2913 开始,而不是从 1 到 100。
我现在所拥有的只是一个基本的 shell 脚本:
youtube-dl --yes-playlist "www.youtube.com/playlist?list=3xAMpLe_iD" -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" --download-archive archive.txt
Run Code Online (Sandbox Code Playgroud)
我想反向跟踪视频顺序,因为下周可能会有 4 个新视频,那么当我下载这些视频时,编号应该是 3016 到 3013,因为它将来自同一个播放列表。
我没有使用 youtube-dl python 脚本的经验,但你可能会回答,就好像我了解基础知识一样。另外,如何获取同一脚本中--download-archive
指定值的文件?%(playlist)s
我一直在尝试使用 youtube-dl 下载 youtube 播放列表,但我在输出模板中遇到问题,我使用以下命令以有组织的方式下载播放列表:
youtube-dl -f mp4 -o "Desktop/mainFolder/courses/%(playlist_title)s-%(playlist_uploader)/%(title)s.%(ext)s" --embed-thumbnail --add-metadata --mark-watched https://www.youtube.com/playlist?list=PLzH6n4zXuckpfMu_4Ff8E7Z1behQks5ba
Run Code Online (Sandbox Code Playgroud)
但我不断收到以下错误:
ERROR: Error in output template: unsupported format character '/' (0x2f) at index 66 (encoding: 'UTF-8')
Run Code Online (Sandbox Code Playgroud)
它指出我使用了不受支持的字符“/”,奇怪的是我在之前的下载中使用了几乎相同的输出模板格式,即:
youtube-dl -f mp4 -o "Desktop/mainFolder/courses/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" --add-metadata https://www.youtube.com/playlist?list=PL4C9296DF81B9EF13
Run Code Online (Sandbox Code Playgroud)
而且效果很好。我在这里做了什么不同的事情,所以第一个命令不起作用,但最后一个命令起作用了?
有没有办法只在使用 python 代码中嵌入的 youtube-dl 或 yt-dlp 时获取 url?
似乎这--get-url
不在YoutubeDL
班级的可用选项中。
我尝试了我认为所有合乎逻辑的方式来通过,--get-url
例如geturl
,,,,...getUrl
get_url
既然可执行文件可以做到这一点,那么一定有一种方法。我想对其进行“逆向工程”,但代码执行顺序有点难以跟踪,因为我不太了解 python。
我已经尝试了几乎我在谷歌上找到的所有内容但无法youtube-dl
在Debian Mint上安装.
试试1
使用以下命令安装和更新:
sudo apt-get install youtube-dl
sudo youtube-dl -U
Run Code Online (Sandbox Code Playgroud)
但是当尝试
youtube-dl http://www.youtube.com/watch?v=dwYatpwrs8s
Run Code Online (Sandbox Code Playgroud)
然后我得到了
嗨!我们更改了分发方法,现在youtube-dl需要再次更新自己.这只会发生一次.只需按Enter即可继续.抱歉,添麻烦了!从现在开始,从http://rg3.github.io/youtube-dl/download.html获取二进制文件,而不是从git存储库获取.
然后我去了http://rg3.github.io/youtube-dl/download.html
并按照安装说明操作:
试试2
sudo wget http://youtube-dl.org/downloads/2013.05.23/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+x /usr/local/bin/youtube-dl
Run Code Online (Sandbox Code Playgroud)
有关分发更改和新链接的相同错误.
试试3
所以我首先在我的debian上安装了pip然后跑了
sudo pip install --upgrade youtube_dl
Run Code Online (Sandbox Code Playgroud)
但我仍然得到同样的错误,我不知道该怎么做.
我正在尝试从视频中提取音频并将其输出到stdout。我能得到的最接近的是将视频下载到stdout。
youtube-dl -o - <link to video>
有谁知道如何做到这一点?
此致,奥斯丁
youtube-dl ×10
youtube ×2
audio ×1
debian ×1
discord.py ×1
linux ×1
powershell ×1
python ×1
python-3.x ×1
syntax-error ×1
ubuntu-20.04 ×1
windows-10 ×1
yt-dlp ×1