首页 > 编程问答 >按订阅者数量有效过滤 YouTube API 搜索结果

按订阅者数量有效过滤 YouTube API 搜索结果

时间:2024-09-25 04:24:12浏览次数:11  
标签:python google-api youtube-api youtube-data-api quota

我正在使用 YouTube 数据 API 搜索满足特定订阅者数量范围(例如,订阅者数量在 100,000 到 500,000 之间)的频道。但是,该 API 会消耗大量配额单位,因为它会在返回一些合适的渠道之前搜索多个渠道,包括许多不符合我的条件的渠道。

例如,我使用 youtube.search().list 发出搜索请求根据关键字查找频道。检索结果后,我使用 youtube.channels().list 方法手动检查每个频道的订阅者数量,这进一步消耗了配额。如果我搜索 10 个频道,只有 3 个符合订阅者计数范围,则我使用了 10 个单位,其中 7 个被浪费在目标范围之外的频道上。

这是一个最小的可重现示例:

python

import requests

API_KEY = 'YOUR_API_KEY'

def search_youtube(query, max_results=10):
    url = 'https://www.googleapis.com/youtube/v3/search'
    params = {
        'part': 'snippet',
        'q': query,
        'type': 'channel',
        'maxResults': max_results,
        'key': API_KEY
    }
    response = requests.get(url, params=params)
    return response.json()

def get_channel_details(channel_id):
    url = 'https://www.googleapis.com/youtube/v3/channels'
    params = {
        'part': 'statistics',
        'id': channel_id,
        'key': API_KEY
    }
    response = requests.get(url, params=params)
    return response.json()

# Sample query and channel processing
query = 'Minecraft'
search_results = search_youtube(query)

for item in search_results.get('items', []):
    channel_id = item['id']['channelId']
    channel_details = get_channel_details(channel_id)
    subscriber_count = int(channel_details['items'][0]['statistics']['subscriberCount'])

    if 100000 <= subscriber_count <= 500000:
        print(f"Channel: {item['snippet']['title']}, Subscribers: {subscriber_count}")

这里我在 Pastebin 上的完整代码的链接。

问题: 是否有更有效的方法从一开始就按订阅者数量过滤频道,或者最大限度地减少 API 配额使用?我可以调整搜索参数或使用不同的方法来减少不必要的 API 调用数量吗?

任何建议或最佳实践将不胜感激!


很遗憾,没有直接的方法可以按订阅者数量范围筛选 YouTube 数据 API v3 中的频道。你遇到的限制是 API 本身的固有限制。

但是,以下是一些可以最大程度地减少配额使用量并提高流程效率的技巧:

  1. 缓存频道详细信息: 由于订阅者数量不会经常剧烈波动,因此你可以实现一个系统来缓存频道详细信息(尤其是订阅者数量)一段时间。这样,你无需对每个搜索都调用 youtube.channels().list API,从而节省了大量配额。你可以使用数据库或内存缓存(如 Redis)来存储此信息。

  2. 缩小搜索范围: 虽然你无法按订阅者数量进行筛选,但你可以使用其他更精确的搜索运算符来优化查询并减少不相关结果的数量。尝试在查询中包含其他相关关键字、排除特定频道或针对特定频道类型。

  3. 分页: 如果你预计搜索结果会很多,请务必实现分页以避免检索不必要的数据。 youtube.search().list 方法允许你使用 pageToken 参数检索结果的特定页面。

  4. 考虑替代数据源: 如果你需要非常具体的数据或想要完全避免配额限制,你可以考虑使用网络抓取(在遵守 YouTube 的服务条款的前提下)或探索提供此类数据的第三方 API 或服务。但是,这些方法有其自身的复杂性和局限性。

  5. 请求更高的配额: 如果你的应用程序需要更高的配额,你可以向 Google 申请增加你的 YouTube 数据 API 配额。

请记住,YouTube 数据 API 主要用于检索和展示 YouTube 内容,而不是用于大规模数据挖掘或分析。如果你发现自己经常遇到配额限制,则可能需要重新评估你的方法和要求。

标签:python,google-api,youtube-api,youtube-data-api,quota
From: 79020278

相关文章

  • Python升级后找不到uwsgi模块
    我的家庭服务器上运行着Flask/UWSGI应用程序。最近的Ubuntu升级删除了Python3.10并安装了Python3.12。我已经创建了一个新的venv并安装了该应用程序,但它不再运行。在UWSGI日志中,它显示:ModuleNotFoundError:Nomodulenamed'wsgi'我的应用程序称为sieve,工作......
  • Chameleon 模板不替换 python 变量
    我是使用FastAPI和Python的Chameleon新用户。我在模板中有以下代码片段:${ag.name}在python代码中,我有一个类定义为:classAgeGroupInfo:definit(self,名称:str,检查:str):self.name=姓名self.checked=check视图字典包含AgeGroupInfo对象的列表......
  • 如何在 Python 中获得类似 Cron 的调度程序?
    我正在寻找一个Python库,它将提供at和cron类似的功能。我很想有一个纯Python解决方案,而不是依赖于安装在盒子上的工具;这样我就可以在没有cron的机器上运行。对于那些不熟悉cron的人:您可以根据如下表达式来安排任务:02**7/usr/bin/run......
  • 我找不到一种方法让我的 python print 语句在几秒钟后自行删除
    我正在尝试制作一款基于文本的冒险游戏,我希望能够让文本自行删除。举个例子,游戏将使用print()语句打印文本,5秒后文本将被删除或对玩家隐藏。我试图找到其他人与此问题相关的问题,并且我找不到任何信息。我不知道该使用什么命令或与之相关的任何内容,请帮忙。Ivetriedtof......
  • 在 python 中可视化四元数
    我在无人机上安装了一个IMU,每0.1秒收集一次四元数数据(w,x,y,z)。现在我想将四元数数据与实际的无人机方向(视频数据)进行比较。所以我想创建某种盒子对象来显示基于四元数数据的方向。我实现了以下教程,将四元数转换为欧拉以进行可视化:https://www.youtube.com/watch?......
  • 有没有办法在 python 中获取特定的键盘输入
    我正在为学校开发一个项目,它目前有行输入(“按Enter继续”),它可以工作,但只要用户按Enter键程序继续,输入是什么并不重要,而且我我希望它仅在按下特定键时才起作用。我查了一下,曾经有一个键盘模块,但由于某种莫名其妙的原因它被删除了,那么还有其他方式获取输入吗?你绝对可以......
  • python+flask计算机毕业设计基于微信小程序的法律问题咨询系统设计与实现(程序+开题+论
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网的飞速发展和智能手机的普及,人们获取信息和解决问题的途径日益多样化。在法律服务领域,传统的线下咨询方式已难以满足公众日益增......
  • python+flask计算机毕业设计基于人脸识别的医疗保险系统的设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着科技的飞速发展和人口老龄化的加剧,医疗保险系统面临着前所未有的挑战与机遇。传统医疗保险管理方式依赖于人工审核与纸质记录,不仅效率......
  • python+flask计算机毕业设计基于微信小程序的河南省美食分享平台(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在移动互联网时代,智能手机和社交媒体已成为人们日常生活不可或缺的一部分。微信小程序作为腾讯推出的一种轻量级应用形态,凭借其无需安装、......
  • python+flask计算机毕业设计基于微信小程序的网络文学管理平台(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网的迅猛发展,网络文学已成为当代文化生活中不可或缺的一部分,它不仅丰富了人们的阅读体验,还促进了文学创作的多元化与普及化。然而......