Joe*_*oel 4 python youtube youtube-api python-3.x
我正在尝试创建一个脚本,每当 YouTube 频道上传视频时都会通知我。就像订阅按钮一样
我尝试过的:
我尝试寻找与此相关的文档,并且在此过程中还学习了如何在 Google Cloud 中设置 YouTube V3 API。我发现的最接近的库是python-youtube和youtube-channel-subscribe。
到目前为止我的进展:
我已经尝试过 youtube-channel-subscribe 但问题是它会打开浏览器然后订阅,而这将不起作用,因为我将在服务器上运行它。我已经浏览了 python-youtube 文档,我认为它没有这方面的功能(我可能是错的)
任何帮助,将不胜感激。
这可以通过简单地使用 2 个内置 python 库来完成:requests
和re
。基本上,我们想要监控 YouTube 频道的最新视频。
我们可以通过以下几行代码获取任意 YouTube 频道的最新视频的标题、上传日期和观看次数:
import requests
import re
channel = "https://www.youtube.com/user/PewDiePie"
html = requests.get(channel + "/videos").text
info = re.search('(?<={"label":").*?(?="})', html).group()
date = re.search('\d+ \w+ ago.*seconds ', info).group()
print(info)
print(date)
Run Code Online (Sandbox Code Playgroud)
输出:
Reacting To Strangers Secrets by PewDiePie 4 hours ago 11 minutes, 54 seconds 584,062 views
4 hours ago 11 minutes, 54 seconds
Run Code Online (Sandbox Code Playgroud)
您可以将视频的信息(将相对日期转换为绝对日期)存储在数据库中,并且每当info
标题不存在于数据库中时,或者date
在减去当前日期时,其时间晚于上一个日期数据库中的日期,则新视频已上传。
YouTube 视频的日期格式已更改,因此上述日期的正则表达式不再有效。然而,info
仍然会包含它。
这是还获取最新视频 url 的版本:
import requests
import re
channel = "https://www.youtube.com/user/PewDiePie"
html = requests.get(channel + "/videos").text
info = re.search('(?<={"label":").*?(?="})', html).group()
url = "https://www.youtube.com/watch?v=" + re.search('(?<="videoId":").*?(?=")', html).group()
print(info)
print(url)
Run Code Online (Sandbox Code Playgroud)
输出:
Lot of big changes lately.. by PewDiePie 6 hours ago 22 minutes 723,960 views
https://www.youtube.com/watch?v=psHriqExm6U
Run Code Online (Sandbox Code Playgroud)