如何获取频道最新视频的上传日期?

时间:2019-07-19 00:36:51

标签: python python-2.7 youtube-api youtube-data-api

我想把握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>

2 个答案:

答案 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

我的回答不仅仅取决于代码,因此您将需要一些时间才能使其正常工作。但是请知道这就是我的生产系统中的工作方式。