使用Kivy与Pytube开发App,能否无需YouTube Data API获取视频播放量与点赞数?
解决方案:无需额外第三方库/YouTube Data API获取播放量、点赞数
方法1:基于Pytube内置HTML解析提取
Pytube的YouTube对象会获取视频页面的原始HTML,你可以直接通过正则匹配从中提取播放量、点赞数,无需额外安装依赖:
from pytube import YouTube import re def get_video_stats(url): yt = YouTube(url) html_content = yt.watch_html # 提取播放量 view_match = re.search(r'"viewCount":"(\d+)"', html_content) view_count = view_match.group(1) if view_match else "无法获取" # 提取点赞数 like_match = re.search(r'"likeCount":"(\d+)"', html_content) like_count = like_match.group(1) if like_match else "无法获取" return {"播放量": view_count, "点赞数": like_count}
调用示例:
stats = get_video_stats("https://www.youtube.com/watch?v=xxx") print(stats["播放量"], stats["点赞数"])
注意:YouTube页面结构可能会迭代更新,若某天匹配失效,需要检查最新HTML中数据的格式,调整正则表达式即可。
方法2:尝试Pytube的metadata属性(部分版本支持)
部分新版本的Pytube中,YouTube对象的metadata属性已封装了这类元数据,可直接读取:
yt = YouTube("你的视频链接") view_count = yt.metadata.get("viewCount", "无法获取") like_count = yt.metadata.get("likeCount", "无法获取")
这种方式更稳定,无需自己写正则,建议优先尝试,若你的Pytube版本不支持再用方法1。
整合到Kivy应用
将上述逻辑封装后,在Kivy的UI回调中调用,更新对应组件的显示内容即可:
# 假设你有Kivy输入框和标签组件 def on_fetch_stats(self): video_url = self.link_input.text.strip() if not video_url: return stats = get_video_stats(video_url) self.view_count_label.text = f"播放量:{stats['播放量']}" self.like_count_label.text = f"点赞数:{stats['点赞数']}"
内容的提问来源于stack exchange,提问作者mrlinbr
相关产品推荐
相关产品推荐

