После того как мне удалось успешно разобраться с аудиозаписями и научиться легко клеить видео для домашнего видеоархива, мне пришла мысль: а почему бы все это не совместить? Можно ведь таким же образом распознать голоса на видео, сделать поиск, выложить куда‑нибудь для удобства доступа и резервирования. Сказано — сделано (ага, сейчас: «вошли и вышли, приключение на 20 минут»).

Первая проблема: видеофайлы они большие, местами очень большие. Явно больше 5 МБ, которые позволяет загружать Notion в бесплатной версии, иногда даже больше 5 ГБ, разрешённых в платной версии. Плюс к этому, видео, загруженное на Notion, можно проиграть только в Notion, что совсем неудобно, если хочется смотреть видео на телевизоре. Ну и в завершение вспоминаем, что API у Notion не позволяет загружать что‑либо, а сторонние библиотеки малость «глюковатые», и с большими файлами тоже могут быть проблемы.
Итак, дано около 300 000 исходных файлов. После склейки по дням получилось около 6000, да, меньше, но всё ещё внушительное количество.
А какой есть сервис, на который можно загрузить бесплатно 6000 видео файлов? Который можно (было бы) проигрывать на любых устройствах? Да ещё и с хорошим стабильным API? На «you» начинается, на «tube» заканчивается. (Нет, это не VK Video.) В общем, решил грузить на YouTube с доступом по ссылке и начал писать соответствующий скрипт. Что может пойти не так?
«Не так» началось с ограничений. Как пользователь я могу загрузить хоть 100 видео в день, но вот от лица проекта в API всё немного сложнее. По умолчанию в день лимит 10 000 поинтов, но при этом загрузка одного видео стоит 1600 поинтов. Получается, что в день можно загрузить только 6 (шесть!!!) видео. Вспоминаем, что у нас около 6000 видеофайлов, и получаем немногим меньше 3-х лет. Мда, я, конечно, терпеливый, и скрипт может работать без моего участия, но ждать столько времени не хотелось.
Но игра начата, скрипт готов, начал искать варианты. Нашёл, что можно заполнить специальную форму, пройти аудит, и тогда YouTube может значительно расширить количество поинтов на день. Форма казалась несложной, заполнил данные, описал проект, запросил увеличение до 1 000 000.
Ответили на удивление быстро — примерно за день. Сказали, что краткое описание проекта их не устраивает, и попросили прислать всю проектную документацию (ага, на скрипт для загрузки домашних видео). Написал более развернутое описание на «систему интеграции домашнего видео дневника». Ещё через день приходит запрос: «А пришлите‑ка flow chart, как это будет работать». Делаю и это. И так далее — в итоге было около 8 дополнительных запросов. Я уже почувствовал себя в роли менеджера проектов и реально подготовил проектную документацию на свой виртуальный проект. Надо сказать, что я уже не особо верил в успех, но нет, спустя полторы недели мне одобрили запрашиваемое повышение квоты. И я, воспрянув духом, запустил скрипт на полную мощность.
Но «полная мощь» длилась недолго. После первых пары сотен видео мне начали прилетать предупреждения о «нарушении правил в отношении детей». Начал смотреть, что же не так в этих видео. А не так оказалось, что дети, особенно совсем маленькие, не всегда ходят одетыми, а еще сидят на горшке, купаются в ванной и все это голышом! Чуть на видео детский зад — всё: видео блокируется. Ладно, так уж и быть, добавил в скрипт определение, какие видео заблокированы, добавил инструменты для быстрого исключения спорных фрагментов и перезагрузки видео.
Казалось, процесс пошёл. Прилетает блок, я смотрю видео, убираю неприемлемые фрагменты, перезагружаю — все счастливы. Но нет, примерно на сотом заблокированном видео (при загруженной 1000) на канал прилетает страйк: мол, стоп, что‑то вы все непотребства грузите, отдохните‑ка недельку. Но если потом будут ещё нарушения, то будете отдыхать две недели, а если ещё — удалим канал. После недели отдыха второй страйк я получил за первое же заблокированное видео.
Сказать, что я расстроился, — ничего не сказать. 1000 видео уже загружено, процесс налажен. Ставки повышаются. Раз мне кинули страйк на 100-м заблокированном видео, а я уже загрузил 1000, значит, я могу завести ещё несколько каналов (мне ведь не сам канал важен, а список ссылок видео) и загрузить туда остальное, тем более что «голозадых» видео больше не должно быть — дети на видео подросли. Рождается такая схема: есть тестовый канал, на который скрипт загружает видео, ждет пару дней, проверяет, что видео не заблокировано, и после этого загружает его уже на основной канал.
Скрипты написаны, начинаю процесс и�� получаю страйк после первого же заблокированного видео на тестовом канале. Видимо, алгоритмы YouTube взяли мой проект «на карандаш» и теперь будут выдавать страйки сразу. Завёл ещё один канал — история повторилась. Хотел завести ещё, но увы: для верификации канала, с возможностью загружать видео, нужно привязывать номер телефона. На один номер можно привязать не более двух аккаунтов, а номера телефонов закончились. Нет, можно было бы купить какие‑то виртуальные номера и попробовать на них, но, во‑первых, это не очень безопасно, во‑вторых, совсем не бесплатно, да и в‑третьих, стало ясно, что вариант тупиковый — уж слишком много аккаунтов может понадобиться.
Пришлось отложить скрипты для YouTube в стол и искать другие варианты.
После перебора различных сервисов мне попался Dailymotion (заблокирован в РФ, но кому это сейчас мешает? Тем более, что сейчас уже и YouTube без VPN не у всех работает). Самое главное, что на нём можно регистрировать аккаунты без номера телефона, паспорта, верификации и т. д. Достаточно только адреса почты (а их можно сделать в любых количествах!). Плюс к этому — удобный API, официально поддерживаемая библиотека на Python и возможность встраивать видео на другие сайты. Да, есть ограничение — 15 видео в день для не верифицированных аккаунтов. Но если я могу за полчаса зарегистрировать 10 аккаунтов, то 150 видео в день меня вполне устроит. Сказано — сделано. Скрипт написан, загрузка пошла… Что может пойти не так?
А оказалось, что там тоже не даром разработчики хлеб едят. 15 видео на первый аккаунт загрузил, скрипт переключается на второй, а там… «извините, лимит исчерпан». То есть, он ещё и по IP смотрит. Но тут уже дело техники: взял библиотеку, прикрутил прокси — и дело пошло. Но не долго.
Через неделю загрузки прилетает что? Правильно, «нарушение правил в отношении детей». Причём на другие видео! Не на те, что блокировал YouTube, да ещё и с опозданием — видать, там проверки идут в отложенном режиме. Просматриваю видео и не нахожу там ничего подозрительного. Подаю апелляцию, и она, внезапно, проходит (YouTube обычно игнорировал все апелляции, я и тут не надеялся, но прошло).
Проходит ещё несколько недель загрузок, часть видео постфактум блокируется, часть возвращается по апелляции, и в конце концов я всё‑таки нарываюсь на страйк: мол, у вас на канале есть нарушения, канал заблокирован и будет удалён. Но я‑то все видео с нарушениями удалял! Пишу апелляцию, и канал восстанавливают. (Впрочем, даже если бы не восстановили, перезагрузить видео с одного канала — дело нескольких дней).
И всё было хорошо: дети на видео выросли, голых поп больше нет, всё чинно, благородно, но… Появились большие видео, и оказалось, что Dailymotion не поддерживает видео больше 4 GB. Таких видео не много, но они есть, пережимать и терять в качестве не хотелось. Что же делать? Искать новый сервис? Но нет, тут почти всё загружено, так что большие видео просто пошли на YouTube, благо скрипты для него есть, система отлажена, а голые попы, даже если единичные попадутся, не так уж страшны — у меня же три тестовых канала.
После того как всё было загружено (ну, если честно, не после, а вовремя — все эти процессы шли параллельно: на видеокарте шло распознавание аудио, CPU занимался склейкой, а я борьбой с цензурой и прочими скриптами), встал вопрос загрузки на Notion. В целом, всё, как и с аудио, но в силу того, что файлы хранятся не в Notion, да ещё и в разных источниках, пришлось немного усложнить структуру.

Сейчас весь архив уже обработан и загружен, а новые видео добавляются автоматом так же как и для аудио.
mmdiary --video --dailymotion --notionЗа исключением периодической проверки и полуавтоматической загрузки больших видео на YouTube, задача полностью автоматизирована. А с использованием Notion можно легко искать видео по словам или просто фильтровать их по дате. Это особенно удобно: можно, например, задать фильтр «-24-09» — 24 сентября за все годы — и увидеть, как мы провели этот день 3, 5, 10 лет назад буквально в два клика. Ну и просматривать видео там же, либо отправлять ссылку на нужное устройство для отображения.

Если кому будет интересно воспользоваться моей системой, милости просим, код и детальные инструкции по установке и настройке здесь
