Youtube_dl : ERROR : YouTube said: Unable to extract video data

I'm making a little graphic interface with Python 3 which should download a youtube video with its URL. I used the youtube_dl module for that. This is my code :

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=...")


When I execute my code, I get this error:

ERROR: YouTube said: Unable to extract video data

I saw here that it was because it doesn't find any video info, how can I resolve this problem?

154876 次浏览

您可以尝试添加一个 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

当然

更新 youtube-dl 对我有帮助:

  • youtube-dl --update (self-update)
  • pip install -U youtube-dl(via python)
  • (macOS + 自制)
  • choco upgrade youtube-dl(Windows + Chocolatey)

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

sudo youtube-dl --update


我在 Ubuntu 20.04上也有同样的错误。 我通过更新 youtube-dl 来解决这个问题,方法是从以下网站下载一个.deb 文件: Https://packages.debian.org/sid/all/youtube-dl/download

不过你也可以在 youtube-dl 的官方网站上看到更新。

如果你安装了 pip,你可以用它来更新 youtube-dl 帮助了我。

sudo pip install --upgrade youtube_dl

对于 ubuntu 用户:

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

在 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

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

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

Ubuntu 用户:

解决这个问题的最简单、最快捷的方法是使用。Deb 文件 & apt。首先,将它从你的系统中清除。

sudo apt purge youtube-dl

或者

sudo pip3 uninstall youtube-dl

Next, go 给你 (http://ftp.us.debian.org/debian/pool/main/y/youtube-dl/youtube-dl_2021.12.17-1_all.deb) to download the .deb file. Once the file is downloaded, install using apt with the command below. This will solve your issue. Obviously you will make sure your version number & file name are correct.

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

如果这个解决方案为您工作请投票,以便其他人可以很容易地找到它。