使用Python检查YouTube视频列表是否仍然在线
我正在检查4个YouTube视频列表是否仍然在线。我知道其中一个是离线的,有时我想看看是否对其他人采取了任何行动。通过网络搜索并使用少量编码(我是一名初学者),我实现了以下目标:使用Python检查YouTube视频列表是否仍然在线,python,python-3.x,Python,Python 3.x,我正在检查4个YouTube视频列表是否仍然在线。我知道其中一个是离线的,有时我想看看是否对其他人采取了任何行动。通过网络搜索并使用少量编码(我是一名初学者),我实现了以下目标: import requests from pprint import pprint videos = ["id1","id2","id3","id4"] for i in videos: id_of_video = i
import requests
from pprint import pprint
videos = ["id1","id2","id3","id4"]
for i in videos:
id_of_video = i
your_api_key = 'myapi'
url = 'https://www.googleapis.com/youtube/v3/videos?id={}&key={}&part=status'.format(id_of_video, your_api_key)
url_get = requests.get(url)
pprint(url_get.json())
代码运行良好,我收到类似的消息(我只复制了两个结果):
其中一个在线,另一个不在线。太好了
但我想创建一个代码,不时为我检查它,并说:“这个视频ID不再可用”。但我不知道怎么做
我现在的主要任务是为每个视频ID打印一条消息!所以,让我们说:“ID1在线”和“ID2离线”
我想创建一个if语句来检查“url_get.json()”标记的结果,但它只保存最后一个视频ID
如果我跑
url_get.json()
我只从列表中获取最后一个ID。因此您想编写一个定期ping Youtube的程序。实现这一目标的最简单方法是
从时间导入睡眠
延迟:int=20
尽管如此:
#我在这儿
睡眠(延迟)
这将每20秒运行一次。
这里有很多问题
- 它永远运行
- 停止程序的唯一方法是单击Ctrl+C
- 也不会正好是20秒
如果你有时间的话,这绝对值得一试。你可以用字典来解释。首先,我将值设置为
None
。然后,在遍历字典时,我将值设置为返回的JSON。在程序结束时,我打印出IDx是离线还是在线的。不过,您可以对字典中的数据执行任何操作
import requests
from pprint import pprint
videos = {"id1": None, "id2": None, "id3": None, "id4": None}
for i in videos:
id_of_video = i
your_api_key = 'myapi'
url = 'https://www.googleapis.com/youtube/v3/videos?id={}&key={}&part=status'.format(id_of_video, your_api_key)
url_get = requests.get(url)
pprint(url_get.json())
videos[i] = url_get.json()
for video in videos:
if videos[video]["pageInfo"]["resultsPerPage"] == 0:
print(f"{video.upper()} is offline")
else:
print(f"{video.upper()} is online")
因此,您想
打印一条'message'
,只有如果您的json['pageInfo']['totalResult']
的值是==0
,您可以为此创建一个cron作业,或者创建一个bot来执行此操作you@Grismar对实际上,我想为每个视频ID打印一条消息!所以,让我们假设:“ID1在线”和“ID2离线”。如果服务器出现故障或系统关闭,那么这将无法工作,程序需要再次运行。最好为此作业创建cron作业谢谢,这是问题的一部分。但我的主要问题是:如何检查每个ID并为每个ID打印消息!所以,让我们假设:“ID1在线”和“ID2离线”。@CartesianCordinateSystem,请在开始之前仔细阅读问题answering@interferemadly,如果这回答了您的问题,请单击复选标记尝试执行此操作,但收到此错误:TypeError Traceback(最近一次呼叫上次)对于视频中的视频:-->14如果视频[videos][“pageInfo”][“resultsPerPage”]==0:15打印(f“{video.upper()}处于脱机状态”)16其他:类型错误:字符串索引必须是整数
@interferredly-fixed:)嘿,伙计,我不知道我是否遗漏了什么-正如我所说,我是一个初学者。仍在获取和错误:TypeError Traceback(最近一次调用last)在11 12中用于视频中的视频:-->13如果视频[video][“pageInfo”][“resultsPerPage”]==0:14打印(f“{video.upper()}处于脱机状态”)15 else:TypeError:“Response”对象不可订阅
现在应该修复了,我忘了将其转换为json
import requests
from pprint import pprint
videos = {"id1": None, "id2": None, "id3": None, "id4": None}
for i in videos:
id_of_video = i
your_api_key = 'myapi'
url = 'https://www.googleapis.com/youtube/v3/videos?id={}&key={}&part=status'.format(id_of_video, your_api_key)
url_get = requests.get(url)
pprint(url_get.json())
videos[i] = url_get.json()
for video in videos:
if videos[video]["pageInfo"]["resultsPerPage"] == 0:
print(f"{video.upper()} is offline")
else:
print(f"{video.upper()} is online")