Python 3.x 使用Youtube dl搜索Youtube视频

Python 3.x 使用Youtube dl搜索Youtube视频,python-3.x,youtube,discord.py-rewrite,Python 3.x,Youtube,Discord.py Rewrite,我正在尝试构建一个Discord音乐机器人,我需要使用用户提供的关键字搜索YouTube。目前我知道如何从url播放 loop = loop or asyncio.get_event_loop() data = await loop.run_in_executor( None, lambda: ytdl.extract_info(url, download=not stream)) if "entries" in data:

我正在尝试构建一个Discord音乐机器人,我需要使用用户提供的关键字搜索YouTube。目前我知道如何从url播放

       loop = loop or asyncio.get_event_loop()
       data = await loop.run_in_executor( None, lambda: ytdl.extract_info(url, download=not stream))
       if "entries" in data:
            data = data["entries"][0]

        filename = data["url"] if stream else ytdl.prepare_filename(data)
        return cls(discord.FFmpegPCMAudio(filename, **ffmpeg_options), data=data)

我不确定youtube dl是否适合使用关键字搜索youtube URL。您可能应该看看这一点。

我不确定youtube dl是否适合使用关键字搜索youtube URL。你可能应该看看这一点。

Youtube\u DL有一个
extract\u info
方法可以使用。与其给它一个链接,您只需传递
ytsearch:args
如下:

从请求导入获取
从youtube\u dl导入YoutubeDL
YDL_选项={'format':'bestaudio','noplaylist':'True'}
def搜索(arg):
使用YoutubeDL(YDL_选项)作为YDL:
尝试:
获取(arg)
除:
video=ydl.extract_info(f“ytsearch:{arg}”,download=False)['entries'][0]
其他:
video=ydl.extract\u info(arg,download=False)
返回视频
此功能的几个重要方面:

  • 它同时适用于单词和URL
  • 如果进行youtube搜索,输出将是一个词汇列表。在这种情况下,它将返回第一个结果
  • 它将返回包含以下信息的词汇:
    video\u infos=搜索(“30秒视频”)
    #不包含所有数据,有些键不是很重要
    清除的\u数据={
    “频道”:视频[“上传器”],
    “频道url”:视频['uploader\u url'],
    “标题”:视频[“标题”],
    “说明”:视频[“说明”],
    “视频url”:视频[“网页url”],
    “持续时间”:视频[“持续时间],#以秒为单位
    “上传日期”:视频[“上传数据”],#YYYYDDMM
    “缩略图”:视频[“缩略图”],
    “音频源”:视频['formats'][0]['url'],
    “查看计数”:视频[“查看计数”],
    “like_count”:视频[“like_count”],
    “不喜欢计数”:视频[“不喜欢计数”],
    }
    

    • Youtube\u DL有一个
      extract\u info
      方法可以使用。与其给它一个链接,您只需传递
      ytsearch:args
      如下:

      从请求导入获取
      从youtube\u dl导入YoutubeDL
      YDL_选项={'format':'bestaudio','noplaylist':'True'}
      def搜索(arg):
      使用YoutubeDL(YDL_选项)作为YDL:
      尝试:
      获取(arg)
      除:
      video=ydl.extract_info(f“ytsearch:{arg}”,download=False)['entries'][0]
      其他:
      video=ydl.extract\u info(arg,download=False)
      返回视频
      
      此功能的几个重要方面:

      • 它同时适用于单词和URL
      • 如果进行youtube搜索,输出将是一个词汇列表。在这种情况下,它将返回第一个结果
      • 它将返回包含以下信息的词汇:
        video\u infos=搜索(“30秒视频”)
        #不包含所有数据,有些键不是很重要
        清除的\u数据={
        “频道”:视频[“上传器”],
        “频道url”:视频['uploader\u url'],
        “标题”:视频[“标题”],
        “说明”:视频[“说明”],
        “视频url”:视频[“网页url”],
        “持续时间”:视频[“持续时间],#以秒为单位
        “上传日期”:视频[“上传数据”],#YYYYDDMM
        “缩略图”:视频[“缩略图”],
        “音频源”:视频['formats'][0]['url'],
        “查看计数”:视频[“查看计数”],
        “like_count”:视频[“like_count”],
        “不喜欢计数”:视频[“不喜欢计数”],
        }