MicroProger
@MicroProger
Работает - не трогай

Ошибка Command raised an exception: DownloadError: ERROR: Unable to extract uploader id; В чем проблема и как решить?

при написании бота для discord на языке Python 3.10 .
Пoявляется вот такая вот ошибка:
Command raised an exception: DownloadError: ERROR: Unable to extract uploader id; 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.


вот сам код: (перед вашей критикой, хочу заметить, что я новичок, и любая ваша критика будет очень важна, но все-таки, хотелось бы помягче. Спасибо)
import re
import urllib.request
from youtube_dl import YoutubeDL
from asyncio import sleep
import discord
import ffmpeg
from discord.ext import commands
import youtube_dl


YDL_OPTIONS = {'format': 'bestaudio', 'noplaylist':'False'}
FFMPEG_OPTIONS = {'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5', 'options': '-vn'}
ffmpeg_options = {
    'options': '-vn'
}
config = {
    'token': 'xxxxxxxxxxxxxxxxxxxxxxxxxx',
    'prefix': '!',
}


@bot.command()
async def play(ctx, arg):
      global vc
      voice_channel = ctx.message.author.voice.channel
      vc = await voice_channel.connect()
      if vc.is_playing():
          await ctx.send(f'{ctx.message.author.mention}, музыка уже проигрывается.')
      else:
        with YoutubeDL(YDL_OPTIONS) as ydl:
            info = ydl.extract_info(arg, download=False)
        URL = info['formats'][0]['url']
        vc.play(discord.FFmpegPCMAudio(executable="ffmpeg.exe", source = URL, **FFMPEG_OPTIONS))
        while vc.is_playing():
            await sleep(1)
        if not vc.is_paused():
            await vc.disconnect()

bot.run(config['token'])

Данный код должен воспроизводить видео из youtube прямо в дискорде, но к сожалению, получается ошибка выше.
И да, возможно, вам покажется, что некоторые библиотеки выше лишние, но дело в том, что код неполный :D
  • Вопрос задан
  • 2969 просмотров
Решения вопроса 1
Проблема заключается в самой библиотеке youtube-dl: https://github.com/ytdl-org/youtube-dl/issues/31530

youtube-dl сам по себе редко обновляется, а youtube любит очень часто вносить мелкие изменения в дизайн, которые ломают парсинг страницы. Либо обновите библиотеку вручную через git до последней версии в разработке
pip install -U git+https://github.com/ytdl-org/youtube-dl

Либо присмотритесь к форкам по типу yt-dlp которые обновляются заметно чаще
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@FezzMad
Мне помог ролик с ютуба: https://www.youtube.com/watch?v=Ghe058HpmMk

Автор предлагает закомментировать 1794 строку (ключ uploader_id и его значение в словаре info) в файле youtube.py библиотеки youtube-dl (youtube_dl/extractor/youtube.py):
'uploader_id': self._search_regex(r'/(?:channel|user)/([^/?&#]+)', owner_profile_url, 'uploader id') if owner_profile_url else None,


После внесения такого изменения ошибка перестала появляться, видео загружаются.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы