使用 youtube-dl 搜索 Youtube 视频

2024-01-30

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

       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 有一个extract_info您可以使用的方法。您只需传递即可,而不是给它一个链接ytsearch:args像这样:

from requests import get
from youtube_dl import YoutubeDL

YDL_OPTIONS = {'format': 'bestaudio', 'noplaylist':'True'}

def search(arg):
    with YoutubeDL(YDL_OPTIONS) as ydl:
        try:
            get(arg) 
        except:
            video = ydl.extract_info(f"ytsearch:{arg}", download=False)['entries'][0]
        else:
            video = ydl.extract_info(arg, download=False)

    return video

此功能的一些重要事项:

  • 它适用于单词和网址
  • 如果您进行 YouTube 搜索,输出将是列表和字典。在这种情况下,它将返回第一个结果
  • 它将返回一个包含以下信息的字典:
    video_infos = search("30 sec video")
    
    #Doesn't contain all the data, some keys are not very important
    cleared_data = {
        'channel': video['uploader'],
        'channel_url': video['uploader_url'],
        'title': video['title'],
        'description': video['description'],
        'video_url': video['webpage_url'],
        'duration': video['duration'], #in seconds
        'upload_date': video['upload_data'], #YYYYDDMM
        'thumbnail': video['thumbnail'],
        'audio_source': video['formats'][0]['url'],
        'view_count': video['view_count'],
        'like_count': video['like_count'],
        'dislike_count': video['dislike_count'],
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 youtube-dl 搜索 Youtube 视频 的相关文章

随机推荐

  • 使用 TensorFlow Dataset API 和 flat_map 的并行线程

    我正在将 TensorFlow 代码从旧的队列接口更改为新的数据集API https www tensorflow org api docs python tf data Dataset 使用旧界面我可以指定num threads论证tf
  • Powershell 检查本地管理员凭据

    我正在尝试运行一个需要管理员输入才能处理某些事情的脚本 我不想让脚本运行失败 而是尝试捕获错误并将其扔回到凭据中 但我找不到可以将本地管理凭据传递给陷阱的命令 有人有什么可能有用的东西吗 我发现很多都会检查域凭据 但这是一个本地管理员帐户
  • Java Swing:显示 JPopupMenu 后插入符侦听器停止触发

    我正在制作一个文本编辑器应用程序 并且遇到了一个问题 在显示 JPopupMenu 后键入或粘贴文本时 我的 CaretListener 不会被触发 我已将 CaretListener 添加到 JTextArea textArea addC
  • 如何为 Next.js API 请求进行 HTTP 代理

    我在网上尝试了很多方法 但到目前为止没有任何效果 第一次尝试 src pages api proxy slug js import createProxyMiddleware from http proxy middleware Creat
  • CommonServiceLocator 的评论中的“环境”一词的含义是什么?

    我想猜测 环境容器 与它是静态类这一事实有关 但这只是一个猜测 或者这是指标准模式 也就是说 我真的需要从头到尾读完 GoF 的书 namespace Microsoft Practices ServiceLocation
  • 为什么 cmpsb 似乎不比较寄存器的值?

    我正在尝试以 16 位实模式编写 DOS 克隆 尽管一旦我完成了当前问题 我可能只会学习 32 位汇编 我的问题过去一直受到负面回应 但这是最后一次 恐怕我确实需要咨询这个网站 改进我之前的问题 我付出了更多努力来了解有关汇编代码中的指针和
  • 如何使用 ffmpeg 降低多个 JPEG 图像文件的质量?

    我想降低当时一堆图像的质量 和 q v x其中 x 是 1 到 30 之间的数字 数字越大 质量越差 即使使用 我也能节省很多空间x 1 现在 当涉及到处理多个文件时 我陷入了困境 我尝试过这两个批处理文件 mkdir processed
  • 获取 Facebook 公共页面评级和评论

    我不是某些页面的所有者 但我想访问页面评论和评级 每次访问时我都会得到空数据集 gt http https graph facebook com 102227700571 tabs reviews access token fb oauth
  • 在 PowerPoint 中从编辑模式下的按钮调用宏

    我正在尝试编写一个可以在 PowerPoint 2007 2010 的编辑模式下调用的 vba 宏 我可以轻松地将命令按钮添加到演示文稿中 但是 只能在幻灯片模式下单击此按钮来触发 vba 宏 但是 我想做的是让此按钮在编辑模式下触发关联的
  • 如何在 Grails 上使用 LDAP 插件?

    我正在开始一个关于 Groovy 和 Grails 的新项目 我现在正在处理身份验证部分 因为我们有一个 LDAP 服务器 所以我想使用 LDAP 进行身份验证 我开始设置我的环境 我正在使用 SpringSource Tool Suite
  • JSP编译期间出现'tmpFile.renameTo(classFile)'的原因

    我正在使用 Jetty 6 服务器 有时会出现此异常 java io IOException tmpFile renameTo classFile failed at org apache jasper compiler SmapUtil
  • 如何知道应用程序是由调试器 (Visual Studio) C# 启动的

    在我的 C 代码中 我想知道应用程序是否已由调试器 在我的例子中为 VisualStudio 启动 有谁知道如何获取这些信息 TIA 系统 诊断 调试器 IsAttached http msdn2 microsoft com en us l
  • CakePHP2 中的多态关联

    我有3个模型 Page Course and Content Page and Course包含元数据和Content包含 HTML 内容 Page and Course两者都有很多Content Content属于Page and Cou
  • 使用 Ramda 在循环中从多个数组中取出前 X 个总项目

    我有一个数组数组 想编写一个返回顶部的函数x项目数 通过按顺序从每个数组中获取项目 这是我所追求的一个例子 const input 1a 2a 3a 4a 5a 1b 2b 3b 4b 5b 1c 2c 3c 4c 5c 1d 2d 3d
  • 常见的日志记录 jar 与 Apache 轴 Soap 客户端冲突

    我在尝试使用 axis 调用 SOAP Web 服务时遇到此异常 基本上我已经写了一个轴客户端 org apache commons discovery DiscoveryException Class org apache commons
  • 了解 Zeromq Java 绑定

    我正在研究 Zeromq 作为 Java 项目中的消息传递解决方案 但我发现有关 Java 绑定的说明有点难以遵循 http www zeromq org bindings java http www zeromq org bindings
  • C# 获取非托管 dll 的版本

    我正在从托管 c 代码调用非托管 dll 并想检查我正在调用正确的版本 我尝试加载程序集 然后获取资源文件 然后获取版本 的代码是 cur version Assembly LoadFile X Workspace yreceipts po
  • 等待用户从终端输入 R

    当从命令行运行我的脚本作为 Rscipt myscript R 时 我能够等待 R 中的用户输入 如下所示并从 stdin 读取输入 cat Enter word word lt readLines file stdin 1 print w
  • 使用 .cssRules 访问跨域样式表

    当我尝试访问外部域上托管的某些 CSS 文件时 我在 Firebug 中收到此错误 Security error code 1000 rules styleSheets i cssRules 我正在使用的代码是 document ready
  • 使用 youtube-dl 搜索 Youtube 视频

    我正在尝试构建一个 Discord 音乐机器人 我需要使用用户给出的关键字搜索 YouTube 目前我知道如何从网址播放 loop loop or asyncio get event loop data await loop run in