gnosticdev commited on
Commit
319260b
verified
1 Parent(s): f24aa65

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -10
app.py CHANGED
@@ -12,7 +12,9 @@ import json
12
  import time
13
  import requests
14
  import random
15
- from google_drive_upload import authenticate_google_drive, upload_to_google_drive
 
 
16
  from io import BytesIO
17
 
18
  # Crear el archivo de credenciales de servicio desde los secretos
@@ -171,6 +173,38 @@ def combine_audio_video(audio_file, video_clip, music_clip=None):
171
  final_clip.close()
172
  return None
173
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  def process_input(text, txt_file, mp3_file, selected_voice, rate, pitch, keywords):
175
  """Procesa la entrada del usuario y genera el video final."""
176
  try:
@@ -197,14 +231,13 @@ def process_input(text, txt_file, mp3_file, selected_voice, rate, pitch, keyword
197
  final_video_path = combine_audio_video(audio_file, video_clip, music_clip)
198
  if not final_video_path:
199
  raise ValueError("Failed to combine audio and video")
200
- # Subimos a Google Drive
201
- video_id = upload_to_google_drive(final_video_path, folder_id=FOLDER_ID)
202
- if video_id:
203
- print(f"Video subido a Google Drive con ID: {video_id}")
 
204
  else:
205
- print("Error subiendo el video a Google Drive")
206
-
207
- return final_video_path
208
  except Exception as e:
209
  print(f"Error durante el procesamiento: {e}")
210
  return None
@@ -228,13 +261,13 @@ with gr.Blocks() as demo:
228
  rate_slider = gr.Slider(minimum=-50, maximum=50, value=0, label="Speech Rate Adjustment (%)", step=1)
229
  pitch_slider = gr.Slider(minimum=-20, maximum=20, value=0, label="Pitch Adjustment (Hz)", step=1)
230
  with gr.Column():
231
- output_video = gr.File(label="Generated Video") # En lugar de gr.Video
232
 
233
  btn = gr.Button("Generate Video")
234
  btn.click(
235
  process_input,
236
  inputs=[text_input, txt_file_input, mp3_file_input, voice_dropdown, rate_slider, pitch_slider, keyword_input],
237
- outputs=output_video
238
  )
239
 
240
  # Leer el puerto asignado por Hugging Face
 
12
  import time
13
  import requests
14
  import random
15
+ from googleapiclient.discovery import build
16
+ from google.oauth2 import service_account
17
+ from googleapiclient.http import MediaFileUpload
18
  from io import BytesIO
19
 
20
  # Crear el archivo de credenciales de servicio desde los secretos
 
173
  final_clip.close()
174
  return None
175
 
176
+ def upload_to_google_drive(file_path, folder_id):
177
+ """Sube un archivo a Google Drive y devuelve el enlace p煤blico."""
178
+ try:
179
+ # Autenticaci贸n
180
+ creds = service_account.Credentials.from_service_account_file(
181
+ 'service-account.json', scopes=['https://www.googleapis.com/auth/drive']
182
+ )
183
+ service = build('drive', 'v3', credentials=creds)
184
+
185
+ # Subir el archivo
186
+ file_metadata = {
187
+ 'name': os.path.basename(file_path),
188
+ 'parents': [folder_id]
189
+ }
190
+ media = MediaFileUpload(file_path, resumable=True)
191
+ file = service.files().create(body=file_metadata, media_body=media, fields='id').execute()
192
+
193
+ # Hacer el archivo p煤blico
194
+ permission = {
195
+ 'type': 'anyone',
196
+ 'role': 'reader'
197
+ }
198
+ service.permissions().create(fileId=file['id'], body=permission).execute()
199
+
200
+ # Generar el enlace de descarga
201
+ file_id = file['id']
202
+ download_link = f"https://drive.google.com/uc?export=download&id={file_id}"
203
+ return download_link
204
+ except Exception as e:
205
+ print(f"Error subiendo a Google Drive: {e}")
206
+ return None
207
+
208
  def process_input(text, txt_file, mp3_file, selected_voice, rate, pitch, keywords):
209
  """Procesa la entrada del usuario y genera el video final."""
210
  try:
 
231
  final_video_path = combine_audio_video(audio_file, video_clip, music_clip)
232
  if not final_video_path:
233
  raise ValueError("Failed to combine audio and video")
234
+ # Subimos a Google Drive y obtenemos el enlace
235
+ download_link = upload_to_google_drive(final_video_path, folder_id=FOLDER_ID)
236
+ if download_link:
237
+ print(f"Video subido a Google Drive. Enlace de descarga: {download_link}")
238
+ return f"[Descargar video]({download_link})"
239
  else:
240
+ raise ValueError("Error subiendo el video a Google Drive")
 
 
241
  except Exception as e:
242
  print(f"Error durante el procesamiento: {e}")
243
  return None
 
261
  rate_slider = gr.Slider(minimum=-50, maximum=50, value=0, label="Speech Rate Adjustment (%)", step=1)
262
  pitch_slider = gr.Slider(minimum=-20, maximum=20, value=0, label="Pitch Adjustment (Hz)", step=1)
263
  with gr.Column():
264
+ output_link = gr.Markdown("") # Mostrar el enlace de descarga
265
 
266
  btn = gr.Button("Generate Video")
267
  btn.click(
268
  process_input,
269
  inputs=[text_input, txt_file_input, mp3_file_input, voice_dropdown, rate_slider, pitch_slider, keyword_input],
270
+ outputs=output_link
271
  )
272
 
273
  # Leer el puerto asignado por Hugging Face