RO-Rtechs commited on
Commit
f8e63fc
·
verified ·
1 Parent(s): bf432bc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -12
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 + [new_row]
108
 
109
  def remove_segment(segments, index):
110
- return segments[:index] + segments[index+1:]
111
 
112
  def move_segment(segments, old_index, new_index):
113
- segments_list = segments.values.tolist() # Convert Dataframe to list
114
- if 0 <= old_index < len(segments_list) and 0 <= new_index < len(segments_list):
115
- segment = segments_list.pop(old_index)
116
- segments_list.insert(new_index, segment)
117
- return segments_list
118
 
119
- def parse_segments(segments: List[str]) -> List[Tuple[int, int]]:
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
- segment_list = [segment[0] for segment in segments if segment[0].strip()]
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
  )