Как загрузить миниатюру с помощью клиента API YouTube, не сохранив ее сначала на диск? - PullRequest
0 голосов
/ 26 июня 2019

У меня есть файл изображения в памяти в виде объекта io.BytesIO, созданный с помощью Подушки. С этим объектом проблем нет, так как я могу записать его содержимое на диск и получить ожидаемый образ.

Моя проблема связана с клиентом API Python YouTube, так как его реализация метода thumbnails.set , похоже, не поддерживает загрузку чего-либо, кроме путей к файлам, существующим на диске или? MediaFileUpload объект, который, как доказала его документация и мои эксперименты, страдает от той же проблемы только принятия путей.

Мой текущий код выглядит следующим образом:

            youtube.thumbnails().set(
                videoId = video_response["id"],
                media_body = thumbnail_image
            ).execute()

Где thumbnail_image - мой io.BytesIO объект. Я также попытался передать thumbnail_image.getvalue(), но безрезультатно. Ошибка одинакова в обоих случаях:

  File "C:\Users\smwle\OneDrive\Desktop\Pylights\Modules\YouTubeUpload.py", line 75, in upload_video
    media_body = thumbnail_image.getvalue()
  File "I:\Programs\Python\lib\site-packages\googleapiclient\discovery.py", line 820, in method
    raise TypeError('media_filename must be str or MediaUpload.')
TypeError: media_filename must be str or MediaUpload.

Есть ли способ сделать то, что я пытаюсь? Если нет, есть ли альтернатива без использования клиента API?

...