salomonsky commited on
Commit
4d8755f
·
1 Parent(s): 5ce8f40

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -38
app.py CHANGED
@@ -2,8 +2,9 @@ import os
2
  import zipfile
3
  import random
4
  import base64
5
- from io import BytesIO
6
  import streamlit as st
 
7
  from moviepy.editor import vfx
8
  from streamlit_option_menu import option_menu
9
  from youtube import youtube, download_youtube
@@ -22,8 +23,8 @@ def random_cuts(video_file, title, num_cuts=1, duration=60, speed_factor=1.0, mu
22
  cuts = []
23
 
24
  for _ in range(num_cuts):
25
- start_time = random.uniform(0, max(total_duration - duration * 60, 0))
26
- end_time = min(start_time + duration * 60, total_duration)
27
  cuts.append((start_time, end_time))
28
 
29
  output_files = []
@@ -73,6 +74,13 @@ def download_all_button(cut_files):
73
  href = f'<a href="data:application/zip;base64,{b64}" download="{zip_filename}">Descargar Todos</a>'
74
  st.markdown(href, unsafe_allow_html=True)
75
 
 
 
 
 
 
 
 
76
  if seleccionado:
77
  indice = opciones.index(seleccionado)
78
  funcion = funciones[indice]
@@ -81,7 +89,7 @@ if seleccionado:
81
 
82
  video_link = st.text_input("Enlace del Video", value='https://www.youtube.com/watch?v=or_wwcB9pGQ&t=226s')
83
  choice = st.radio('Seleccionar Proceso:', ['Cortar Video', 'Descargar Completo'], 0)
84
-
85
  if choice == 'Cortar Video':
86
  num_cuts = st.slider('Seleccionar número de cortes', 1, 10, 2)
87
  duration_slider = st.slider('Seleccionar duración de los cortes', 10, 900, 60)
@@ -90,47 +98,21 @@ if seleccionado:
90
  use_9_16 = st.checkbox('Proporción 9:16')
91
 
92
  if st.button(f"Descargar y Cortar {seleccionado}"):
93
- video_file, titulo_video, _, thumbnail_file = funcion(video_link)
94
-
95
- st.video(video_file) # Mostrar la previsualización del video
96
 
97
  cut_files, cuts = random_cuts(video_file, titulo_video, num_cuts=num_cuts, duration=duration_slider, speed_factor=speed_factor, mute_audio=mute_audio, use_9_16=use_9_16)
98
 
99
  for i, cut_file in enumerate(cut_files):
 
100
  info_list = [f"{titulo_video}_cut_{i+1}", cut_file, thumbnail_file, cuts[i][0], cuts[i][1]]
101
  session(info_list)
102
 
103
  download_all_button(cut_files)
104
 
105
  else:
106
- if st.button("Descargar y Cortar"):
107
- video_link = st.text_input("Enlace del Video", value='https://www.youtube.com/watch?v=or_wwcB9pGQ&t=226s')
108
-
109
- video_file, titulo_video, _, thumbnail_file = youtube(video_link)
110
- st.video(video_file) # Mostrar la previsualización del video
111
-
112
- num_cuts = st.slider('Seleccionar número de cortes', 1, 10, 2)
113
- duration_slider = st.slider('Seleccionar duración de los cortes (minutos)', 1, 360, 60)
114
- speed_factor = st.slider('Seleccionar velocidad del video', -2.0, 3.0, 1.0)
115
- mute_audio = st.checkbox('Eliminar sonido de los videos cortados')
116
- use_9_16 = st.checkbox('Proporción 9:16')
117
-
118
- cut_files, cuts = random_cuts(video_file, titulo_video, num_cuts=num_cuts, duration=duration_slider, speed_factor=speed_factor, mute_audio=mute_audio, use_9_16=use_9_16)
119
-
120
- for i, cut_file in enumerate(cut_files):
121
- info_list = [f"{titulo_video}_cut_{i+1}", cut_file, thumbnail_file, cuts[i][0], cuts[i][1]]
122
- session(info_list)
123
-
124
- download_all_button(cut_files)
125
-
126
- else:
127
- if st.button("Descargar Completo"):
128
- video_link = st.text_input("Enlace del Video", value='https://www.youtube.com/watch?v=or_wwcB9pGQ&t=226s')
129
-
130
- video_file, titulo_video, _, thumbnail_file = youtube(video_link)
131
- st.video(video_file) # Mostrar la previsualización del video
132
-
133
- file_size = os.path.getsize(video_file)
134
- info_list = [titulo_video, video_file, thumbnail_file]
135
- download_all_button([video_file])
136
- session(info_list)
 
2
  import zipfile
3
  import random
4
  import base64
5
+ from others import *
6
  import streamlit as st
7
+ from io import BytesIO
8
  from moviepy.editor import vfx
9
  from streamlit_option_menu import option_menu
10
  from youtube import youtube, download_youtube
 
23
  cuts = []
24
 
25
  for _ in range(num_cuts):
26
+ start_time = random.uniform(0, max(total_duration - duration, 0))
27
+ end_time = min(start_time + duration, total_duration)
28
  cuts.append((start_time, end_time))
29
 
30
  output_files = []
 
74
  href = f'<a href="data:application/zip;base64,{b64}" download="{zip_filename}">Descargar Todos</a>'
75
  st.markdown(href, unsafe_allow_html=True)
76
 
77
+ opciones = ['YouTube']
78
+
79
+ with st.sidebar:
80
+ seleccionado = option_menu("Descargador", opciones, icons=['play'], menu_icon="cast", default_index=0)
81
+
82
+ funciones = [youtube]
83
+
84
  if seleccionado:
85
  indice = opciones.index(seleccionado)
86
  funcion = funciones[indice]
 
89
 
90
  video_link = st.text_input("Enlace del Video", value='https://www.youtube.com/watch?v=or_wwcB9pGQ&t=226s')
91
  choice = st.radio('Seleccionar Proceso:', ['Cortar Video', 'Descargar Completo'], 0)
92
+
93
  if choice == 'Cortar Video':
94
  num_cuts = st.slider('Seleccionar número de cortes', 1, 10, 2)
95
  duration_slider = st.slider('Seleccionar duración de los cortes', 10, 900, 60)
 
98
  use_9_16 = st.checkbox('Proporción 9:16')
99
 
100
  if st.button(f"Descargar y Cortar {seleccionado}"):
101
+ video_file, titulo_video, video_info, thumbnail_file = funcion(video_link)
 
 
102
 
103
  cut_files, cuts = random_cuts(video_file, titulo_video, num_cuts=num_cuts, duration=duration_slider, speed_factor=speed_factor, mute_audio=mute_audio, use_9_16=use_9_16)
104
 
105
  for i, cut_file in enumerate(cut_files):
106
+ file_size = os.path.getsize(cut_file)
107
  info_list = [f"{titulo_video}_cut_{i+1}", cut_file, thumbnail_file, cuts[i][0], cuts[i][1]]
108
  session(info_list)
109
 
110
  download_all_button(cut_files)
111
 
112
  else:
113
+ if st.button(f"Descargar {seleccionado}"):
114
+ video_file, titulo_video, video_info, thumbnail_file = funcion(video_link)
115
+ file_size = os.path.getsize(video_file)
116
+ info_list = [titulo_video, video_file, thumbnail_file]
117
+ download_all_button([video_file])
118
+ session(info_list)