видео не хочет загружаться из за возрастного ограничения youtube-dl
Я пишу своего бота для музыки и столкнулся с проблемой, YouTube-dl не хочет загружать видео с возрастным ограничением, из за чего не загружается весь плейлист. вопрос состоит вот, в чём: как пропускать треки, которые не могут быть загружены?
код:
@client.command()
async def play(ctx, arg):
global vc
try:
voice_channel = ctx.message.author.voice.channel
vc = await voice_channel.connect()
await ctx.send("tracks are loading")
except:
pass
try:
if vc.is_playing():
await ctx.send(f'{ctx.message.author.mention}, the music is already playing.')
else:
with YoutubeDL(YDL_OPTIONS) as ydl:
info = ydl.extract_info(arg, download=False)
URL = info['formats'][0]['url']
vc.play(discord.FFmpegPCMAudio(source=URL, **FFMPEG_OPTIONS))
except:
await ctx.send('Unknown error')
while vc.is_playing():
await asyncio.sleep(1)
if not vc.is_paused():
await vc.disconnect()
ошибка:
[youtube] Downloading just video VAotPZ815wE because of --no-playlist
[download] Downloading video 187 of 258
[youtube] E3SDHkCTg-M: Downloading webpage
[youtube] E3SDHkCTg-M: Refetching age-gated info webpage
WARNING: unable to download video info webpage: HTTP Error 410: Gone
[youtube] Downloading just video E3SDHkCTg-M because of --no-playlist
2ERROR: Sign in to confirm your age
This video may be inappropriate for some users.
Ответы (2 шт):
Один из вариантов обхода этого ограничения — получение доступа к видео с аккаунта без возрастных ограничений. Чтобы youtube-dl могла зайти под аккаунтом, нужно сохранить cookie-файлы авторизации и передать их в параметры.
Чтобы извлечь файлы cookie из браузера, используйте любое соответствующее расширение браузера для экспорта файлов cookie. Например, Get cookies.txt (для Chrome) или cookies.txt (для Firefox).
Далее укажите путь к полученному .txt-файлу в вашем словаре YDL_OPTIONS
YDL_OPTIONS = {. . ., 'cookiefile': 'cookies.txt', . . .}
И все заработает
Советую использовать yt-dlp так как он активно развивается и вероятность ложных срабатываний будет намного меньше.