Python — youtube.playlistItems().delete() не работает с [удаленным видео] (YouTube API v3)

Я хочу очистить остатки [Удаленное видео] из нескольких плейлистов моего канала YouTube. Я использую этот код, но он не работает.

YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
CLIENT_SECRETS_FILE = "client_secrets.json"
YOUTUBE_READ_WRITE_SCOPE = "https://www.googleapis.com/auth/youtube"



def get_authenticated_service(args):
  flow = flow_from_clientsecrets(CLIENT_SECRETS_FILE,
    scope=YOUTUBE_READ_WRITE_SCOPE,
    message=MISSING_CLIENT_SECRETS_MESSAGE)

  storage = Storage("%s-oauth2.json" % sys.argv[0])
  credentials = storage.get()

  if credentials is None or credentials.invalid:
    credentials = run_flow(flow, storage, args)

  return build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
    http=credentials.authorize(httplib2.Http()))





 if __name__ == "__main__":

 try:

  args = argparser.parse_args() 
  youtube = get_authenticated_service(args)
  youtube.playlistItems().delete(id="xxxxxxxxx").execute() 

except HttpError as e:
 print ("\nAn HTTP error %d occurred:\n%s" % (e.resp.status, e.content))

Я получаю это сообщение об ошибке (403) (Запрещено)

Запрос не авторизован должным образом для удаления указанного элемента плейлиста

{
 "error": {
  "errors": [
   {
    "domain": "youtube.playlistItem",
    "reason": "playlistItemsNotAccessible",
    "message": "Forbidden",
    "locationType": "parameter",
    "location": "id"
   }
  ],
  "code": 403,
  "message": "Forbidden"
 }
}

Даже используя это (попробуйте этот API) отсюда:

https://developers.google.com/youtube/v3/docs/playlistItems/delete?hl=en-419

или здесь

https://developers.google.com/youtube/v3/docs/playlistItems/delete?hl=es-419

Мои учетные данные, мой ключ разработчика и мой файл client_secrets.json в порядке, потому что я использовал его раньше, и он работает.

Кто-то знает, что случилось? Или кто-то знает другой способ удалить «Удаленное видео» из плейлиста с помощью Python + Youtube API v3?


person Iván Rodríguez    schedule 21.06.2018    source источник


Ответы (1)


Проблема была решена:

Если вы выполните PlaylistItems().list(), вы получите этот ответ.

"items": [
  {
   "kind": "youtube#playlistItem",
   "etag": "\"DuHzAJ-eQIiCIp7p4ldoVcVAOeY/Ktqi5NIapmys1w2V0FiorhFR-Uk\"",
   "id": "UExES3pRck8tTUFDZndHV3Z0eXVaVHZXNENxNTNGYV9wNC4wMTcyMDhGQUE4NTIzM0Y5",
   "snippet": {
    "publishedAt": "2018-06-06T13:43:17.000Z",
    "channelId": "xxxxxxxxxxxxxxxxxx",
    "title": "Deleted video",
    "description": "This video is unavailable.",
    "channelTitle": "xxxxxxxxxxxxxxxxxx",
    "playlistId": "xxxxxxxxxxxxxxxxxxxxxxx",
    "position": 0,
    "resourceId": {
     "kind": "youtube#video",
     "videoId": "D6NOeUfxCnM"
    }

для удаления элементов из плейлиста вы должны использовать это

   "id": "UExES3pRck8tTUFDZndHV3Z0eXVaVHZXNENxNTNGYV9wNC4wMTcyMDhGQUE4NTIzM0Y5",

если вы используете этот "videoId": "D6NOeUfxCnM", вы получите сообщение об ошибке (403) (Запрещено)

person Iván Rodríguez    schedule 22.06.2018
comment
Спасибо за ответ, иначе я бы потратил часы на одно и то же - person MrSparkly; 14.10.2018