Raspe las publicaciones de Reddit y genere automáticamente videos y miniaturas de YouTube
Consulte mi canal de YouTube, por ejemplo, videos realizados por este repositorio:
¿Qué crimen estás de acuerdo con la gente que se compromete? 
¿Qué programa no tiene personajes agradables? 
Canales de YouTube generados usando este repositorio:
Si se genera su canal de YouTube usando este repositorio y desea que se enumere anteriormente, comente sobre este número #91 con su URL de canal de YouTube y su nombre de canal y mencione que le gustaría que se enumere en el archivo ReadMe principal.
Mira el video Tutorial de Python Reddit YouTube Bot: 
Instale primero estos componentes de requisitos previos:
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
Herramientas de compilación de 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
Genere tokens Reddit Praw - https://www.reddit.com/prefs/apps/
Cree una copia del archivo Auth-EXample.py y nómbrelo Auth.py:
copy config/auth-example.py config/auth.py
Actualice el archivo auth.py para contener los tokens de autenticación Reddit que generó en el paso anterior.
pip install -r requirements.txt
Instale y configure el dramaturgo ejecutando:
playwright install
Ejecute el guión de Python:
python app.py
Cuando se complete, el video se generará en la carpeta videos y se nombrará final.mp4
Si desea agregar un fondo de video, instale YT-DLP:
YT-DLP
Luego cree una carpeta backgrounds y ejecute el siguiente 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
Puede ver los parámetros disponibles pasando --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.
O si desea generar un video para una publicación específica de Reddit, puede especificarlo a través del parámetro --url :
python app.py --url https://www.reddit.com/r/AskReddit/comments/hvsxty/which_legendary_reddit_post_comment_can_you_still/
O puede hacer múltiples URL separando con una coma, es decir:
python app.py --url https://www.reddit.com/r/post1,https://www.reddit.com/r/post2,https://www.reddit.com/r/post3
Si desea generar solo miniaturas que pueda especificar, modo --thumbnail-only , esto se omitirá el proceso de compilación de video:
python app.py --thumbnail-only
Si desea habilitar un presentador de noticias, edite settings.py y establezca:
enable_newscaster = True

Si el video Newcaster tiene una pantalla verde, puede eliminarlo con la siguiente configuración, use un gotero para obtener el color RGB de la pantalla verde y configure que se elimine:
newscaster_remove_greenscreen = True
newscaster_greenscreen_color = [1, 255, 17] # Enter the Green Screen RGB Colour
newscaster_greenscreen_remove_threshold = 100
Hay bastantes opciones que puede personalizar en el archivo settings.py :
Especifique qué subreddits desea raspar:
subreddits = [
"AmItheAsshole",
"antiwork",
"AskMen",
"ChoosingBeggars",
"hatemyjob",
"NoStupidQuestions",
"pettyrevenge",
"Showerthoughts",
"TooAfraidToAsk",
"TwoXChromosomes",
"unpopularopinion",
"confessions",
"confession"
]
Subreddits para excluir:
subreddits_excluded = [
"r/CFB",
]
Filtrar publicaciones de Reddit a través de palabras clave especificadas
banned_keywords =["my", "nasty", "keywords"]
Cambie el texto al motor del habla que desea usar, nota que AWS Polly requiere y la cuenta de AWS y los tokens de autenticación y pueden incurrir en costos:
Apoya los motores de habla:
# choices "polly","balcon","gtts"
voice_engine = "polly"
Número total de videos de Reddit para generar
total_posts_to_process = 5
La siguiente configuración es filtrar automáticamente las publicaciones
Omita las publicaciones de Reddit que menos de esta cantidad de actualizaciones
minimum_submission_score = 5000
Filtrando publicaciones Reddit basadas en la longitud del título de Reddit Post
title_length_minimum = 20
title_length_maximum = 100
Filtrar publicaciones que excedan la longitud máxima de auto texto
maximum_length_self_text = 5000
Filtrar publicaciones de Reddit que no tienen suficientes comentarios
minimum_num_comments = 200
Solo intente procesar una cantidad máxima de publicaciones de Reddit
submission_limit = 1000
Especifique cuántas imágenes en miniatura desea generar
number_of_thumbnails = 3
Especificar la longitud máxima del video
max_video_length = 600 # Seconds
Especificar la cantidad máxima de comentarios para generar en el video
comment_limit = 600
Especificando varias rutas de carpeta
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"
Especificar altura y ancho del video
video_height = 720
video_width = 1280
clip_size = (video_width, video_height)
Omita compilar el video y simplemente salga en su lugar
enable_compilation = True
Skip Subiendo a YouTube
enable_upload = False
Agregue una superposición de video al video, por ejemplo, el efecto de caída de nieve
enable_overlay = True
Agregue un lector de noticias al video
enable_newscaster = True
Si el video de Newcaster es una pantalla verde, intente eliminar la pantalla verde
newscaster_remove_greenscreen = True
Especifique el color de la pantalla verde en RGB
newscaster_greenscreen_color = [1, 255, 17] # Enter the Green Screen RGB Colour
Cuanto mayor sea el número de umbral de pantalla verde, más intentará eliminar
newscaster_greenscreen_remove_threshold = 100
Ruta al archivo Newcaster
newscaster_filepath = str(Path(assets_directory,"newscaster.mp4").resolve())
Posición en la pantalla de la presentadora de noticias
newscaster_position = ("left","bottom")
El tamaño del presentador de noticias
newcaster_size = (video_width * 0.5, video_height * 0.5)
Agregue una pausa después de cada texto al archivo de audio del habla
pause = 1 # Pause after speech
Configuración de estilo de texto
text_bg_color = "#1A1A1B"
text_bg_opacity = 1
text_color = "white"
text_font = "Verdana-Bold"
text_fontsize = 32
Descargue imágenes de léxica o saltee tratando de descargar
lexica_download_enabled = True