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

Bas*_*ien 97 python youtube download python-3.x youtube-dl

我正在用 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=...")

Run Code Online (Sandbox Code Playgroud)

当我执行我的代码时,我收到此错误:

ERROR: YouTube said: Unable to extract video data
Run Code Online (Sandbox Code Playgroud)

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

Man*_*hat 169

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

  • youtube-dl --update (自我更新)
  • pip install -U youtube-dl (通过蟒蛇)
  • brew upgrade youtube-dl (macOS + 自制软件)
  • choco upgrade youtube-dl (窗户 + 巧克力味)

  • `pip install -U youtube-dl` (27认同)
  • 在我的例子中是“brew升级youtube-dl”。 (11认同)
  • 不要忘记先运行“youtube-dl --update”并写入“sudo”,否则,您可能会收到如下错误:“错误:/usr/local/Cellar/youtube-dl/2020.03 上没有写入权限。 24/bin/youtube-dl”。这是由权限状态引起的,而不是由 youtube-dl 引起的 (3认同)
  • 在我的例子中是“choco 升级 youtube-dl” (2认同)
  • 如果您来自 Ubuntu/debian,您也可以不依赖 apt 存储库,而是通过其他方式安装,如 youtube-dl github 上所述:https://github.com/ytdl-org/youtube- dl#安装 (2认同)

hur*_*yag 37

对于 ubuntu 用户:

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

Run Code Online (Sandbox Code Playgroud)

  • 您可能需要的第三个命令:“hash youtube-dl” (5认同)
  • 它对我有用,谢谢!! (2认同)

小智 11

我在 Ubuntu 20.04 上遇到了同样的错误。我通过从以下位置下载 .deb 更新 youtube-dl 解决了这个问题:https : //packages.debian.org/sid/all/youtube-dl/download

虽然您也可以在 youtube-dl 的官方网站上获得更新。


Wil*_* Le 11

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

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

python -m pip install -U yt-dlp
Run Code Online (Sandbox Code Playgroud)

然后

yt-dlp video_url -o /path/to/output.mp4
Run Code Online (Sandbox Code Playgroud)

例如:

yt-dlp https://www.youtube.com/watch?v=gKCvphbCpPE -o ~/Videos/my_video.mp4
Run Code Online (Sandbox Code Playgroud)

为什么使用 yt-dlp?

引用自包存储库:

yt-dlp 是基于现已停用的 youtube-dlc 的 youtube-dl 分支。该项目的主要重点是添加新功能和补丁,同时保持原始项目的最新状态

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


Gre*_*man 10

乌班图用户:

解决此问题的最简单、最快捷的方法是完全删除 Youtube-dl 并使用 .deb 文件和 apt 重新安装,而无需四处奔走并尝试一千种不同的解决方案。首先,将其从系统中清除。

sudo apt purge youtube-dl 
Run Code Online (Sandbox Code Playgroud)

或者

sudo pip3 uninstall youtube-dl
Run Code Online (Sandbox Code Playgroud)

接下来,转到此处( http://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
Run Code Online (Sandbox Code Playgroud)

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


Hot*_*non 8

在 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
Run Code Online (Sandbox Code Playgroud)


Ham*_*mza 6

如果您安装了 pip,您可以使用它来更新,youtube-dl 这对我有帮助。

sudo pip install --upgrade youtube_dl


小智 5

如果您使用以下命令在 MacOsx 更新上使用 youtube-dl 命令行:

sudo youtube-dl --update

Run Code Online (Sandbox Code Playgroud)