我想把握GoogleDeveloper最新视频上传的日期。问题是我不确定如何抓住它。
我正在尝试创建一个程序,每次GoogleDeveloper的频道上传视频时,Pi 3面包板上的LED灯都会亮起。为此,我正在尝试通过程序检查其最新视频的上传日期是否已更改。
这是我到目前为止的代码
import os
import google_auth_oauthlib.flow
import googleapiclient.discovery
import googleapiclient.errors
scopes = ["https://www.googleapis.com/auth/youtube.readonly"]
def main():
# Disable OAuthlib's HTTPS verification when running locally.
# *DO NOT* leave this option enabled in production.
os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"
api_service_name = "youtube"
api_version = "v3"
client_secrets_file = "/home/pi/Documents/client_secret_952042969529-4pdbg60vq9f0lnmsl7cahah9mrrts1pa.apps.googleusercontent.com.json"
# Get credentials and create an API client
flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
client_secrets_file, scopes)
credentials = flow.run_console()
youtube = googleapiclient.discovery.build(
api_service_name, api_version, credentials=credentials)
request = youtube.playlistItems().list(
part="snippet",
maxResults=1,
playlistId="UU_x5XG1OV2P6uZZ5FSM9Ttw"
)
response = request.execute()
print(response)
print(response.items);
if __name__ == "__main__":
main()
我认为,如果我打印“ response.items”,就可以用这种方式获取日期,但它只会打印出<built-in method items of dict object at 0x75a14ed0>
答案 0 :(得分:0)
您要查找的video ID位于response.items[0].snippet.resourceId.videoId
,而published date time位于response.items[0].snippet.publishedAt
。您的代码还应该检查response.items
是否为空(出于某种原因)。
另一方面,我重申了我以前的answer之一,建议您注意以下事实:查询频道上载列表的PlaylistItems endpoint会产生一个items列表,按上传日期排序(从最新到最新)。但是items本身包含附加的publishedAt日期时间属性。
publishedAt (日期时间)
视频发布的日期和时间。 请注意,此时间可能不同于视频的上传时间。例如,如果视频作为私人视频上传,然后在以后公开,则此属性将指定时间该视频已公开。
如果您要获取特定频道的最新发布的视频,则应查询Search endpoint,将适当的参数传递给channelId=...
,{{1} }和maxResults=1
。
更新:根据this,应以以下方式访问order=date
:
response.items[...].snippet.publishedAt
答案 1 :(得分:0)
第1步:获取频道的上传播放列表ID
通过contentDetails
部分通过https://developers.google.com/youtube/v3/docs/channels/list。
第2步:在播放列表中获取视频
通过snippet
部分通过https://developers.google.com/youtube/v3/docs/playlistItems/list。
获取第一项的视频ID。
第3步:获取包含发布日期的视频信息
通过snippet
部分通过https://developers.google.com/youtube/v3/docs/videos/list。
我的回答不仅仅取决于代码,因此您将需要一些时间才能使其正常工作。但是请知道这就是我的生产系统中的工作方式。