Итак ... Я попытался выполнить 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!")