Raspe postagens do Reddit e geram automaticamente vídeos e miniaturas do YouTube
Feche meu canal do YouTube, por exemplo, vídeos feitos por este repositório:
Que crime você está bem com as pessoas que cometem? 
Que show não tem personagens agradáveis? 
Os canais do YouTube gerados usando este repo:
Se o seu canal do YouTube for gerado usando este repositório e você gostaria que ele esteja listado acima, comente sobre esta edição nº 91 com o URL do canal do YouTube e o nome do canal e mencione que você gostaria que ele seja listado no arquivo principal ReadMe.
Assista ao vídeo tutorial do python reddit youtube bot: 
Instale esses componentes de pré -requisito primeiro:
Git - https://git-scm.com/download/win
Python 3.10-https://www.python.org/ftp/python/3.10.0/python-3.10.0-amd64.exe
Ferramentas de construção da Microsoft C ++-https://visualstudio.microsoft.com/visual-cpp-build-tools/
ImageMagick - https://imagemagick.org/script/download.php#windows
git clone [email protected]:alexlaverty/python-reddit-youtube-bot.git
cd python-reddit-youtube-bot
Gere tokens de PRAW Reddit - https://www.reddit.com/prefs/apps/
Crie uma cópia do arquivo auth-exemple.py e nomeie-o auth.py:
copy config/auth-example.py config/auth.py
Atualize o arquivo auth.py para conter os tokens de autenticação do Reddit que você gerou na etapa anterior.
pip install -r requirements.txt
Instale e configure o dramaturgo em execução:
playwright install
Execute o script Python:
python app.py
Quando concluir, o vídeo será gerado na pasta videos e será nomeado final.mp4
Se você deseja adicionar um plano de fundo de vídeo, instale o YT-DLP:
yt-dlp
Em seguida, crie uma pasta backgrounds e execute o seguinte comando:
mkdir -p assets/backgrounds
cd assets/backgrounds
yt-dlp --playlist-items 1:10 -f 22 --output "%(uploader)s_%(id)s.%(ext)s" https://www.youtube.com/playlist?list=PLGmxyVGSCDKvmLInHxJ9VdiwEb82Lxd2E
Você pode visualizar os parâmetros disponíveis, passando --help :
python app.py --help
##### YOUTUBE REDDIT BOT #####
usage: app.py [-h] [-l VIDEO_LENGTH] [-o] [-s] [-t] [-u URL]
options:
-h, --help show this help message and exit
-l VIDEO_LENGTH, --video-length VIDEO_LENGTH
Set how long you want the video to be
-o, --disable-overlay
Disable video overlay
-s, --story-mode Generate video for post title and selftext only, disables user comments
-t, --thumbnail-only Generate thumbnail image only
-u URL, --url URL Specify Reddit post url, seperate with a comma for multiple posts.
Ou se você deseja gerar um vídeo para uma postagem específica do Reddit, pode especificá -lo através do --url Param:
python app.py --url https://www.reddit.com/r/AskReddit/comments/hvsxty/which_legendary_reddit_post_comment_can_you_still/
Ou você pode fazer vários URLs separando -se com uma vírgula, ou seja:
python app.py --url https://www.reddit.com/r/post1,https://www.reddit.com/r/post2,https://www.reddit.com/r/post3
Se você deseja gerar apenas miniaturas que você pode especificar --thumbnail-only , isso ignorará o processo de compilação de vídeo:
python app.py --thumbnail-only
Se você deseja habilitar um apresentador de notícias, edite Settings.py e Set:
enable_newscaster = True

Se o vídeo do NewCaster tiver uma tela verde, você poderá removê -lo com as seguintes configurações, use um conta -gotas para obter a cor RGB da tela verde e configurá -lo para removê -lo:
newscaster_remove_greenscreen = True
newscaster_greenscreen_color = [1, 255, 17] # Enter the Green Screen RGB Colour
newscaster_greenscreen_remove_threshold = 100
Existem algumas opções que você pode personalizar no arquivo settings.py :
Especifique quais subreddits você deseja raspar:
subreddits = [
"AmItheAsshole",
"antiwork",
"AskMen",
"ChoosingBeggars",
"hatemyjob",
"NoStupidQuestions",
"pettyrevenge",
"Showerthoughts",
"TooAfraidToAsk",
"TwoXChromosomes",
"unpopularopinion",
"confessions",
"confession"
]
Subreddits para excluir:
subreddits_excluded = [
"r/CFB",
]
Filtrar postagens do Reddit via palavras -chave especificadas
banned_keywords =["my", "nasty", "keywords"]
Altere o texto para o mecanismo de fala que você deseja usar, observe a AWS Polly requer e a conta da AWS e os tokens de autenticação e pode incorrer em custos:
Suporta motores de fala:
# choices "polly","balcon","gtts"
voice_engine = "polly"
Número total de vídeos do Reddit para gerar
total_posts_to_process = 5
As próximas configurações são filtrar automaticamente as postagens
Pule as postagens do Reddit que menos do que esta quantidade de atualizações
minimum_submission_score = 5000
Filtrando as postagens do Reddit com base no comprimento do título do Post Reddit
title_length_minimum = 20
title_length_maximum = 100
Filtrar postagens que excedem o comprimento máximo de auto -texto
maximum_length_self_text = 5000
Filtre as postagens do Reddit que não têm comentários suficientes
minimum_num_comments = 200
Tente apenas processar uma quantidade máxima de postagens do Reddit
submission_limit = 1000
Especifique quantas imagens de miniatura você deseja gerar
number_of_thumbnails = 3
Especifique o comprimento máximo de vídeo
max_video_length = 600 # Seconds
Especifique a quantidade máxima de comentários para gerar no vídeo
comment_limit = 600
Especificando vários caminhos de pasta
assets_directory = "assets"
temp_directory = "temp"
audio_directory = str(Path("temp"))
fonts_directory = str(Path(assets_directory,"fonts"))
image_backgrounds_directory = str(Path(assets_directory,"image_backgrounds"))
images_directory = str(Path(assets_directory,"images"))
thumbnails_directory = str(Path(assets_directory,"images"))
background_directory = str(Path(assets_directory,"backgrounds"))
video_overlay_filepath = str(Path(assets_directory,"particles.mp4"))
videos_directory = "videos"
Especifique a altura e a largura do vídeo
video_height = 720
video_width = 1280
clip_size = (video_width, video_height)
Pule compilando o vídeo e apenas saia em vez disso
enable_compilation = True
Pule o upload para o YouTube
enable_upload = False
Adicione uma sobreposição de vídeo ao vídeo, por exemplo, efeito de queda de neve
enable_overlay = True
Adicione um leitor de apresentadores ao vídeo
enable_newscaster = True
Se o vídeo NewCaster for uma tentativa de tela verde para remover a tela verde
newscaster_remove_greenscreen = True
Especifique a cor da tela verde em RGB
newscaster_greenscreen_color = [1, 255, 17] # Enter the Green Screen RGB Colour
Quanto maior o número do limite verde -verde, mais ele tentará remover
newscaster_greenscreen_remove_threshold = 100
Caminho para o arquivo NewCaster
newscaster_filepath = str(Path(assets_directory,"newscaster.mp4").resolve())
Posição na tela do apresentador
newscaster_position = ("left","bottom")
O tamanho do apresentador de notícias
newcaster_size = (video_width * 0.5, video_height * 0.5)
Adicione uma pausa após cada texto ao arquivo de áudio de fala
pause = 1 # Pause after speech
Configurações de estilo de texto
text_bg_color = "#1A1A1B"
text_bg_opacity = 1
text_color = "white"
text_font = "Verdana-Bold"
text_fontsize = 32
Baixe imagens da Lexica ou Skip tentando baixar
lexica_download_enabled = True