gnosticdev commited on
Commit
dc1e7fd
·
verified ·
1 Parent(s): 96a2458

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -15
app.py CHANGED
@@ -2,7 +2,6 @@ import gradio as gr
2
  from tts_module import get_voices, text_to_speech # Usamos el tts_module.py actualizado
3
  from pexels_api import search_pexels
4
  from moviepy.editor import AudioFileClip, VideoFileClip, CompositeAudioClip, concatenate_audioclips
5
-
6
  import asyncio
7
  import os
8
  import requests
@@ -39,6 +38,34 @@ def adjust_background_music(video_duration, music_file):
39
  music = music.volumex(0.2) # Reducir volumen al 20%
40
  return music
41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  # Combinar audio, video y música
43
  def combine_audio_video(audio_file, video_clip, music_clip=None):
44
  audio_clip = AudioFileClip(audio_file)
@@ -70,24 +97,13 @@ def process_input(text, txt_file, mp3_file, selected_voice, rate, pitch):
70
  except Exception as e:
71
  return f"Error con la voz seleccionada: {e}", None
72
 
73
- # Buscar video en Pexels
74
- query = " ".join(final_text.split(".")[:2]) # Usar las dos primeras oraciones como consulta
75
- if not query.strip():
76
- query = "generic" # Consulta genérica si no hay suficiente texto
77
-
78
  try:
79
- video_links = search_pexels(query, num_results=1)
80
- if not video_links:
81
- return "No se encontraron videos en Pexels para la consulta proporcionada.", None
82
  except Exception as e:
83
  return f"Error al buscar videos en Pexels: {e}", None
84
 
85
- # Descargar video de Pexels
86
- video_response = requests.get(video_links[0])
87
- with tempfile.NamedTemporaryFile(delete=False, suffix=".mp4") as tmp_video:
88
- tmp_video.write(video_response.content)
89
- video_clip = VideoFileClip(tmp_video.name)
90
-
91
  # Ajustar música de fondo
92
  if mp3_file is not None:
93
  music_clip = adjust_background_music(video_clip.duration, mp3_file.name)
 
2
  from tts_module import get_voices, text_to_speech # Usamos el tts_module.py actualizado
3
  from pexels_api import search_pexels
4
  from moviepy.editor import AudioFileClip, VideoFileClip, CompositeAudioClip, concatenate_audioclips
 
5
  import asyncio
6
  import os
7
  import requests
 
38
  music = music.volumex(0.2) # Reducir volumen al 20%
39
  return music
40
 
41
+ # Concatenar múltiples videos de Pexels
42
+ def concatenate_pexels_videos(text, num_videos=5):
43
+ sentences = [sentence.strip() for sentence in text.split(".") if sentence.strip()]
44
+ video_links = []
45
+
46
+ for sentence in sentences:
47
+ try:
48
+ links = search_pexels(sentence, num_results=num_videos)
49
+ video_links.append(links[0]) # Usamos el primer video encontrado para cada frase
50
+ except Exception as e:
51
+ print(f"Error al buscar video para la frase '{sentence}': {e}")
52
+ continue
53
+
54
+ if not video_links:
55
+ raise Exception("No se encontraron videos relevantes para el texto proporcionado.")
56
+
57
+ video_clips = []
58
+ for link in video_links:
59
+ video_response = requests.get(link)
60
+ with tempfile.NamedTemporaryFile(delete=False, suffix=".mp4") as tmp_video:
61
+ tmp_video.write(video_response.content)
62
+ video_clips.append(VideoFileClip(tmp_video.name))
63
+
64
+ final_clip = concatenate_videoclips(video_clips, method="compose")
65
+ output_path = tempfile.NamedTemporaryFile(delete=False, suffix=".mp4").name
66
+ final_clip.write_videofile(output_path, codec="libx264", audio_codec="aac", fps=24)
67
+ return output_path
68
+
69
  # Combinar audio, video y música
70
  def combine_audio_video(audio_file, video_clip, music_clip=None):
71
  audio_clip = AudioFileClip(audio_file)
 
97
  except Exception as e:
98
  return f"Error con la voz seleccionada: {e}", None
99
 
100
+ # Concatenar múltiples videos de Pexels basados en el texto
 
 
 
 
101
  try:
102
+ video_clip_path = concatenate_pexels_videos(final_text, num_videos=5)
103
+ video_clip = VideoFileClip(video_clip_path)
 
104
  except Exception as e:
105
  return f"Error al buscar videos en Pexels: {e}", None
106
 
 
 
 
 
 
 
107
  # Ajustar música de fondo
108
  if mp3_file is not None:
109
  music_clip = adjust_background_music(video_clip.duration, mp3_file.name)