После недавней тенденции на YouTube в видео «Reddit to Text-To Speek» YouTube я начал в проекте, чтобы создать программу, которая может автоматизировать процесс получения, создания и загрузки этих видео на YouTube с максимально возможным вмешательством. Потребовалось 4 месяца, чтобы закончить проект, и состоит из 3 отдельных программ, которые работают одновременно, чтобы выполнить эту задачу.
Идея состояла в том, чтобы минимизировать как можно больше ручного вмешательства и автоматизировать все тривиальные задачи. Однако процесс не может быть на 100% автоматизирован. Например, комментарии со ссылками в них не могут быть сохранены, поскольку качество видео будет включено из -за TTS. Кроме того, в то время как комментарий может иметь большое количество голосов, он потенциально может быть оскорбительным и небезопасным для видео на YouTube и, следовательно, должен быть удален. Миниатюра, хотя и частично сгенерирована, должна быть отредактирована, чтобы создать любую привлекательность зрителям, чтобы нажать на ваше видео. То же самое касается названия видео, которое должно быть ClickBait-Y, чтобы привлечь внимание. Я попытался упростить ручной процесс с клиентской программой, и мне потребуется приблизительно 30 минут, чтобы создать 6 видео (максимум, который можно загрузить в течение 24 часов с помощью API данных YouTube).
Некоторые из моих сгенерированных видео:
https://www.youtube.com/watch?v=XXDKMHYXCSQ
https://www.youtube.com/watch?v=AW0YJIXXNXI&t=35S
Процесс завершения видео включает в себя:
Пример Reddit Text-To Speek Channels:
https://www.youtube.com/watch?v=izsxhx64pgq https://www.youtube.com/watch?v=vzdtuap2ztw
Поместите их в папку, называемую «Активы» в каталоге видео генератора BOT YouTube.
Кроме того, я передумал на многие аспекты дизайна частично через проект, и поэтому некоторые файлы называются странно, и здесь и там есть неиспользованный код. Я больше не буду обновлять код, но, пожалуйста, не стесняйтесь.
Проверьте зависимости.txt
Чтобы легко установить большинство зависимостей Python, запустите следующую команду после клонирования (некоторые, возможно, потребуются вручную):
pip install -r requirements.txt
Эта недавняя тенденция в видео с текстом в речь состоит из речи (обычно) очень простой формулы:
Песня выбирается случайным образом. Я скачал ~ 40 песен Кевин Маклеод Royality бесплатные песни для случайного выбора.
https://www.youtube.com/watch?v=cpyyrds-qo&list=plbzgr7h3fyus3lvitxtfaigv601ukuhjx
Все активы, используемые в генерации видео, можно загрузить здесь:
http://www.mediafire.com/file/hpu1j1k1avwp9dj/youtube_bot_assets.zip/file
Они должны быть помещены в папку, называемую «Активы» в программе видео генератора.
Проект состоит из трех отдельных программ:
В этой программе содержится (1) сервер сокетов для подключения к программе Client (S), а также (2) сервера сокета для подключения к клиенту (-ам) видео генератора. Кроме того, эта программа также будет получать новые сценарии от Reddit каждый час, а также будет обновлять существующие, которые еще не были отредактированы.
(1) Этот сервер сокетов отправит необработанные сценарии из базы данных в программу ручного просмотра (см. Ниже). Затем он получит эти рецензируемые сценарии и обновит базу данных с помощью завершенных сценариев, которые будут включать в себя миниатюру, описание и заголовок. Сервер может обрабатывать несколько клиентов, поэтому несколько человек могут редактировать эти сценарии.
(2) Сервер видео генератора в настоящее время предназначен только для обработки одного клиента видеогенератора. Оригинальные планы предназначались для этого сервера, чтобы обрабатывать несколько клиентов видеогенераторов, разбросанных между несколькими компьютерами. Тем не менее, я обнаружил, что одного компьютера достаточно для всех моих потребностей в генерации видео, поэтому я решил жестко кодировать его только одному клиенту. Цель этого сервера - отправить завершенные сценарии из базы данных клиенту видео генератора.
Эта программа будет получать окончательные видео -сценарии с сервера видеогенератора YouTube Bot, который включает в себя миниатюры, описания, теги и заголовок. Эти сценарии будут сгенерированы в файл MP4, а затем загружены на YouTube в запланированное время выпуска (в настоящее время случайным образом в 17:00, 18:00, 19:00 по GMT - рекомендуемое время для загрузки на YouTube). Как только сценарий будет получен, он будет сгенерирован, тогда программа подождает, пока у нее будет достаточно кредитов API, чтобы загрузить, проверяя, когда были загружены последние 6 видео.
Использование квот API сбрасывается в 8 утра по Гринвичу . Я подсчитал, что загрузка каждого видео будет стоить 1658 кредитов . Вы можете использовать максимум 10 000 кредитов в день. Это означает, что в теории вы сможете загружать 6 видео в день . Тем не менее, на практике я смог загрузить 5 видео, иногда шестое загружается, однако для загрузки миниатюры не будет достаточно квот, что в этом случае потребует ручного вмешательства для загрузки миниатюры вручную. Видео загружаются с помощью YouTube-Upload, которую мне удалось только работать с Python 2.7. Он вызывается с помощью subprocess.check_call с указанной версией Python и аргументами по мере необходимости (ссылка ниже).
Как только видео успешно загружено, его статус установлен на завершение вместе со временем загрузки, чтобы программа могла проверить, сколько видео было загружено в течение дня, чтобы избежать превышающего использования квот.
Информация об API данных YouTube https://developers.google.com/youtube/v3/getting-started youtube-upload (python 2.7) https://github.com/tokland/youtube-upload
Текст в речь, безусловно, одним из самых сложных аспектов проекта было привлечение текста к речи для правильной работы. Я хотел использовать мягкое сканирование Daniel MLG для речи - тот, который найден в большинстве видео Text to Speech Reddit. Я полагал, что это была важная часть проекта, потому что этот голос очень узнаваем и является (на мой взгляд) одним из лучших звучащих текстов для доступных речей. Я использую версию командной строки Balabolka для генерации файлов .wav, и они были синхронизированы с разными кадрами в программе генерации видео.
Balabolka http://www.cross-lus-a.com/balabolka.htm
Клиентская программа представляет собой процесс, похожий на Tinder, влево и правый процесс для фильтрации комментариев, которые не должны быть включены в видео. Это также позволяет пользователю написать заголовок и загрузить миниатюру для видео, а также редактировать описание и теги, хотя заголовок, описание и теги частично генерируются следующим образом: Название: Be по умолчанию-это пост и т. д. все это можно отредактировать. Шаблон для миниатюры также частично генерируется. Есть проверки, чтобы убедиться, что количество символов не превышено для всех этих полей, например, название должно быть ниже 100 символов.
Окончательное содержание видео включает в себя отредактированный скрипт, миниатюру, теги, описание и настройки видео (можно изменить определенные функции шаблона видео генератора во время процесса редактирования, таких как цвет фона, размер текста, ширина линий и т. Д. Я обычно держал по умолчанию, поэтому не имел особого использования для него), который затем отправляется на сервер, который, по -видимому, поднимает его в DATABASE.
Mysql
Хранение сценариев, и их соответствующая информация сделана с помощью базы данных MySQL. Это первый раз, когда я использовал базу данных MySQL для проекта, я не великолепен в SQL, я узнал, что нужно, чтобы заставить вещи работать. Я использовал три таблицы «Пользователи», «Видеогенераторы» и «Сценарии»
Таблица «Пользователи»
Первоначально я планировал создать обширную систему входа в систему, в которой пользователи имели статистику редактирования, посмотрите, кто онлайн и т. Д. Отменил это, и теперь ее единственное использование - это отслеживание, которые пользователи редактируют, какие видео, чтобы предотвратить отредактирование и загруженное одно и то же видео. Пароли зашифрованы с помощью MD5 на стороне клиента
«Скрипты» таблица
Самая важная таблица содержит всю информацию о сценарии. Поле состояния очень важно для отслеживания того, где должен быть сценарий.
-Raw: сценарий доступен для редактирования
-редакция: сценарий отредактируется и не может быть отредактирован любыми другими пользователями, находясь в этом состоянии
-coclete: сценарий был закончен редактирование и будет отправлен клиенту видео генератора
-successupload: сценарий успешно загружен на YouTube
Таблица «Видеогенераторы»
Как и пользователи, я разработал клиент, чтобы иметь имя пользователя и пароль для входа в систему. Пароль зашифруется с помощью MD5 на стороне клиента
Эти таблицы будут автоматически созданы в базе данных под названием «YouTubeBot», если их еще не существует.
Получить учетные данные для вашей учетной записи Google API будут загружены и будут сохранены автоматически после однократного входа (окно вашего браузера будет открыто запрашивать вход в учетную запись Google): videouploader.py -> get_credentials ()