RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1570542
Accepted
Axaneron
Axaneron
Asked:2024-03-07 16:10:29 +0000 UTC2024-03-07 16:10:29 +0000 UTC 2024-03-07 16:10:29 +0000 UTC

获取新 YouTube 视频的链接

  • 772

我正在编写代码,其中一部分是发送有关某个频道的新 YouTube 视频(以及广播、短片)的通知的功能。我只需要一个链接和一个标题,不需要其他任何东西。我可以使用常规 bs4 来实现此目的,但我怀疑这是最佳解决方案。我确信这应该使用 YouTube API 来完成,但是,唉,我自己无法弄清楚。

python
  • 2 2 个回答
  • 151 Views

2 个回答

  • Voted
  1. Best Answer
    denisnumb
    2024-03-09T19:46:45Z2024-03-09T19:46:45Z

    图书馆将非常适合您的任务yt-dlp

    安装是这样的:

    pip install yt-dlp
    

    安装后,可以直接从控制台界面使用该库。

    格式:

    yt-dlp --arg-1 --arg-2 --arg-3 value <ссылка на канал/плейлист/видео>
    

    例如:

    yt-dlp --skip-download --print-json --flat-playlist https://www.youtube.com/@MrBeast/videos
    

    执行此命令后,运行的进程将返回有关频道上每个视频的简要信息。有名称和链接。

    当然,我不会列出所有参数,参数有很多,每个参数的描述可以在GitHub 存储库的README.md中找到。


    当然,您可以将它用作 Python 库:

    from yt_dlp import YoutubeDL
    
    
    options = {
        'extract_flat': True
    }
    
    def get_channel_videos(channel_url: str) -> list[dict[str, str]]:
        with YoutubeDL(options) as ydl:
            channel_data = ydl.extract_info(channel_url, download=False)
            
            return [
                {'title': video.get('title'), 'url': video.get('url')}
                for video in channel_data['entries']
            ]
    
    for video in get_channel_videos('https://www.youtube.com/@MrBeast/videos'):
        print(video['title'], video['url'])
    

    同样,该方法的输出格式extract_info非常庞大且复杂——在 Python 中json也是如此。dict

    第一次,为了进行更详细的分析,我建议将方法的结果上传到某个文件,并手动研究您可以从视频中了解到哪些有趣的事情。


    特别是对于您的任务,添加一个参数playlistend将接收到的视频数量限制为 10 个是有意义的,以免上传整个频道:

    options = {
        'extract_flat': True,
        'playlistend': 10
    }
    

    然后与旧列表进行比较,您可以看到哪些视频被添加到频道中

    • 2
  2. Максим
    2024-03-16T02:06:06Z2024-03-16T02:06:06Z

    在常规 bs4 的帮助下,这会更容易,因为你理解它(据我所知),而且,也许在时间方面更优化,因为你知道如何使用它。

    如果我是你,我就会这么做。

    • 1

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5