57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
import os
|
|
import pandas as pd
|
|
from rich.console import Console
|
|
from rich.panel import Panel
|
|
|
|
# Constants
|
|
SETTINGS_FILE = 'batch/tasks_setting.xlsx'
|
|
INPUT_FOLDER = os.path.join('batch', 'input')
|
|
VALID_DUBBING_VALUES = [0, 1]
|
|
|
|
console = Console()
|
|
|
|
def check_settings():
|
|
os.makedirs(INPUT_FOLDER, exist_ok=True)
|
|
df = pd.read_excel(SETTINGS_FILE)
|
|
input_files = set(os.listdir(INPUT_FOLDER))
|
|
excel_files = set(df['Video File'].tolist())
|
|
files_not_in_excel = input_files - excel_files
|
|
|
|
all_passed = True
|
|
local_video_tasks = 0
|
|
url_tasks = 0
|
|
|
|
if files_not_in_excel:
|
|
console.print(Panel(
|
|
"\n".join([f"- {file}" for file in files_not_in_excel]),
|
|
title="[bold red]Warning: Files in input folder not mentioned in Excel sheet",
|
|
expand=False
|
|
))
|
|
all_passed = False
|
|
|
|
for index, row in df.iterrows():
|
|
video_file = row['Video File']
|
|
source_language = row['Source Language']
|
|
dubbing = row['Dubbing']
|
|
|
|
if video_file.startswith('http'):
|
|
url_tasks += 1
|
|
elif os.path.isfile(os.path.join(INPUT_FOLDER, video_file)):
|
|
local_video_tasks += 1
|
|
else:
|
|
console.print(Panel(f"Invalid video file or URL 「{video_file}」", title=f"[bold red]Error in row {index + 2}", expand=False))
|
|
all_passed = False
|
|
|
|
if not pd.isna(dubbing):
|
|
if int(dubbing) not in VALID_DUBBING_VALUES:
|
|
console.print(Panel(f"Invalid dubbing value 「{dubbing}」", title=f"[bold red]Error in row {index + 2}", expand=False))
|
|
all_passed = False
|
|
|
|
if all_passed:
|
|
console.print(Panel(f"✅ All settings passed the check!\nDetected {local_video_tasks} local video tasks and {url_tasks} URL tasks.", title="[bold green]Success", expand=False))
|
|
|
|
return all_passed
|
|
|
|
|
|
if __name__ == "__main__":
|
|
check_settings() |