karaoke-gen 0.72.2__tar.gz → 0.73.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/PKG-INFO +1 -1
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/audio_fetcher.py +36 -37
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/utils/remote_cli.py +55 -26
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/pyproject.toml +1 -1
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/LICENSE +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/README.md +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/audio_processor.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/config.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/file_handler.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/instrumental_review/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/instrumental_review/analyzer.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/instrumental_review/editor.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/instrumental_review/models.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/instrumental_review/server.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/instrumental_review/static/index.html +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/instrumental_review/waveform.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/karaoke_finalise/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/karaoke_finalise/karaoke_finalise.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/karaoke_gen.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/lyrics_processor.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/metadata.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/base.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/context.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/executors/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/executors/local.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/executors/remote.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/stages/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/stages/finalize.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/stages/render.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/stages/screens.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/stages/separation.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/stages/transcription.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/resources/AvenirNext-Bold.ttf +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/resources/Montserrat-Bold.ttf +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/resources/Oswald-Bold.ttf +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/resources/Oswald-SemiBold.ttf +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/resources/Zurich_Cn_BT_Bold.ttf +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/style_loader.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/utils/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/utils/bulk_cli.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/utils/cli_args.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/utils/gen_cli.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/video_background_processor.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/video_generator.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/cli/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/cli/cli_main.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/core/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/core/config.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/core/controller.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/adapter.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/agent.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/aggregator.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/collector.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/retention.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/store.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/ambiguous.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/background_vocals.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/base.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/complex_multi_error.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/extra_words.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/no_error.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/punctuation.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/registry.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/repeated_section.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/sound_alike.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/ai_correction.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/correction_session.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/enums.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/human_feedback.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/learning_data.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/observability_metrics.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/schemas.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/utils.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/langfuse_integration.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/metrics.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/performance.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/prompts/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/prompts/classifier.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/base.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/circuit_breaker.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/config.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/constants.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/health.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/langchain_bridge.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/model_factory.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/response_cache.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/response_parser.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/retry_executor.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/router.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/consensus_workflow.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/correction_graph.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/feedback_workflow.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/anchor_sequence.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/corrector.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/schemas.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/store.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/base.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/extend_anchor.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/levenshtein.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/llm.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/llm_providers.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/no_space_punct_match.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/relaxed_word_count_match.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/repeat.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/sound_alike.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/syllables_match.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/word_count_match.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/word_operations.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/operations.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/phrase_analyzer.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/text_utils.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/.gitignore +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/.yarn/releases/yarn-4.7.0.cjs +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/.yarnrc.yml +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/README.md +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/REPLACE_ALL_FUNCTIONALITY.md +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/eslint.config.js +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/index.html +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/package.json +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/android-chrome-192x192.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/android-chrome-512x512.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/apple-touch-icon.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon-16x16.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon-32x32.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon.ico +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/nomad-karaoke-logo.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/App.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/api.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AIFeedbackModal.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AddLyricsModal.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AgenticCorrectionMetrics.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AudioPlayer.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectedWordWithActions.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionAnnotationModal.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionDetailCard.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionMetrics.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/DurationTimelineView.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditActionBar.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditModal.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditTimelineSection.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditWordList.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/FileUpload.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/FindReplaceModal.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/Header.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsAnalyzer.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/SyncControls.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/TimelineCanvas.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/UpcomingWordsBar.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/index.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/MetricsDashboard.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModeSelectionModal.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModeSelector.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModelSelector.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/PreviewVideoSection.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReferenceView.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReplaceAllLyricsModal.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReviewChangesModal.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/SegmentDetailsModal.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TimelineEditor.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TimingOffsetModal.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TranscriptionView.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/WordDivider.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/HighlightedText.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/SourceSelector.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/Word.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/constants.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/hooks/useWordClick.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/styles.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/types.js +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/types.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/keyboardHandlers.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/localStorage.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/referenceLineCalculator.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/segmentOperations.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/timingUtils.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/wordUtils.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/hooks/useManualSync.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/main.tsx +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/theme.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types/global.d.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types.js +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/validation.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/vite-env.d.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.app.json +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.json +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.node.json +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.tsbuildinfo +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/update_version.js +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.d.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.js +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.ts +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/android-chrome-192x192.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/android-chrome-512x512.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/apple-touch-icon.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/assets/index-COYImAcx.js +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/assets/index-COYImAcx.js.map +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon-16x16.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon-32x32.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon.ico +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/index.html +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/nomad-karaoke-logo.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/yarn.lock +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/base_lyrics_provider.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/file_provider.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/genius.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/lrclib.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/musixmatch.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/spotify.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/user_input_provider.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/ass.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/ass_specs.txt +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/config.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/constants.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/event.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/formatters.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/lyrics_line.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/lyrics_screen.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/section_detector.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/section_screen.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/style.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdg.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/cdg.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/composer.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/config.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/images/instrumental.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/images/intro.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/pack.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/render.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/centertexttoplogobottomtext.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/circlein.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/circleout.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/fizzle.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/largecentertexttoplogo.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/rectangle.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/spiral.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/topleftmusicalnotes.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipein.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipeleft.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipeout.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wiperight.png +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/utils.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/countdown_processor.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/AvenirNext-Bold.ttf +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/DMSans-VariableFont_opsz,wght.ttf +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/DMSerifDisplay-Regular.ttf +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/Oswald-SemiBold.ttf +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/Zurich_Cn_BT_Bold.ttf +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/arial.ttf +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/georgia.ttf +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/verdana.ttf +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/generator.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/lrc_to_cdg.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/lyrics_file.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/plain_text.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/segment_resizer.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/subtitles.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/video.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/review/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/review/server.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/storage/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/storage/dropbox.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/audioshake.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/base_transcriber.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/whisper.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/types.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/utils/__init__.py +0 -0
- {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/utils/word_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: karaoke-gen
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.73.1
|
|
4
4
|
Summary: Generate karaoke videos with synchronized lyrics. Handles the entire process from downloading audio and lyrics to creating the final video with title screens.
|
|
5
5
|
License: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -26,6 +26,9 @@ class AudioSearchResult:
|
|
|
26
26
|
|
|
27
27
|
Used by both local CLI and cloud backend. Supports serialization
|
|
28
28
|
for Firestore storage via to_dict()/from_dict().
|
|
29
|
+
|
|
30
|
+
For rich display, this class can serialize the full flacfetch Release
|
|
31
|
+
data so remote CLIs can use flacfetch's shared display functions.
|
|
29
32
|
"""
|
|
30
33
|
|
|
31
34
|
title: str
|
|
@@ -36,15 +39,18 @@ class AudioSearchResult:
|
|
|
36
39
|
quality: Optional[str] = None # e.g., "FLAC", "320kbps", etc.
|
|
37
40
|
source_id: Optional[str] = None # Unique ID from the source
|
|
38
41
|
index: int = 0 # Index in the results list (for API selection)
|
|
42
|
+
seeders: Optional[int] = None # Number of seeders (for torrent sources)
|
|
43
|
+
target_file: Optional[str] = None # Target filename in the release
|
|
39
44
|
# Raw result object from the provider (for download) - not serialized
|
|
40
45
|
raw_result: Optional[object] = field(default=None, repr=False)
|
|
41
46
|
|
|
42
47
|
def to_dict(self) -> Dict[str, Any]:
|
|
43
48
|
"""Convert to dict for JSON/Firestore serialization.
|
|
44
49
|
|
|
45
|
-
|
|
50
|
+
Includes full flacfetch Release data if available, enabling
|
|
51
|
+
remote CLIs to use flacfetch's shared display functions.
|
|
46
52
|
"""
|
|
47
|
-
|
|
53
|
+
result = {
|
|
48
54
|
"title": self.title,
|
|
49
55
|
"artist": self.artist,
|
|
50
56
|
"url": self.url,
|
|
@@ -53,7 +59,28 @@ class AudioSearchResult:
|
|
|
53
59
|
"quality": self.quality,
|
|
54
60
|
"source_id": self.source_id,
|
|
55
61
|
"index": self.index,
|
|
62
|
+
"seeders": self.seeders,
|
|
63
|
+
"target_file": self.target_file,
|
|
56
64
|
}
|
|
65
|
+
|
|
66
|
+
# If we have a raw_result (flacfetch Release), include its full data
|
|
67
|
+
# This enables rich display on the remote CLI
|
|
68
|
+
if self.raw_result:
|
|
69
|
+
try:
|
|
70
|
+
release_dict = self.raw_result.to_dict()
|
|
71
|
+
# Merge Release fields into result (they may override basic fields)
|
|
72
|
+
for key in ['year', 'label', 'edition_info', 'release_type', 'channel',
|
|
73
|
+
'view_count', 'size_bytes', 'target_file_size', 'track_pattern',
|
|
74
|
+
'match_score', 'formatted_size', 'formatted_duration',
|
|
75
|
+
'formatted_views', 'is_lossless', 'quality_str', 'quality']:
|
|
76
|
+
if key in release_dict:
|
|
77
|
+
# Use 'quality_data' for the quality dict to avoid confusion with quality string
|
|
78
|
+
result_key = 'quality_data' if key == 'quality' else key
|
|
79
|
+
result[result_key] = release_dict[key]
|
|
80
|
+
except AttributeError:
|
|
81
|
+
pass # raw_result doesn't have to_dict() method
|
|
82
|
+
|
|
83
|
+
return result
|
|
57
84
|
|
|
58
85
|
@classmethod
|
|
59
86
|
def from_dict(cls, data: Dict[str, Any]) -> "AudioSearchResult":
|
|
@@ -67,6 +94,8 @@ class AudioSearchResult:
|
|
|
67
94
|
quality=data.get("quality"),
|
|
68
95
|
source_id=data.get("source_id"),
|
|
69
96
|
index=data.get("index", 0),
|
|
97
|
+
seeders=data.get("seeders"),
|
|
98
|
+
target_file=data.get("target_file"),
|
|
70
99
|
raw_result=None, # Not stored in serialized form
|
|
71
100
|
)
|
|
72
101
|
|
|
@@ -325,6 +354,8 @@ class FlacFetchAudioFetcher(AudioFetcher):
|
|
|
325
354
|
quality=quality_str,
|
|
326
355
|
source_id=getattr(result, "info_hash", None),
|
|
327
356
|
index=i, # Set index for API selection
|
|
357
|
+
seeders=getattr(result, "seeders", None),
|
|
358
|
+
target_file=getattr(result, "target_file", None),
|
|
328
359
|
raw_result=result,
|
|
329
360
|
)
|
|
330
361
|
)
|
|
@@ -632,41 +663,9 @@ class FlacFetchAudioFetcher(AudioFetcher):
|
|
|
632
663
|
Raises:
|
|
633
664
|
UserCancelledError: If user cancels selection
|
|
634
665
|
"""
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
for i, result in enumerate(results, 1):
|
|
640
|
-
# Use correct flacfetch attribute names
|
|
641
|
-
source_name = getattr(result, "source_name", "Unknown")
|
|
642
|
-
result_title = getattr(result, "title", "Unknown")
|
|
643
|
-
result_artist = getattr(result, "artist", "Unknown")
|
|
644
|
-
quality = getattr(result, "quality", None)
|
|
645
|
-
duration_seconds = getattr(result, "duration_seconds", None)
|
|
646
|
-
seeders = getattr(result, "seeders", None)
|
|
647
|
-
target_file = getattr(result, "target_file", None)
|
|
648
|
-
|
|
649
|
-
# Format duration if available
|
|
650
|
-
duration_str = ""
|
|
651
|
-
if duration_seconds:
|
|
652
|
-
minutes = duration_seconds // 60
|
|
653
|
-
seconds = duration_seconds % 60
|
|
654
|
-
duration_str = f" [{minutes}:{seconds:02d}]"
|
|
655
|
-
|
|
656
|
-
# Format quality - it's a Quality object with __str__
|
|
657
|
-
quality_str = f" ({quality})" if quality else ""
|
|
658
|
-
|
|
659
|
-
# Format seeders for torrent sources
|
|
660
|
-
seeders_str = f" Seeders: {seeders}" if seeders is not None else ""
|
|
661
|
-
|
|
662
|
-
# Format target file
|
|
663
|
-
file_str = f' "{target_file}"' if target_file else ""
|
|
664
|
-
|
|
665
|
-
print(f" {i}. [{source_name}] {result_artist} - {result_title}{quality_str}{duration_str}{seeders_str}{file_str}")
|
|
666
|
-
|
|
667
|
-
print()
|
|
668
|
-
print(" 0. Cancel")
|
|
669
|
-
print()
|
|
666
|
+
# Use flacfetch's shared display function
|
|
667
|
+
from flacfetch import print_releases
|
|
668
|
+
print_releases(results, target_artist=artist, use_colors=True)
|
|
670
669
|
|
|
671
670
|
while True:
|
|
672
671
|
try:
|
|
@@ -36,6 +36,8 @@ from typing import Any, Dict, Optional
|
|
|
36
36
|
import requests
|
|
37
37
|
|
|
38
38
|
from .cli_args import create_parser, process_style_overrides, is_url, is_file
|
|
39
|
+
# Use flacfetch's shared display functions for consistent formatting
|
|
40
|
+
from flacfetch import print_releases, Release
|
|
39
41
|
|
|
40
42
|
|
|
41
43
|
class JobStatus(str, Enum):
|
|
@@ -1517,6 +1519,47 @@ class JobMonitor:
|
|
|
1517
1519
|
except Exception as e:
|
|
1518
1520
|
self.logger.error(f"Error submitting selection: {e}")
|
|
1519
1521
|
|
|
1522
|
+
def _convert_api_result_to_release_dict(self, result: dict) -> dict:
|
|
1523
|
+
"""
|
|
1524
|
+
Convert API search result to a dict compatible with flacfetch's Release.from_dict().
|
|
1525
|
+
|
|
1526
|
+
This enables using flacfetch's shared display functions for consistent,
|
|
1527
|
+
rich formatting between local and remote CLIs.
|
|
1528
|
+
"""
|
|
1529
|
+
# Build quality dict from API response
|
|
1530
|
+
quality_data = result.get('quality_data') or {
|
|
1531
|
+
"format": "OTHER",
|
|
1532
|
+
"media": "OTHER",
|
|
1533
|
+
}
|
|
1534
|
+
|
|
1535
|
+
return {
|
|
1536
|
+
"title": result.get('title', ''),
|
|
1537
|
+
"artist": result.get('artist', ''),
|
|
1538
|
+
"source_name": result.get('provider', 'Unknown'),
|
|
1539
|
+
"download_url": result.get('url'),
|
|
1540
|
+
"info_hash": result.get('source_id'),
|
|
1541
|
+
"size_bytes": result.get('size_bytes'),
|
|
1542
|
+
"year": result.get('year'),
|
|
1543
|
+
"edition_info": result.get('edition_info'),
|
|
1544
|
+
"label": result.get('label'),
|
|
1545
|
+
"release_type": result.get('release_type'),
|
|
1546
|
+
"seeders": result.get('seeders'),
|
|
1547
|
+
"channel": result.get('channel'),
|
|
1548
|
+
"view_count": result.get('view_count'),
|
|
1549
|
+
"duration_seconds": result.get('duration'),
|
|
1550
|
+
"target_file": result.get('target_file'),
|
|
1551
|
+
"target_file_size": result.get('target_file_size'),
|
|
1552
|
+
"track_pattern": result.get('track_pattern'),
|
|
1553
|
+
"match_score": result.get('match_score', 0.0),
|
|
1554
|
+
"quality": quality_data,
|
|
1555
|
+
# Pre-computed fields
|
|
1556
|
+
"formatted_size": result.get('formatted_size'),
|
|
1557
|
+
"formatted_duration": result.get('formatted_duration'),
|
|
1558
|
+
"formatted_views": result.get('formatted_views'),
|
|
1559
|
+
"is_lossless": result.get('is_lossless', False),
|
|
1560
|
+
"quality_str": result.get('quality_str') or result.get('quality', ''),
|
|
1561
|
+
}
|
|
1562
|
+
|
|
1520
1563
|
def handle_audio_selection(self, job_id: str) -> None:
|
|
1521
1564
|
"""Handle audio source selection interaction (Batch 5)."""
|
|
1522
1565
|
self.logger.info("=" * 60)
|
|
@@ -1527,6 +1570,7 @@ class JobMonitor:
|
|
|
1527
1570
|
# Get search results
|
|
1528
1571
|
results_data = self.client.get_audio_search_results(job_id)
|
|
1529
1572
|
results = results_data.get('results', [])
|
|
1573
|
+
artist = results_data.get('artist', 'Unknown')
|
|
1530
1574
|
|
|
1531
1575
|
if not results:
|
|
1532
1576
|
self.logger.error("No search results available")
|
|
@@ -1537,42 +1581,27 @@ class JobMonitor:
|
|
|
1537
1581
|
self.logger.info("Non-interactive mode: Auto-selecting first result")
|
|
1538
1582
|
selection_index = 0
|
|
1539
1583
|
else:
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
self.
|
|
1584
|
+
# Convert API results to Release-compatible dicts for flacfetch display
|
|
1585
|
+
# This gives us the same rich, colorized output as the local CLI
|
|
1586
|
+
release_dicts = [self._convert_api_result_to_release_dict(r) for r in results]
|
|
1543
1587
|
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
provider = result.get('provider', 'Unknown')
|
|
1547
|
-
artist = result.get('artist', 'Unknown')
|
|
1548
|
-
title = result.get('title', 'Unknown')
|
|
1549
|
-
quality = result.get('quality', '')
|
|
1550
|
-
duration = result.get('duration')
|
|
1551
|
-
|
|
1552
|
-
# Format duration if available
|
|
1553
|
-
duration_str = ""
|
|
1554
|
-
if duration:
|
|
1555
|
-
minutes = duration // 60
|
|
1556
|
-
seconds = duration % 60
|
|
1557
|
-
duration_str = f" [{minutes}:{seconds:02d}]"
|
|
1558
|
-
|
|
1559
|
-
quality_str = f" ({quality})" if quality else ""
|
|
1560
|
-
|
|
1561
|
-
self.logger.info(f" {index + 1}) [{provider}] {artist} - {title}{quality_str}{duration_str}")
|
|
1562
|
-
|
|
1563
|
-
self.logger.info("")
|
|
1588
|
+
# Use flacfetch's shared display function
|
|
1589
|
+
print_releases(release_dicts, target_artist=artist, use_colors=True)
|
|
1564
1590
|
|
|
1565
1591
|
selection_index = -1
|
|
1566
1592
|
while selection_index < 0:
|
|
1567
1593
|
try:
|
|
1568
|
-
choice = input(f"
|
|
1594
|
+
choice = input(f"\nSelect a release (1-{len(results)}, 0 to cancel): ").strip()
|
|
1595
|
+
if choice == "0":
|
|
1596
|
+
self.logger.info("Selection cancelled by user")
|
|
1597
|
+
raise KeyboardInterrupt
|
|
1569
1598
|
choice_num = int(choice)
|
|
1570
1599
|
if 1 <= choice_num <= len(results):
|
|
1571
1600
|
selection_index = choice_num - 1
|
|
1572
1601
|
else:
|
|
1573
|
-
|
|
1602
|
+
print(f"Please enter a number between 0 and {len(results)}")
|
|
1574
1603
|
except ValueError:
|
|
1575
|
-
|
|
1604
|
+
print("Please enter a valid number")
|
|
1576
1605
|
except KeyboardInterrupt:
|
|
1577
1606
|
print()
|
|
1578
1607
|
raise
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "karaoke-gen"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.73.1"
|
|
4
4
|
description = "Generate karaoke videos with synchronized lyrics. Handles the entire process from downloading audio and lyrics to creating the final video with title screens."
|
|
5
5
|
authors = ["Andrew Beveridge <andrew@beveridge.uk>"]
|
|
6
6
|
license = "MIT"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/__init__.py
RENAMED
|
File without changes
|
{karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/cli/__init__.py
RENAMED
|
File without changes
|
{karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/cli/cli_main.py
RENAMED
|
File without changes
|
|
File without changes
|
{karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/core/config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|