Youtube_dl:错误:YouTube 说:无法提取视频数据

问题描述 投票:0回答:10

我正在用 Python 3 制作一个小的图形界面,它应该下载一个带有 URL 的 youtube 视频。 我为此使用了

youtube_dl
模块。 这是我的代码:

import youtube_dl # Youtube_dl is used for download the video

ydl_opt = {"outtmpl" : "/videos/%(title)s.%(ext)s", "format": "bestaudio/best"} # Here we give some advanced settings. outtmpl is used to define the path of the video that we are going to download

def operation(link):
    """
    Start the download operation
    """
    try:
        with youtube_dl.YoutubeDL(ydl_opt) as yd: # The method YoutubeDL() take one argument which is a dictionary for changing default settings
            video = yd.download([link]) # Start the download
        result.set("Your video has been downloaded !")
    except Exception:
        result.set("Sorry, we got an error.")

operation("https://youtube.com/watch?v=...")

当我执行我的代码时,我得到这个错误:

ERROR: YouTube said: Unable to extract video data

我看到here是因为没有找到任何视频信息,我该如何解决这个问题?

python python-3.x download youtube youtube-dl
10个回答
207
投票

更新 youtube-dl 帮助了我。根据您安装它的方式,这里是命令:

  • youtube-dl --update
    (自我更新)
  • pip install -U youtube-dl
    (通过 python)
  • brew upgrade youtube-dl
    (macOS + 自制软件)
  • choco upgrade youtube-dl
    (Windows + Chocolatey)

90
投票

对于 ubuntu 用户:

sudo apt purge youtube-dl 
sudo pip3 install youtube-dl
hash youtube-dl

14
投票

我在 Ubuntu 20.04 上有同样的错误。 我通过从以下位置下载 .deb 来更新 youtube-dl 来解决它: https://packages.debian.org/sid/all/youtube-dl/download

尽管您也可以在 youtube-dl 的官方网站上获取更新。


12
投票

在 Ubuntu 上唯一对我有用的是使用 Debian 包/.deb 文件进行安装:

wget http://ftp.de.debian.org/debian/pool/main/y/youtube-dl/youtube-dl_2021.02.04.1-1_all.deb
sudo apt install ./youtube-dl_2021.02.04.1-1_all.deb

8
投票

Ubuntu 用户:

解决这个问题最简单快捷的方法是完全删除 Youtube-dl 并使用 .deb 文件和 apt 重新安装它。首先,将其从系统中清除。

sudo apt purge youtube-dl 

sudo pip3 uninstall youtube-dl

接下来,到HEREhttp://ftp.us.debian.org/debian/pool/main/y/youtube-dl/youtube-dl_2021.12.17-1_all.deb)下载.deb文件.下载文件后,使用 apt 和以下命令进行安装。这将解决您的问题。显然你会确保你的版本号和文件名是正确的。

sudo apt install ./youtube-dl_2021.12.17-1_all.deb

如果此解决方案适合您,请投票,以便其他人可以轻松找到它。


7
投票

如果您在 MacOsx 上使用 youtube-dl 命令行,请使用此命令更新:

sudo youtube-dl --update


6
投票

如果你安装了pip,你可以用它来更新

youtube-dl
这对我有帮助。

sudo pip install --upgrade youtube_dl


4
投票

您可以尝试添加 cookie 文件,因为有些视频有年龄限制。使用此插件 Chrome 插件 Cookie.txt 将您的 cookie 下载到 txt 文件中,然后使用这些

--cookies /path/to/cookies/file.txt
标志不要忘记将正确的路径放入您的 cookies.txt.

样品:

youtube-dl -n --cookies ~/Downloads/cookies.txt https://www.youtube.com/watch\?v\=h7Ii7KKapig

来源


3
投票

安装 yt-dlp 作为 youtube-dl 的替代品

节省时间并安装 yt-dlp 而不是使用 pip 和 python 3.7+:

python -m pip install -U yt-dlp

然后

yt-dlp video_url -o /path/to/output.mp4

例如:

yt-dlp https://www.youtube.com/watch?v=gKCvphbCpPE -o ~/Videos/my_video.mp4

为什么要使用 yt-dlp?

引用自包仓库:

yt-dlp 是基于现在不活跃的 youtube-dlc 的 youtube-dl 分支。该项目的主要重点是添加新功能和补丁,同时与原始项目保持同步

经过将近 1 小时的痛苦搜索后为我工作。


1
投票

youtube-dl 包正在使用 python 代码,它正在寻找要运行的正确 python 版本。如果你有 python3 然后输入:

sudo sed -i '1s/python/python3/' /usr/local/bin/youtube-dl

© www.soinside.com 2019 - 2024. All rights reserved.