如何在python中获取youtube频道上传视频时的通知

qyzbxkaa  于 2022-12-24  发布在  Python
关注(0)|答案(2)|浏览(187)

我正在尝试创建一个脚本,它会在YouTube频道上传视频时通知我。就像订阅按钮一样
我尝试过的:
我试着去找一个关于这个的文档,在这个过程中也学会了如何在Google Cloud中设置YouTube V3 API,我找到的最接近的库是python-youtubeyoutube-channel-subscribe
我目前的进展:
我试过youtube-channel-subscribe,但问题是它打开浏览器,然后订阅,这不会工作,因为我将在服务器上运行它.我已经看过python-youtube文档,我不认为它有这个功能(我可能是错的)
任何帮助都将不胜感激。

g6ll5ycj

g6ll5ycj1#

这可以通过使用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)

输出:

Reacting To Strangers Secrets by PewDiePie 4 hours ago 11 minutes, 54 seconds 584,062 views
4 hours ago 11 minutes, 54 seconds

您可以将视频的信息 (相对日期转换为绝对日期) 存储在数据库中,并且每当info带有数据库中不存在的标题,或者date带有从当前日期减去时晚于数据库中的最后日期的时间时,则已上载新视频。

更新

YouTube视频的日期格式发生了变化,因此上面的日期正则表达式不再有效,但是info仍然包含它。
下面是同样获得最新视频网址的版本:

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)

输出:

Lot of big changes lately.. by PewDiePie 6 hours ago 22 minutes 723,960 views
https://www.youtube.com/watch?v=psHriqExm6U
lzfw57am

lzfw57am2#

很简单,
1.查找您要监视的页面。

1.获取它的URL,然后用Python库Beautiful Soup. https://pypi.org/project/beautifulsoup4/抓取它。
1.列表项
1.为该文件的第一个版本创建一个Json文件(您可以使此操作非常简单,只需使用最新视频的名称)。
1.在您喜欢的任何时间间隔,再次调用python scraper进行比较
1.当JSON文件不同时,(如果最新的文件名与原始文件名不相同,则执行x)对Zapier https://zapier.com/进行API调用
1.让Zapier通过api调用在发生变化时向您发送短信。
上面的代码可以直接在文档中找到。如果你想要一个更完整的方法来抓取,这将绕过任何形式的封锁,从客户端网站,我会使用代理链接只是供参考。

相关问题