feat: mvp
This commit is contained in:
61
main.py
Normal file
61
main.py
Normal file
@@ -0,0 +1,61 @@
|
||||
import asyncio
|
||||
from rich.console import Console
|
||||
from dubbing.cli import (
|
||||
select_language,
|
||||
select_model,
|
||||
select_project,
|
||||
display_cache_status,
|
||||
select_cache_strategy,
|
||||
confirm_run,
|
||||
)
|
||||
from dubbing.pipeline import Pipeline
|
||||
|
||||
console = Console()
|
||||
|
||||
TRANSLATE_STEP_INDEX = 2
|
||||
|
||||
|
||||
def main():
|
||||
console.print("[bold]Fucking Chinese Dramas Dubbing Pipeline[/]\n")
|
||||
|
||||
# 1. Select project first
|
||||
project = select_project()
|
||||
if not project:
|
||||
return
|
||||
console.print(f"[dim]Selected project: {project}[/]\n")
|
||||
|
||||
# 2. Select language
|
||||
language = select_language()
|
||||
console.print(f"[dim]Selected language: {language.value.upper()}[/]\n")
|
||||
|
||||
# 3. Create pipeline with dummy model to check cache
|
||||
pipeline = Pipeline(project, "gemini-2.0-flash-lite", language)
|
||||
|
||||
statuses = pipeline.get_cache_status()
|
||||
display_cache_status(statuses)
|
||||
console.print()
|
||||
|
||||
# 4. Select cache strategy
|
||||
rebuild_from = select_cache_strategy(statuses)
|
||||
|
||||
# 5. Only ask for model if translation needs to run
|
||||
translate_cached = statuses[TRANSLATE_STEP_INDEX].cached
|
||||
needs_translation = (
|
||||
rebuild_from >= 0 and rebuild_from <= TRANSLATE_STEP_INDEX
|
||||
) or (rebuild_from == -1 and not translate_cached)
|
||||
|
||||
if needs_translation:
|
||||
model = select_model()
|
||||
console.print(f"[dim]Selected model: {model}[/]\n")
|
||||
pipeline = Pipeline(project, model, language)
|
||||
|
||||
if not confirm_run():
|
||||
console.print("[yellow]Cancelled[/]")
|
||||
return
|
||||
|
||||
console.print()
|
||||
asyncio.run(pipeline.run(rebuild_from))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user