You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python实现的YouTube订阅数检测器中检测变量变化

YouTube订阅数检测器优化方案

现有代码问题

你当前的代码仅能循环打印订阅数,但缺少历史订阅数记录,无法对比判断是否有新订阅者;同时无限高频请求API容易触发YouTube的配额限制,也没有异常处理机制应对请求失败的情况。

优化后的实现代码

import urllib.request
import json
import time
import lightsOff  # 假设该模块用于触发订阅变化提醒(如灯光提示)

# 配置参数
CHANNEL_ID = "UCFCXay6rKDhsL41Zq-q9P-A"
API_KEY = "Api_Key"
# 存储上一次的订阅数,作为对比基准
previous_subs = None

def get_subscriber_count():
    """封装订阅数获取逻辑,添加异常处理"""
    try:
        url = f"https://www.googleapis.com/youtube/v3/channels?part=statistics&id={CHANNEL_ID}&key={API_KEY}"
        response = urllib.request.urlopen(url)
        data = json.loads(response.read())
        return int(data["items"][0]["statistics"]["subscriberCount"])
    except Exception as e:
        print(f"订阅数获取失败: {str(e)}")
        return previous_subs

# 初始化基准订阅数
previous_subs = get_subscriber_count()
print(f"初始订阅数: {previous_subs}")

while True:
    current_subs = get_subscriber_count()
    if current_subs is None:
        time.sleep(60)  # 请求失败时延迟1分钟重试
        continue
    
    if current_subs > previous_subs:
        # 检测到新订阅者,触发提醒
        print(f"新增订阅!当前订阅数: {current_subs}")
        lightsOff.trigger_alert()  # 替换为你实际的提醒函数
        previous_subs = current_subs
    elif current_subs < previous_subs:
        # 处理订阅数减少的情况
        print(f"订阅数减少!当前订阅数: {current_subs}")
        previous_subs = current_subs
    else:
        print(f"订阅数无变化: {current_subs}")
    
    # 控制请求间隔,避免API配额耗尽(建议至少1分钟)
    time.sleep(60)

核心改进说明

  • 历史值对比:通过previous_subs存储基准订阅数,实现变化检测
  • 异常容错:捕获请求和解析过程中的错误,避免程序直接崩溃
  • 频率控制:加入time.sleep(60),符合YouTube API的配额限制要求
  • 分支逻辑:明确区分订阅数增加、减少、无变化三种场景,新增订阅时触发提醒动作

内容的提问来源于stack exchange,提问作者bhogan2017

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 05:25:37