gpt4 book ai didi

youtube - 如何在不使用搜索的情况下查找 youtube channel 当前是否正在直播?

转载 作者:行者123 更新时间:2023-12-03 05:14:26 25 4
gpt4 key购买 nike

我正在一个网站上工作以加载多个 YouTube channel 直播。起初,我试图找出一种不使用 youtube api 的方法来做到这一点,但决定让步。

要查找 channel 是否正在直播并获取我一直在使用的直播链接:

https://www.googleapis.com/youtube/v3/search?part=snippet&channelId={CHANNEL_ID}&eventType=live&maxResults=10&type=video&key={API_KEY}

但是,最小配额为 10000,每次搜索值(value) 100,因此在超出配额限制之前,我只能进行大约 100 次搜索,这根本没有帮助。我最终在大约 10 分钟内超过了配额限制。 :(

有没有人知道使用尽可能少的配额点来确定 channel 当前是否正在直播以及直播链接是什么的更好方法?

我想每 3 分钟为每个用户重新加载一次 youtube 数据,将其保存到数据库中,并使用我自己的 api 显示信息以节省服务器资源和配额点。

希望有人能很好地解决这个问题!

如果对链接无能为力,只需确定用户是否在线而无需每次使用 100 个配额点,这将是一个很大的帮助。

最佳答案

由于该问题仅指定不应使用 Search API 配额来确定 channel 是否正在流式传输,因此我想我会分享一种解决方法。与简单的 API 调用相比,它可能需要更多的工作,但它可以将 API 配额使用量减少到几乎为零:
我使用了一个简单的 Perl GET请求检索 Youtube channel 的主页。在直播的 channel 页面的 HTML 中可以找到几个独特的元素:

The number of live viewers tag, e.g. <li>753 watching</li>. The LIVE NOWbadge tag: <span class="yt-badge yt-badge-live" >Live now</span>.


要确定某个 channel 当前是否正在直播,需要通过简单的匹配来查看唯一的 HTML 标记是否包含在 GET 请求结果中。类似: if ($get_results =~ /$unique_html/) (Perl)。然后,可以只对实际正在流式传输的 channel ID进行API调用,以获取该流的视频ID。
这样做的好处是您已经知道 channel 正在流式传输,而不是使用数千个配额点来查找。我的测试脚本通过查看以下 HTML 代码成功识别 channel 是否正在流式传输: <span class="yt-badge yt-badge-live" > (注意 Youtube 代码中奇怪的额外空格)。
我不知道 OP 正在使用什么语言,或者我会帮助处理该语言的基本 GET 请求。我使用 Perl,并包含浏览器标题、用户代理和 cookie,看起来像正常的计算机访问。
Youtube的 robots.txt似乎不禁止抓取 channel 的主页,只禁止抓取 channel 的社区页面。
让我知道您对这种方法的优缺点的看法,如果您发现缺陷,请评论可能改进的地方而不是不喜欢的地方。谢谢,编码愉快!
2020 年更新 yt-badge-live似乎已被弃用,它不再可靠地显示 channel 是否正在流式传输。相反,我现在检查此字符串的 HTML: {"text":" watching"}如果我得到匹配,则意味着该页面正在流式传输。 (非流媒体 channel 不包含此字符串。)再次注意奇怪的额外空格。因为我使用的是 Perl,所以我也避开了所有的引号。

关于youtube - 如何在不使用搜索的情况下查找 youtube channel 当前是否正在直播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56385532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com