使用 Youtube-dl 将缩略图嵌入到 mp3 引发异常

Embedding thumbnail to mp3 with Youtube-dl raise exception

我正在尝试使用 youtube-dl 将一些 youtube 视频声音下载为 mp3 并嵌入缩略图。 但是我每次尝试都会收到以下错误:

thumbnail_filename = info['thumbnails'][-1]['filename'] KeyError: 'filename'

这是我的 youtube-dl 选项

    ydl_opts = {
        'key':'IgnoreErrors',
        'format': 'bestaudio/best',
        'download_archive': self.songs_data,
        'outtmpl': '/'+download_path+'/'+'%(title)s.%(ext)s',
        'progress_hooks': [self.my_hook],
        'postprocessors': [{
            'key': 'FFmpegExtractAudio',
            'preferredcodec': 'mp3',
            'preferredquality': '192'},
            {'key': 'EmbedThumbnail'},]}

知道为什么吗?嵌入缩略图没有任何参数。

谢谢

虽然 youtube-dl 上没有记录它 api,但我自己想出了它。 您需要将 'writethumbnail':True 添加到选项,并更改 post 处理器上的顺序,以便 'key': 'FFmpegExtractAudio''key': 'EmbedThumbnail'

之前
    ydl_opts = {
        'writethumbnail': True,
        'format': 'bestaudio/best',
        'download_archive': self.songs_data,
        'outtmpl': '/'+download_path+'/'+'%(title)s.%(ext)s',
        'progress_hooks': [self.my_hook],
        'postprocessors': [
            {'key': 'FFmpegExtractAudio',
            'preferredcodec': 'mp3',
            'preferredquality': '192'},
            {'key': 'EmbedThumbnail',},]}

我不得不独立解决这个问题,但我使用了 Gigalala 来完成最后一步。

这是一个有效的 Youtube-DL / yt_dlp 选项变量,用于下载带有缩略图和元数据的 mp3。

ydl_opts = {
                'format': 'bestaudio[ext=mp3]/best',
                'writethumbnail': True,
                'postprocessors': [
                    {'key': 'FFmpegExtractAudio', 'preferredcodec': 'mp3','preferredquality': '192'},
                    {'key': 'FFmpegMetadata', 'add_metadata': 'True'},
                    {'key': 'EmbedThumbnail','already_have_thumbnail': False,}
                
                ],
            }

我发现后处理器的顺序非常重要。我必须先嵌入元数据,因为它会擦除嵌入缩略图。这是 Youtube-DL 不通过 python 版本嵌入缩略图的修复。