Youtube API v3:搜索视频并将其上传到播放列表

我试图把我在 https://developers.google.com/youtube/v3/docs 中发现的三个单独的代码放在起作为示例:

我能够成功地单独运行代码,但无法将它们组合在一起。具体而言:创建播放列表后,代码需要获取播放列表 ID。同样,当找到符合搜索条件的视频时,需要视频 ID 才能将其添加到播放列表中。我用过Python。拜托,任何人都可以帮忙吗?

这是我的代码:

import os


import google_auth_oauthlib.flow

import googleapiclient.discovery

import googleapiclient.errors


scopes = ["https://www.googleapis.com/auth/youtube.force-ssl"]


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 = "client_secrets.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.search().list(

        part="snippet",

        forMine=True,

        maxResults=50,

        order="date",

        q="searchcriteria",

        type="video"

    )

    response = request.execute()


    print(response)

    vid=response['videoId']


    request2 = youtube.playlistItems().insert(

        part="snippet",

        body={

          "snippet": {

            "playlistId": "myplaylistIdcomeshere",

            "resourceId": {

              "videoId": "vid",

              "kind": "youtube#video",

              "playlistId": "myplaylistIdcomeshereagain"

            },

            "position": 0

          }

        }

    )


    respons2 = request2.execute()


    print(response2)


if __name__ == "__main__":

    main()



九州编程
浏览 189回答 2
2回答

慕标5832272

将项目插入播放列表的响应应返回包含播放列表 ID 的播放列表资源https://developers.google.com/youtube/v3/docs/playlists#resource同样,当您搜索视频时,您会收到一个search_resource作为响应,其中包含带有ID的视频列表。https://developers.google.com/youtube/v3/docs/search#resource

眼眸繁星

只是想出了一个可行的方法。将这段代码放在请求之间可以做到这一点。在这里发帖,以防其他人遇到同样的问题:for search_result in response.get('items', []):       videos.append('%s (%s)' % (search_result['snippet']['title'],                                  search_result['id']['videoId']))       vid=search_result['id']['videoId']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python