如何在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
相关产品推荐
相关产品推荐

