Я не понимаю ответ на playlistItems.list () - PullRequest
0 голосов
/ 06 мая 2020

Итак ... Я попытался выполнить playlistItems.list () в загружаемом плейлисте моего канала youtube. Он содержит 4 опубликованных c и 1 частное видео. Я отправил вывод функции на вывод терминала.

Сначала он показал мне это,

{'totalResults': 4, 'resultsPerPage': 5}

Затем он показал мне это, что (насколько я понимаю) дает 3 результата.

    [{'kind': 'youtube#playlistItem', 'etag':'"Dn5xIderbhAnUk5TAW0qkFFir0M/kbeAdMJuuMJKybAoShHt15UMefc"', 'id': 'VVV2aFJQcHFQSDBiMmRNT2E5bVp5MlVRLlRJc2QwTHJfN1Fr', 'contentDetails': {'videoId': 'TIsd0Lr_7Qk', 'videoPublishedAt': '2018-11-21T08:43:00.000Z'}}, 
{'kind': 'youtube#playlistItem', 'etag': '"Dn5xIderbhAnUk5TAW0qkFFir0M/wxIHQJwj6qBP1-axGt0aWmRpo6Y"', 'id': 'VVV2aFJQcHFQSDBiMmRNT2E5bVp5MlVRLjJHSm5ZbGJwZmRB', 'contentDetails': {'videoId': '2GJnYlbpfdA', 'videoPublishedAt': '2017-11-06T11:47:47.000Z'}}, 
{'kind': 'youtube#playlistItem', 'etag': '"Dn5xIderbhAnUk5TAW0qkFFir0M/pc9Jwgp5y3BrdjT85I6MOdggEpo"', 'id': 'VVV2aFJQcHFQSDBiMmRNT2E5bVp5MlVRLlBvMkhsVXVfNE1n', 'contentDetails': {'videoId': 'Po2HlUu_4Mg', 'videoPublishedAt': '2017-10-01T09:03:53.000Z'}}]

Отсутствующие видео не внесенные в список (я не знаю, выводит ли он это видео) и самое последнее видео publi c. Оба видео размещены / загружены после видео, перечисленных в терминале

Идентификатор плейлиста - UUvhRPpqPH0b2dMOa9mZy2UQ, если хотите.

Вот код

from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
import os
import pygame

CLIENT_SECRET_FILE = 'client_secret.json'
SCOPES = ['https://www.googleapis.com/auth/youtube.force-ssl']
os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"

flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET_FILE, SCOPES)
credentials = flow.run_console()
auth = build('youtube', 'v3', credentials=credentials)

api_key = "..."
oldId = "TIsd0Lr_7Qk"
chId = 'UCvhRPpqPH0b2dMOa9mZy2UQ'
youtube = build('youtube', 'v3', developerKey=api_key)


def insert_comment(auth, channel_id, video_id, text):
  insert_result = auth.commentThreads().insert(
    part="snippet",
    body=dict(
      snippet=dict(
        channelId=channel_id,
        videoId=video_id,
        topLevelComment=dict(
          snippet=dict(
            textOriginal=text
          )
        )
      )
    )
  ).execute()
  comment = insert_result["snippet"]["topLevelComment"]
  author = comment["snippet"]["authorDisplayName"]
  text = comment["snippet"]["textDisplay"]
  print("Inserted comment for %s: %s" % (author, text))


def get_channel_videos(channel_id):
   res = youtube.channels().list(id=channel_id,part='contentDetails').execute()
   playlist_id = res['items'][0]['contentDetails']['relatedPlaylists']['uploads']
   print(playlist_id)

   res = youtube.playlistItems().list(playlistId = playlist_id,part ='contentDetails', maxResults = 5).execute()
   for item in res:
       print(res[item])
   newId = res['items'][0]['contentDetails']['videoId']
   return newId


while True:
    newId = get_channel_videos(chId)
    print(newId)
    if newId != oldId:
        break

print("exit")
insert_comment(auth, chId, newId, "First!")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...