Update app.py
Browse files
app.py
CHANGED
@@ -9,6 +9,7 @@ from yt_dlp import YoutubeDL
|
|
9 |
import subprocess
|
10 |
import shutil
|
11 |
from typing import List, Tuple
|
|
|
12 |
|
13 |
def sanitize_title(title):
|
14 |
return re.sub(r'[\\/*?:"<>|]', "", title)
|
@@ -103,22 +104,22 @@ def add_segment(start_hours, start_minutes, start_seconds, end_hours, end_minute
|
|
103 |
start_time = f"{start_hours:02d}:{start_minutes:02d}:{start_seconds:02d}"
|
104 |
end_time = f"{end_hours:02d}:{end_minutes:02d}:{end_seconds:02d}"
|
105 |
new_segment = f"{start_time}-{end_time}"
|
106 |
-
new_row = [new_segment]
|
107 |
-
return segments
|
108 |
|
109 |
def remove_segment(segments, index):
|
110 |
-
return segments
|
111 |
|
112 |
def move_segment(segments, old_index, new_index):
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
return
|
118 |
|
119 |
-
def parse_segments(segments:
|
120 |
parsed_segments = []
|
121 |
-
for segment in segments:
|
122 |
start, end = map(lambda x: sum(int(i) * 60 ** j for j, i in enumerate(reversed(x.split(':')))), segment.split('-'))
|
123 |
if start < end:
|
124 |
parsed_segments.append((start, end))
|
@@ -129,8 +130,7 @@ def process_video(video_url, segments, combine, progress=gr.Progress()):
|
|
129 |
return 0, "Error: Please provide a valid YouTube URL", None
|
130 |
|
131 |
# Extract segments from the Dataframe
|
132 |
-
|
133 |
-
parsed_segments = parse_segments(segment_list)
|
134 |
if not parsed_segments:
|
135 |
return 0, "Error: No valid segments provided", None
|
136 |
|
@@ -201,6 +201,7 @@ with gr.Blocks(title="Advanced YouTube Segment Downloader", theme=gr.themes.Soft
|
|
201 |
headers=["Segment"],
|
202 |
row_count=5,
|
203 |
col_count=1,
|
|
|
204 |
interactive=True,
|
205 |
label="Segments"
|
206 |
)
|
|
|
9 |
import subprocess
|
10 |
import shutil
|
11 |
from typing import List, Tuple
|
12 |
+
import pandas as pd
|
13 |
|
14 |
def sanitize_title(title):
|
15 |
return re.sub(r'[\\/*?:"<>|]', "", title)
|
|
|
104 |
start_time = f"{start_hours:02d}:{start_minutes:02d}:{start_seconds:02d}"
|
105 |
end_time = f"{end_hours:02d}:{end_minutes:02d}:{end_seconds:02d}"
|
106 |
new_segment = f"{start_time}-{end_time}"
|
107 |
+
new_row = pd.DataFrame([new_segment], columns=["Segment"])
|
108 |
+
return pd.concat([segments, new_row], ignore_index=True)
|
109 |
|
110 |
def remove_segment(segments, index):
|
111 |
+
return segments.drop(index).reset_index(drop=True)
|
112 |
|
113 |
def move_segment(segments, old_index, new_index):
|
114 |
+
if 0 <= old_index < len(segments) and 0 <= new_index < len(segments):
|
115 |
+
segment = segments.iloc[old_index]
|
116 |
+
segments = segments.drop(old_index).reset_index(drop=True)
|
117 |
+
segments = pd.concat([segments.iloc[:new_index], pd.DataFrame([segment]), segments.iloc[new_index:]]).reset_index(drop=True)
|
118 |
+
return segments
|
119 |
|
120 |
+
def parse_segments(segments: pd.DataFrame) -> List[Tuple[int, int]]:
|
121 |
parsed_segments = []
|
122 |
+
for segment in segments['Segment']:
|
123 |
start, end = map(lambda x: sum(int(i) * 60 ** j for j, i in enumerate(reversed(x.split(':')))), segment.split('-'))
|
124 |
if start < end:
|
125 |
parsed_segments.append((start, end))
|
|
|
130 |
return 0, "Error: Please provide a valid YouTube URL", None
|
131 |
|
132 |
# Extract segments from the Dataframe
|
133 |
+
parsed_segments = parse_segments(segments)
|
|
|
134 |
if not parsed_segments:
|
135 |
return 0, "Error: No valid segments provided", None
|
136 |
|
|
|
201 |
headers=["Segment"],
|
202 |
row_count=5,
|
203 |
col_count=1,
|
204 |
+
datatype=["str"],
|
205 |
interactive=True,
|
206 |
label="Segments"
|
207 |
)
|