youtube-dl无法在pycharm中正常工作

问题描述

我已经编写了这段代码来仅从youtube上的URL下载音频,但是某些链接不起作用


video_url = "https://www.youtube.com/watch?v=5yijULf4Hko" #  doesn't work for example
#video_url = "https://www.youtube.com/watch?v=gKK3Y6iDk_Q" #  does work

filename = "song.mp3"

options = {
    'format': 'bestaudio/best','keepvideo': False,'outtmpl': filename,'postprocessors': [{
            'key': 'FFmpegExtractAudio','preferredcodec': 'mp3','preferredquality': '251',}],}

with youtube_dl.YoutubedL(options) as ydl:
    ydl.download([video_url])

当我尝试第一个链接时,程序将输出以下内容

[youtube] 5yijULf4Hko: Downloading webpage
ERROR: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "C:\Python\python38\lib\site-packages\youtube_dl\YoutubedL.py",line 797,in extract_info
    ie_result = ie.extract(url)
  File "C:\Python\python38\lib\site-packages\youtube_dl\extractor\common.py",line 530,in extract
    ie_result = self._real_extract(url)
  File "C:\Python\python38\lib\site-packages\youtube_dl\extractor\youtube.py",line 2364,in _real_extract
    self._sort_formats(formats)
  File "C:\Python\python38\lib\site-packages\youtube_dl\extractor\common.py",line 1327,in _sort_formats
    raise ExtractorError('No video formats found')
youtube_dl.utils.ExtractorError: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

During handling of the above exception,another exception occurred:

Traceback (most recent call last):
  File "D:/Scripts/Python/a.py",line 20,in <module>
    ydl.download([video_url])
  File "C:\Python\python38\lib\site-packages\youtube_dl\YoutubedL.py",line 2018,in download
    res = self.extract_info(
  File "C:\Python\python38\lib\site-packages\youtube_dl\YoutubedL.py",line 820,in extract_info
    self.report_error(compat_str(e),e.format_traceback())
  File "C:\Python\python38\lib\site-packages\youtube_dl\YoutubedL.py",line 625,in report_error
    self.trouble(error_message,tb)
  File "C:\Python\python38\lib\site-packages\youtube_dl\YoutubedL.py",line 595,in trouble
    raise DownloadError(message,exc_info)
youtube_dl.utils.DownloadError: ERROR: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

Process finished with exit code 1

我正在使用最新版本的pycharm(2020.2.1) 已经尝试更新youtube-dl 我试图在命令提示符下下载,并且成功下载了音频文件 youtube-dl -f 251 https://www.youtube.com/watch?v=5yijULf4Hko

起初以为这是版权方面的问题,但它也不适用于某些我确定未获得版权的网址

解决方法

我找到了解决问题的方法,但感觉我做错了, 我改变了这一行:

reboot

with youtube_dl.YoutubeDL(options) as ydl:
    ydl.download([video_url])

我只是使用了程序上命令提示符下的命令,但是我无法让python库像这样工作,如果有人知道如何正确解决这个问题,我将不胜感激

,

这是我编辑的简单脚本,对我有用,但是你们可以尝试

    @bp.route("/down",methods=['GET','POST'])
    def download_file():
    video_info = youtube_dl.YoutubeDL().extract_info(
    url=video_url,download=False
     )
    filename = f"{video_info['title']}.mp3"
    ydl_opts = {
            'format': 'bestaudio/best','keepvideo': False,'outtmpl': filename,'postprocessors': [{
                'key': 'FFmpegExtractAudio','preferredcodec': 'mp3','preferredquality': '192',}],}
    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
        info_dict = ydl.extract_info(video_url,download=False)
        video_title = info_dict.get('title',None)

    path = f'C:\\{video_title}.mp3'

    ydl_opts.update({'outtmpl':path})

    try:
        with youtube_dl.YoutubeDL(options) as ydl:
            ydl.download([video_url])
    except:
        os.system(f"""youtube-dl -o "{filename}.%(ext)s" --extract-audio -x --audio-format mp3 {video_url}""")

        return index()

html代码

    <form action="/down" method="post">
    <button>
    <a type="submit"><i class="fas fa-cloud-download-alt" style="color: white;"> MP3</i></a>
    </button> 
    </form>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...