Seguindo a tendência recente do YouTube no "Reddit to Text-topeech", os vídeos do YouTube que embarquei em um projeto para criar um programa que possa automatizar o processo de recebimento, geração e envio desses vídeos para o YouTube com o mínimo de intervenção possível. Levou 4 meses para terminar o projeto e é composto por três programas separados que funcionam simultaneamente para concluir esta tarefa.
A idéia era minimizar o máximo de intervenção manual possível e automatizar todas as tarefas triviais. No entanto, o processo não pode ser 100% automatizado. Por exemplo, comentários com links neles não podem ser mantidos, pois a qualidade do vídeo será composta devido ao TTS. Além disso, embora um comentário possa ter um grande número de votos, ele pode ser ofensivo e não é seguro para um vídeo do YouTube e, portanto, deve ser removido. A miniatura, embora parcialmente gerada, deve ser editada para criar qualquer tipo de apelo aos espectadores para clicar no seu vídeo. O mesmo vale para o título do vídeo que deve ser o clickbait-y para receber qualquer atenção. Tentei otimizar o processo manual com o programa do cliente e leva aproximadamente 30 minutos para criar 6 vídeos (o máximo que pode ser enviado dentro de 24 horas com a API de dados do YouTube).
Alguns dos meus vídeos gerados:
https://www.youtube.com/watch?v=XXDKMHYXCSQ
https://www.youtube.com/watch?v=aw0yjixxxnxi&t=35s
O processo de concluir um vídeo envolve:
Exemplo de canais de texto para fala do reddit:
https://www.youtube.com/watch?v=IZSXHX64PGQ https://www.youtube.com/watch?v=vzdtuap2ztw
Coloque -os em uma pasta chamada "ativos" no diretório gerador de vídeo do YouTube Bot.
Além disso, mudei de idéia em muitos aspectos de design parcialmente através do projeto e, portanto, alguns arquivos são nomeados estranhamente e há código não utilizado aqui e ali. Não vou mais atualizar o código, no entanto, não hesite em.
Verifique as dependências.txt
Para instalar a maioria das dependências do Python facilmente, execute o seguinte comando após a clonagem (alguns podem precisar ser instalados manualmente):
pip install -r requirements.txt
Esta tendência recente nos vídeos de texto para fala do reddit consiste (geralmente) de uma fórmula muito simples:
Uma música é escolhida aleatoriamente. Eu baixei ~ 40 músicas Kevin MacLeod Royality As músicas gratuitas para serem aleatoriamente escolhidas.
https://www.youtube.com/watch?v=ccpyyrds-qo&list=plbzgr7h3fyus3lvitxtfaigv601ukuhjx
Todos os ativos usados na geração do vídeo podem ser baixados aqui:
http://www.mediafire.com/file/hpu1j1k1avwp9dj/youtube_bot_assets.zip/file
Eles devem ser colocados em uma pasta chamada "ativos" no programa gerador de vídeo.
O projeto é composto por três programas separados:
Este programa abriga o (1) servidor de soquete para conectar -se ao (s) programa (s) cliente (s) e também ao (2) servidor de soquete para conectar -se ao (s) cliente (s) do gerador de vídeo. Além disso, este programa também pegará novos scripts do Reddit a cada uma hora e também atualizará os existentes que ainda não foram editados.
(1) Este servidor de soquete enviará scripts brutos do banco de dados para o programa de revisão manual (veja abaixo). Em seguida, ele receberá esses scripts revisados e atualizará o banco de dados com os scripts finalizados que incluirão uma miniatura, descrição e título. O servidor pode lidar com vários clientes para que várias pessoas possam editar esses scripts.
(2) O servidor gerador de vídeo é atualmente projetado apenas para lidar com um cliente gerador de vídeo. Os planos originais eram para que este servidor lidar com vários clientes geradores de vídeo espalhados entre vários computadores. No entanto, descobri que um computador era suficiente para todas as minhas necessidades de geração de vídeo, então decidi codificá -lo com apenas um cliente. O objetivo deste servidor é enviar scripts finalizados do banco de dados para o cliente gerador de vídeo.
Este programa receberá scripts de vídeo finalizados do servidor gerador de vídeo do YouTube Bot, que incluem miniaturas, descrições, tags e um título. Esses scripts serão gerados em um arquivo MP4 e depois enviados para o YouTube em um horário de lançamento programado (atualmente aleatoriamente às 17:00, 18:00, 19:00 GMT - os horários recomendados para fazer upload no YouTube). Depois que o script for recebido, ele será gerado, o programa aguardará até que ele tenha créditos de API suficientes para fazer o upload, verificando quando os últimos 6 vídeos foram enviados.
Uso da cota da API redefine às 8h GMT . Eu calculei que o upload de cada vídeo custará 1658 créditos . Você pode usar no máximo 10.000 créditos por dia. Isso significa que, em teoria, você poderá fazer upload de 6 vídeos por dia . No entanto, na prática, pude fazer upload de 5 vídeos, às vezes o sexto fará o upload, mas não haverá cotas suficientes disponíveis para fazer upload da miniatura, que nesse caso exigirá intervenção manual para fazer upload da miniatura manualmente. Os vídeos são enviados com o YouTube-Upload, que eu só consegui trabalhar com o Python 2.7. É chamado com subprocess.check_call com versão python especificada e argumentos conforme necessário (link abaixo).
Depois que um vídeo é enviado com sucesso, seu status é definido para concluir junto com um tempo de upload, para que o programa possa verificar quantos vídeos foram enviados dentro do dia para evitar o uso da cota excedente.
Informações da API de dados do YouTube https://developers.google.com/youtube/v3/getting-started youtube-upload (python 2.7) https://github.com/tokland/youtube-upload
De longe , um dos aspectos mais desafiadores do projeto foi fazer com que o texto da fala funcionasse corretamente. Eu queria usar o texto da varredura Soft de Daniel MLG para a voz da fala - a encontrada na maioria dos vídeos de texto para o discurso do Reddit. Eu acreditava que essa era uma parte importante do projeto, porque essa voz é muito reconhecível e é (na minha opinião) um dos melhores textos de som para discursos disponíveis. Eu uso a versão da linha de comando do Balabolka para gerar os arquivos .wav e estes foram sincronizados com diferentes quadros no programa de geração de vídeo.
Balabolka http://www.cross-plus-a.com/balabolka.htm Instruções sobre como obter a voz de Daniel Mlg https://www.youtube.com/watch?v=yj3dhtnyoty
O programa do cliente é um processo de furto do tipo Tinder para filtrar comentários que não devem ser incluídos no vídeo. It also allows for the user to write the title and upload a thumbnail for the video as well as edit description and tags, although the title, description and tags are partially generated as follows: Title: Be default is the post title Description: By default is a generated template with the post title within it and a couple hashtags Tags: Some base tags I got from popular text-to-speech channels such as r/askreddit,reddit,reddit funny etc. Tudo isso pode ser editado. Um modelo para a miniatura também é parcialmente gerado. Há cheques para garantir que a quantidade de caracteres não seja excedida para todos esses campos, por exemplo, o título deve ter menos de 100 caracteres
O conteúdo final do vídeo inclui o script editado, a miniatura, as tags, a descrição e as configurações de vídeo (é possível alterar certos recursos do modelo de gerador de vídeo durante o processo de edição, como cor de fundo, tamanho do texto, larguras de linha etc. Eu geralmente mantinha os padrão para que não tivesse muito uso para ele), que é enviado para o servidor que, em servidor, mantiver a carga para que ele não tivesse o padrão para que ele não tivesse o que não tinha muito para o que é enviado para o servidor, o que é o que é que o servidor é que, como o servidor.
Mysql
O armazenamento dos scripts e suas informações relevantes são feitas com um banco de dados MySQL. É a primeira vez que usei um banco de dados MySQL para um projeto, não sou brilhante no SQL. Aprendi o que era necessário para fazer as coisas funcionarem. Eu usei três tabelas "usuários", "videogeneradores" e "scripts"
Tabela "Usuários"
Originalmente, eu planejava criar um extenso sistema de login em que os usuários tinham estatísticas de edição, veja quem está online etc. descarte isso e agora seu único uso é para acompanhar quais usuários estão editando quais vídeos para impedir o mesmo vídeo sendo editado e enviado duas vezes. As senhas são criptografadas com o MD5 no lado do cliente
Tabela "Scripts"
A tabela mais importante mantém todas as informações do script. O campo de status é muito importante para acompanhar onde deve estar um script.
-raw: o script está disponível para editar
-Editing: o script está sendo editado e não pode ser editado por outros usuários enquanto neste estado
-Complete: o script foi finalizado na edição e será enviado para o cliente gerador de vídeo
-successupload: o script foi carregado com sucesso no YouTube
Tabela “Videogenerators”
Como os usuários, projetei o cliente para ter um nome de usuário e senha para fazer login. A senha é criptografada com o MD5 no lado do cliente
Essas tabelas serão criadas automaticamente em um banco de dados chamado "YouTubeBot" se ainda não existir.
Receba credenciais para sua conta da API do Google serão baixadas e salvas automaticamente após um login único (a janela do navegador será aberta solicitando um login da conta do Google): VideouPloader.py -> get_credentials ()