YouTube API v3: поиск видео и загрузка его в плейлист - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь собрать три отдельных кода, которые я нашел в качестве примеров в https://developers.google.com/youtube/v3/docs:

Я могу успешно запустить коды отдельно, но не в состоянии объединить их. В частности: после того, как список воспроизведения создан, код должен получить идентификатор списка воспроизведения. Аналогичным образом, когда найдено видео, соответствующее критериям поиска, для добавления его в список воспроизведения необходим идентификатор видео. Я использовал 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()

Из ответа поисковой части у меня есть следующее (отредактировано для удаления ненужных деталей):

{'kind ':' youtube # searchListResponse ',' etag ':' 'longetag' ',' nextPageToken ':' anotherlongtext = ',' pageInfo ': {' totalResults ': 1,' resultsPerPage ': 50},' items ': [ {'kind': 'youtube # searchResult', 'etag': '' theetagofthevideodfound "',' id ': {' kind ':' youtube # video ',' videoId ':' THISISWHATIWANT '},' snippet ': { 'publAt': '2020-02-22T19: 33: 03.000Z', 'channelId': 'MyChannelTitle', 'title': 'TitleOfTheVideo', 'description': '', 'thumbnails': {VideoThumbnails}}, ' channelTitle ':' MyChannelTitle ',' liveBroadcastContent ':' none '}}]}

Я пробовал с vid = response [' videoId '] vid = response [' id ']

Но никто из них не работал

Ответы [ 2 ]

0 голосов
/ 23 февраля 2020

Просто разобрался, как это работает. Помещение этого куска кода между запросами делает это. Публикация здесь на случай, если кто-то столкнется с тем же вопросом:

for search_result in response.get('items', []):
      videos.append('%s (%s)' % (search_result['snippet']['title'],
                                 search_result['id']['videoId']))
      vid=search_result['id']['videoId']  
0 голосов
/ 19 февраля 2020

Ответ о вставке элемента в список воспроизведения должен возвращать ресурс списка воспроизведения , который содержит идентификатор списка воспроизведения

https://developers.google.com/youtube/v3/docs/playlists#resource

Аналогично при поиске видео вы получаете search_resource в ответ , который содержит список видео с идентификаторами

https://developers.google.com/youtube/v3/docs/search#resource

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...