YouTube API ч.4 Загрузка видео на Python ( videos.insert )

В предыдущем видео я разобрался получением необходимых токенов и созданием сервиса для работы с YouTube API на Python. Сегодня сделаю загрузку видео.

Важное дополнение про блокировку видео , см. коммент .

Мда, подтверждаю проблему. Похоже корни здесь https://developers.google.com/youtube/v3/revision_history#release_notes_07_28_2020 .

После блокировки на почту gmail на аккаунте канала приходит письмо:

«Наши специалисты проверили ваши материалы и обнаружили, что в них нарушаются правила YouTube, а именно правила в отношении спама, мошенничества и обмана. В связи с этим мы установили ограниченный доступ для следующего контента на вашем канале»

Пока предполагаю что видео загруженное через приложение в статусе теста нельзя сделать публичным даже руками, пока нашел только это https://support.google.com/youtube/answer/7300965 «вы не сможете обжаловать наше решение, если ролик был загружен с помощью неподтвержденного сервиса API. Чтобы вернуть доступ к видео, вам потребуется загрузить его снова. Для этого воспользуйтесь подтвержденным API или добавьте контент напрямую на сайте YouTube» .

Самое обидное что этого ограничения вроде бы нет для проектов созданных до 28 июля 2020 года, а я их вдруг решил почистить и удалил все старые неделю назад и теперь не могу проверить :((( .

Навожу порядок в коде

В предыдущих сериях весь код, включая токены, я намеренно делал в одном файле. Так удобнее для видео. Но код растет и ориентироваться в одном файле теперь стало неудобно. Поэтому я его немного причесал, сделал пакет для YouTube API, попрятал токены и выложил все это на GitHub. Конкретно для сегодняшнего видео сделал отдельную ветку.

https://github.com/Denis070/azzrael-yt/tree/video-upload

Ничего слишком сложного, если с Питоном немножко знакомы, то разберетесь. А здесь буду говорить только о двух конкретных функциях, а все остальное см. предыдущие серии сериала Разбираюсь с YouTube API и здесь по тегу YouTube API .

Полезные ссылки

Код загрузки видео с помощью YouTube API и Python

** здесь только две основные функции


Пояснения в видео и в комментариях к коду.

 

Возможные проблемы

  • Не забывайте о SCOPES, для загрузки обязательно нужно разрешение ‘https://www.googleapis.com/auth/youtube.upload‘ , если вдруг сначала запросили юзера без этого разрешения и получили токен, то нужно добавить скоп и запросить права повторно см. предыдущую серию.
  • Загрузка видео жрет огромное количество квот. На данный момент 1600 из 10000 доступных в сутки.
  • Если при загрузке не поставить приватный статус при загрузке через приложение в режиме тестирования, то видео получит статус заблокировано и его можно будет только удалить и перезалить (с тратой квот) или подавать апелляцию (что глупо).
  • Мелкие чанки выгодны на мобильном или просто плохом интернете и больших файлах.
  • Мой код в функции resumable_upload намеренно упрощен. Не нужно в нем сильно увеличивать количество попыток — каждый запрос к апишке, даже если он не успешный — сжирает квоту.
  • Сейчас в 2021 YT при загрузке видео делает автоматическую проверку каждого видео на соответствие правилам. Если долбить API однотипным виде с однотипными описаниями и заголовками, то могут валиться ошибки вроде “Не удалось выполнить проверку”. Это, конечно, проблема при отладке скрипта, но кто говорил что будет легко.