如何使用关键字而不是带有youtube-dl和 discord.py 的网址?

我正在写一个万能的机器人,基本上我想输入命令,然后一个歌曲名称示例:它将搜索youtube,弹出的第一个视频将下载它的音频?play song-name


我让机器人使用普通链接,但如果我必须获取链接来播放音乐,它就会破坏目的


client = discord.Client()

@client.event

async def on_message(message):

    ydl_opts = {

            'format': 'beataudio/best',

            'postprocessors': [{

                'key': 'FFmpegExtractAudio',

                'preferredcodec': 'mp3',

                'preferredquality': '192'

            }]

        }

     with youtube_dl.YoutubeDL(ydl_opts) as ydl:

          print("Downloading audio now\n")

          url: str = message.content.replace('?play ', '')

          print(url)

          ydl.download([url])

我以前没有使用youtube-dl,所以我不知道它是如何工作的。


猛跑小猪
浏览 101回答 1
1回答

慕妹3146593

获得不和谐搜索查询后,您可以使用:import youtube_dl  # youtube-dl-2020.3.1import traceback, os, jsonfrom youtube_search import YoutubeSearch  # pip install youtube_search """sources :https://github.com/ytdl-org/youtube-dl/blob/master/README.md#embedding-youtube-dlhttps://stackoverflow.com/questions/23727943/how-to-get-information-from-youtube-dl-in-python/31184514#31184514https://stackoverflow.com/a/43143553/797495"""search = 'carlos paiao playback'ydl_opts = {    'format': 'beataudio/best',    'postprocessors': [{        'key': 'FFmpegExtractAudio',        'preferredcodec': 'mp3',        'preferredquality': '192'    }]}yt = YoutubeSearch(search, max_results=1).to_json()try:    yt_id = str(json.loads(yt)['videos'][0]['id'])    yt_url = 'https://www.youtube.com/watch?v='+yt_id    with youtube_dl.YoutubeDL(ydl_opts) as ydl:        ydl.download([yt_url])        info = ydl.extract_info(yt_url)        songname = info.get('title', None) + "-" + yt_id + ".mp3"        if os.path.isfile(songname):            print("Song Downloaded: " + songname)        else:            print("Error: " + songname)except:    pass    print(traceback.print_exc())    print("no results")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python