Помощь с Youtube Search в боте для Discord

qgboi

Новичок
Пользователь
Сен 24, 2021
2
0
1
Здравствуйте. У меня есть рабочий код для команды !play, но она работает по ссылке. Хочу в эту функцию вставить команду для поиска по названию. Представляю себе это через команду if not voice.play, но видимо этот метод нерабочий, т.к пишет, что ссылка не валидная. Подскажите, что тут нужно подправить, чтобы поиск по названию заработал
Код:
async def play(video_link, voice, message):
    ydl_opts = {'format': 'bestaudio', 'noplaylist': 'True'}
    FFMPEG_OPTIONS = {'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5', 'options': '-vn'}
    with YoutubeDL(ydl_opts) as ydl:
        info = ydl.extract_info(video_link, download=False)
    print(info.get('title'))
    URL = info['formats'][0]['url']
    voice.play(FFmpegPCMAudio(URL, **FFMPEG_OPTIONS), after=lambda x=None: new_audio(voice, message))
    if message.content.startswith('!p') or message.content.startswith('!play'):
        embedVar = discord.Embed(title="__Сейчас играет__", description="", color=0xFF0000)
        embedVar.add_field(name="**Название**", value=info.get('title'), inline=False)
        embedVar.add_field(name="**Длительность**", value=info.get('duration'), inline=True)
        embedVar.add_field(name="**Дата загрузки**", value=info.get('upload_date'), inline=True)
        embedVar.set_thumbnail(url="https://s1.hostingkartinok.com/uploads/images/2021/09/9ebbb544a1d1d259e490ba7afc4f3a03.png")
        embedVar.set_footer(text="By QGBot")
        embedVar.set_author(name=message.author.display_name, icon_url=message.author.avatar_url)
    await message.channel.send(embed=embedVar)
    if not voice.play():
        query_string = urllib.parse.urlencode({
            "search_query": search
        })
        html_content = urllib.request.urlopen(
            "http://www.youtube.com/results?" + query_string
        )
        search_results = re.findall(r"watch\?v=(\S{11})", html_content.read().decode())
        voice.play(FFmpegPCMAudio("http://www.youtube.com/watch?v=" + search_results[0], **FFMPEG_OPTIONS), after=lambda x=None: new_audio(voice, message))


Код:
elif message.content.startswith('!play') or message.content.startswith('!p'):

    await join(message)

    voice = get(client.voice_clients, guild=message.channel.guild)

    msg = message.content[1:].split()

    video_link = msg[1]

    if not voice.is_playing():

        await play(video_link, voice, message)

    else:

        await message.channel.send('**^^ Добавлено в очередь ^^**')

        queue.append(video_link)
 
Последнее редактирование:

Форум IT Специалистов