Python na prática: Projeto Video Creator – #Parte 1: Arquitetura da aplicação

Bom dia, boa tarde, boa noite!

Este é o primeiro post da série sobre o projeto Video Creator, onde mostrarei a arquitetura que utilizei no projeto, organização das pastas e dos códigos.

Se você entrou direto nesse post, te aconselho a começar por aqui, para entender exatamente do que se trata essa série.

Sobre essa parte

Sempre que vou começar um novo projeto, gosto de começar a pensar como vou estruturar as pastas e os códigos.

Para esse projeto eu usei a seguinte estrutura:

videocreator # Na raíz fica o “orquestrador” dos robôs
├── content # aqui fica todo o conteúdo para o video
│   ├── default # arquivos default
│   ├── images # imagens para o video
│   └── music # musicas para o video
├── credentials # aqui ficam todas as credenciais dos serviços
└── robots # aqui ficam os “robôs”

Organização do código

Na hora de codificar cada uma das features, tentei agrupá-las por “assunto”, afim de que cada robô pudesse ser executado por completo e de forma independente.

São eles:

rcontent.py

O rcontent é responsável por todo o conteúdo textual do vídeo. É ele quem busca os trending topics para nos dar idéias de conteúdo e nos pergunta qual o assunto a ser buscado.

Após a busca pelo assunto escolhido, é ele o responsável por limpar o texto e quebrá-lo em sentenças, além de identificar todas as palavras-chaves de cada sentença.

Por último, ele gera o arquivo content.json e salva na pasta content.

# Estrutura do arquivo content.json

{
    "search_term": "Assunto pesquisado",
    "youtube_details": {
        "category_id": "id da categoria",
        "title": "Título do video",
    "original_content": "Texto original",
    "cleaned_content": "Texto limpo",
    "sentences": [
        {
            "text": "Sentença",
            "keywords": [],
            "images": [],
            "image_search_query": "string usada na pesquisa"
        }
    ],
    "images_used": [],
    "video_filename": "nome_video.mp4"
}

rimage.py

O rimage é responsável pelas imagens que serão utilizadas no video. Ele busca as imagens com base nas keywords de cada sentença, e armazena o link das 5 primeiras no atributo images de cada sentença.

Após a busca pelas imagens, ele inica o processo de download, que funciona da seguinte forma:

É feito uma tentativa de download da primeira imagem, se ele conseguir, ótimo, ele vai para a próxima sentença, senão, ele tenta a segunda imagem e assim sucessivamente.

As imagens que são baixadas são guardadas no atributo images_used.

Por último, ele atualiza o arquivo content.json com esses novos dados.

rvideo.py

Talvez o mais desafiador entre os 4, pois até o momento era a única coisa no projeto que eu ainda não havia feito com programação… a compilação de um video. O rvideo é responsável por editar as imagens baixadas e compilar o video.

E por que a edição das imagens ficou no rvideo ? Porque as imagens da forma que foram editadas, foram feitas para o vídeo, então fazia mais sentido deixar que ele msmo trate as imagens que ele ira utilizar.

Por último, após o video compilado, ele insere o nome do arquivo de video no atributo video_filename, salva o titulo do video no atributo youtube_details:title e atualiza o arquivo content.json.

ryoutube.py

O último robô a ser desenvolvido tem uma tarefa muito simples: fazer o upload do video no youtube.

Ele é reponsável por gerar o título, descrição, setar as tags e todas as configurações necessárias para o youtube, além é claro, de realizar o upload do video.

Iniciando a execução dos robôs

Para orquestrar a execução dos robôs, foi criado um arquivo index.py, onde ele é responsável por chamar a função start() de cada robô.

Por ser o mais simples de todos, deixarei esse por último.

So far So good?

Ainda ficou muito questão a ser melhorada, mas isso será assunto para a segunda versão do robô, onde tratarei da evolução dele, e o que mais podemos fazer.

Nos próximos posts começarei a mostrar como ficou o código

Um abraço, e até o próximo post!

Gerando videos para o Youtube com linguagem Python

Navegando pelo Youtube a mais ou menos 2 anos atrás, me deparei com uma playlist do canal Filipe Deschamps onde ele mostrava como havia programado 4 robôs para automatizar a criação de videos para o Youtube fornecendo apenas o assunto para o robô.

Para quem quiser conferir, esse é o link do primeiro video da série:

Programei 4 robôs que criam vídeos para mim no YouTube

Bom, na época havia começado minha jornada de aprendizado em Python, e resolvi que faria um projeto similar, utilizando Python, e ferramentas alternativas as utilizadas no projeto original.

Pelos meses seguinte, a idéia não saiu do papel, por diversas razões que não precisam ser citadas aqui.

Até que no final de 2021, resolvi que tiraria esse projeto do papel, apenas por diversão e para praticar um pouco de Python… foi bem divertido :D.

O projeto ficou pronto e pode ser conferido no repositório que postarei mais abaixo. Porém não foi fácil concluí-lo. Diversas coisas no projeto segui o exatamente o que ele fez, outras nem tanto. Também utilizei muito do conhecimento passado nos videos do Filipe Deschamps, porém ele usou Node.js e como resolvi fazer em Python, muitas coisas precisei pesquisar como poderia fazer, quais libs poderia usar, etc.

Então para registrar o conhecimento que adquiri com esse pequeno projeto, resolvi escrever uma série de posts, cada qual abordando um pedaço do projeto, assim como o Filipe fez em video.

O objetivo principal é para reforçar, por meio do repasse, o aprendizado adquirido. Espero que estes posts possam ajudar vocês de alguma forma, seja com o conteúdo técnico ou simplesmente motivando-os a iniciarem seus projetos pessoais. É a melhor forma de aprender, e como o Filipe falou nos videos, são nesses projetos, que podemos usar toda e qualquer tecnologia que temos vontade, sem nos preocupar se é viável ou não.

Repositório com o projeto concluído:
https://github.com/thmlima87/videocreator

O que foi usado no projeto?

Apesar de parecer simples, o projeto envolveu bastante coisa legal:

Bora começar!

Abaixo os links de todos os posts para facilitar a navegação.

Parte 1: Arquitetura da aplicação
Parte 2: Idéias de conteúdo!
Parte 3: Buscando o assunto escolhido na Wikipedia
Parte 4: Limpeza e interpretação do texto
Parte 5: Persistência do conteúdo
Parte 6: Bing Custom Search
Parte 7: Busca e download de imagens
Parte 8: Tratamento das imagens
Parte 9: Renderização do video
Parte 10: Upload para o Youtube

Um pouco sobre Big Data!

A geração de dados sempre existiu, desde o início dos tempos o ser humano produz dados. Porém com o tempo, essa geração de dados foi sendo cada vez mais intensa.

Segundo Eric Schmidt, antigo CEO do Google, do início da civilização até o ano de 2003, a humanidade gerou 5 Exabytes de dados, hoje essa mesma quantidade é gerado em apenas 1 hora (provavelmente em menos tempo agora).

Bom, de forma bem resumida… isso é Big Data… esse VOLUME absurdamente grande de dados gerados, na VELOCIDADE em que são gerados e na VARIEDADE dos tipos de dados (os 3 principais V’s). E esses dados podem vir de qualquer lugar, desde os tradicionais bancos de dados relacionais, passando pelos dados gerados numa simples pesquisa inocente no Google até os posts em redes sociais. Tudo pode ser coletado, processado e utilizado para atender uma demanda específica.

É claro que no meio desse tsunami de dados, existem muitos, mas muitos dados completamente inúteis. E esses dados podem mais atrapalhar do que ajudar.

Assim nasceram mais 2 V’s para definir de forma mais detalhada o que é o Big Data: VERACIDADE e VALOR. Dai pra frente foi um pulo pro pessoal criativo encontrar mais um monte de V’s: Variabilidade, Validade, Vulnerabilidade, Volatilidade e Visualização.

Aqui ficaremos apenas nos 5 V’s iniciais, pois na minha visão são o que realmente definem o que é Big Data, os demais são variações muito sutis.

Os 5 V’s

Volume: A quantidade de dados gerado. O volume de dados produzido só aumenta a cada ano.

Velocidade: A velocidade com que esses dados são gerados. Se levamos milhares de anos para produzir 5 exabytes de dados, hoje levamos apenas 1 hora.

Variedade: A variedade de formatos e tipos de arquivos que são gerados. Em Big Data não olhamos apenas para aquela tabelinha bonita toda normalizada em um banco de dados relacional. Aqui tratamos principalmente dados não estruturados, como textos em uma rede social, fotos, audios, videos, etc.

Veracidade: Essa característica diz respeito ao quão confiável é o dado e a fonte de onde foi extraído. Um critério muito importante principalmente na era das fake news.

Valor: E por último mas não menos importante, essa característica diz respeito ao quão valioso é o dado. Não adianta nada coletar, processar e armazenar um monte de dados que não trará nenhum valor real para o negócio. É preciso ter muito claro qual o problema de negócio que você está tentando resolver. Só assim você saberá de quais dados precisa, e qual o valor deles.

Como a minha empresa pode se beneficiar com Big Data?

Designed by Freepik

Diferentemente do BI (Business Intelligence), que tem como foco a análise de dados do passado para mostrar o que aconteceu, o Big Data é usado com foco no futuro, para criação de novos produtos, aprimoramento de processos, estimativas, entre outros.

Abaixo alguns casos de uso de Big Data:

Desenvolvimento de novos produtos: o uso de big data nessa área é muito forte, visando antecipar tendências de demanda dos clientes.

Manutenção preventiva: Cada vez mais as máquinas vem equipadas com sensores que produzem dados a todo segundo. Esses dados ajudam a prever quando um equipamento pode quebrar, possibilitando assim a manutenção preventiva.

Experiência do cliente/usuário: Ter uma visão clara de como está sendo a experiência do teu cliente e/ou usuário é fundamental para que seja possível o aprimoramento dessa experiência. E isso é completamente possível coletando dados de navegação, dados de mídias sociais, registros de chamadas entre outros possíveis.

Fraude: Com big data você consegue identificar padrões em dados afim de identificar possíveis fraudes.

Machine Learning: Talvez a área mais impactada pelo big data. Hoje somos capazes não somente de programar uma máquina mas ensiná-la. E quanto mais dados, mais “inteligente” essas máquinas ficam.

Eficiência operacional: Outra área positivamente afetada pelo big data. Com big data conseguimos analisar dados da operação de uma empresa, coletar feedbacks de clientes entre outros dados, afim de aprimorar a operação, diminuir interrupções, eliminar gargalos, etc.

O que preciso para iniciar um projeto de Big Data?

Você precisa de um problema de negócio que somente com Big Data você conseguirá resolver.

Com Big Data um mundo de possibilidades se abre na nossa frente, porém é preciso ter muita cautela pois nem sempre as empresas precisam de Big Data. Uma boa Governança de dados é suficiente para a grande maioria das empresas (digo isso sem medo de errar… e sem nenhum estudo para comprovar… rsrs).

Se tudo o que você quer no momento é ter uma visão histórica de como está indo o seu negócio, Big Data ainda não é pra você. Se o seu negócio não gera dados na ordem de Terabytes, Big Data ainda não é pra você (a menos que você veja uma oportunidade de negócio onde você conseguirá utilizar dados de terceiro).

Então antes de tudo, defina o problema de negócio a ser resolvido, somente assim você saberá se precisa mesmo de um projeto de big data ou não.

E antes de iniciar um projeto de Big Data, comece por um projeto de Governança de Dados. É onde você conseguirá “por ordem na casa”. É onde os seus dados serão bem tratados, serão organizados, padronizados, ganharam “tutores”.

Existe um jargão no meio da informática que diz: “Garbage In, Garbage Out” (GIGO). Essa expressão diz respeito a qualidade dos dados que são inseridos, e consequentemente os dados que saem na outra ponta. Lixo entra, Lixo sai!

Conclusão

Sem sombra de dúvidas o big data chegou para ficar, mas ainda não é pra todos (e talvez nunca seja). É preciso não se deslumbrar pelas oportunidades que o big data trouxe, para que não haja perca de foco.

Lembre-se que o big data para ser útil, tem que resolver um problema de negócio, senão é pura perca de tempo e de dinheiro (porque é caro).

Lembre-se também que para o sucesso do projeto, os dados precisam ser bem tratados, para que você não tenho problemas de GIGO. Estudos mostram que a maior parte do tempo gasto por cientistas de dados e engenheiros de dados está na etapa de “limpeza” dos dados. Por isso um projeto de Governança de Dados é tão importante, e que pode acabar por te mostrar que você não precisa de Big Data… ainda!

Antes de sair… dá uma conferida na série de posts para o Projeto Video Creator que eu postei aqui no blog. O projeto é baseado nessa série: Programei 4 robôs que criam vídeos para mim no YouTube.

Pra quem curte automatizar o trabalho, vai gostar do conteúdo =D.

Abraço!

Exit mobile version