VK API и баг с сохранением видео
Как то давно написал я python-скрипт для добавления YouTube-видео в группу Вконтакте по расписанию. Все работало хорошо, но иногда в группе появлялись странные посты где вместо нужного видео подставлялся клип группы БИ-2, причем он был залит напрямую в VK и из левых видеороликов появлялся всегда именно этот.
После отладки выяснилось что в настройках некоторых видео на YouTube стоит запрет на добавление в VK. Если попробовать залить такой ролик вручную то вывалится подробная ошибка, а API такой случай не обрабатывает и возвращает успешный ответ!
Естественно такой кривой ролик публикуется и в группе красуется пост с клипом БИ-2 и чужим названием =)
Лечим баг
Реакцию разработчиков соцсети я проверять не стал и решил сам проверять успешность заливки роликов. В принципе мне хватает и сведений о том что загруженный ролик не ютубовский и на основании этого блокировать его публикацию.
Если проверять такие ролики в API-песочнице VK то выяснится что залитые напрямую ролики отличаются от ютубовских только атрибутом files где у ютубовского будет external и ссылка на страницу в ютубе, а у другого прямые ссылки на mp4-файлы в разном качестве.
Все это хорошо, но атрибут files через API доступен далеко не всем и мой скрипт возвращает ответ без этого параметра.
Тогда я заметил что прямые ссылки на скриншоты с того самого ролика БИ-2 всегда отдаются одни и те же. Поэтому я взял и захардкодил проверку по url-скриншота ролика и на этом основании публикую или удаляю видео.
Описано сумбурно, думаю проще разобраться в самом скрипте:
1 | # -*- coding: utf-8 -*- |
Запускается он вот так:
1 | python vk.py 'http://www.youtube.com/watch?v=aH9tlMra0Q0' 'Название видео' |
Публикует видео на стену группы с id 999999999