如何在python中的youtube频道上传视频时收到通知

Joe*_*oel 4 python youtube youtube-api python-3.x

我正在尝试创建一个脚本,每当 YouTube 频道上传视频时都会通知我。就像订阅按钮一样

我尝试过的:
我尝试寻找与此相关的文档,并且在此过程中还学习了如何在 Google Cloud 中设置 YouTube V3 API。我发现的最接近的库是python-youtubeyoutube-channel-subscribe

到目前为止我的进展:
我已经尝试过 youtube-channel-subscribe 但问题是它会打开浏览器然后订阅,而这将不起作用,因为我将在服务器上运行它。我已经浏览了 python-youtube 文档,我认为它没有这方面的功能(我可能是错的)

任何帮助,将不胜感激。

Ann*_*Zen 9

这可以通过简单地使用 2 个内置 python 库来完成:requestsre。基本上,我们想要监控 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)

  • @Joel 很高兴提供帮助。您可以使用 `url = "https://www.youtube.com/watch?v=" + re.search('(?&lt;="videoId":").*?(?=")', html) .group()` 获取最新视频的 url。 (2认同)