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.
Files changed (286) hide show
  1. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/PKG-INFO +1 -1
  2. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/audio_fetcher.py +36 -37
  3. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/utils/remote_cli.py +55 -26
  4. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/pyproject.toml +1 -1
  5. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/LICENSE +0 -0
  6. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/README.md +0 -0
  7. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/__init__.py +0 -0
  8. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/audio_processor.py +0 -0
  9. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/config.py +0 -0
  10. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/file_handler.py +0 -0
  11. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/instrumental_review/__init__.py +0 -0
  12. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/instrumental_review/analyzer.py +0 -0
  13. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/instrumental_review/editor.py +0 -0
  14. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/instrumental_review/models.py +0 -0
  15. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/instrumental_review/server.py +0 -0
  16. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/instrumental_review/static/index.html +0 -0
  17. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/instrumental_review/waveform.py +0 -0
  18. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/karaoke_finalise/__init__.py +0 -0
  19. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/karaoke_finalise/karaoke_finalise.py +0 -0
  20. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/karaoke_gen.py +0 -0
  21. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/lyrics_processor.py +0 -0
  22. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/metadata.py +0 -0
  23. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/__init__.py +0 -0
  24. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/base.py +0 -0
  25. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/context.py +0 -0
  26. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/executors/__init__.py +0 -0
  27. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/executors/local.py +0 -0
  28. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/executors/remote.py +0 -0
  29. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/stages/__init__.py +0 -0
  30. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/stages/finalize.py +0 -0
  31. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/stages/render.py +0 -0
  32. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/stages/screens.py +0 -0
  33. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/stages/separation.py +0 -0
  34. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/pipeline/stages/transcription.py +0 -0
  35. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/resources/AvenirNext-Bold.ttf +0 -0
  36. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/resources/Montserrat-Bold.ttf +0 -0
  37. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/resources/Oswald-Bold.ttf +0 -0
  38. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/resources/Oswald-SemiBold.ttf +0 -0
  39. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/resources/Zurich_Cn_BT_Bold.ttf +0 -0
  40. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/style_loader.py +0 -0
  41. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/utils/__init__.py +0 -0
  42. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/utils/bulk_cli.py +0 -0
  43. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/utils/cli_args.py +0 -0
  44. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/utils/gen_cli.py +0 -0
  45. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/video_background_processor.py +0 -0
  46. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/karaoke_gen/video_generator.py +0 -0
  47. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/__init__.py +0 -0
  48. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/cli/__init__.py +0 -0
  49. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/cli/cli_main.py +0 -0
  50. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/core/__init__.py +0 -0
  51. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/core/config.py +0 -0
  52. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/core/controller.py +0 -0
  53. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/__init__.py +0 -0
  54. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/__init__.py +0 -0
  55. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/adapter.py +0 -0
  56. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/agent.py +0 -0
  57. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/aggregator.py +0 -0
  58. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/collector.py +0 -0
  59. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/retention.py +0 -0
  60. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/feedback/store.py +0 -0
  61. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/__init__.py +0 -0
  62. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/ambiguous.py +0 -0
  63. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/background_vocals.py +0 -0
  64. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/base.py +0 -0
  65. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/complex_multi_error.py +0 -0
  66. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/extra_words.py +0 -0
  67. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/no_error.py +0 -0
  68. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/punctuation.py +0 -0
  69. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/registry.py +0 -0
  70. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/repeated_section.py +0 -0
  71. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/handlers/sound_alike.py +0 -0
  72. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/__init__.py +0 -0
  73. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/ai_correction.py +0 -0
  74. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/correction_session.py +0 -0
  75. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/enums.py +0 -0
  76. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/human_feedback.py +0 -0
  77. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/learning_data.py +0 -0
  78. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/observability_metrics.py +0 -0
  79. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/schemas.py +0 -0
  80. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/models/utils.py +0 -0
  81. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/__init__.py +0 -0
  82. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/langfuse_integration.py +0 -0
  83. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/metrics.py +0 -0
  84. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/observability/performance.py +0 -0
  85. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/prompts/__init__.py +0 -0
  86. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/prompts/classifier.py +0 -0
  87. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/__init__.py +0 -0
  88. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/base.py +0 -0
  89. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/circuit_breaker.py +0 -0
  90. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/config.py +0 -0
  91. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/constants.py +0 -0
  92. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/health.py +0 -0
  93. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/langchain_bridge.py +0 -0
  94. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/model_factory.py +0 -0
  95. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/response_cache.py +0 -0
  96. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/response_parser.py +0 -0
  97. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/providers/retry_executor.py +0 -0
  98. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/router.py +0 -0
  99. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/__init__.py +0 -0
  100. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/consensus_workflow.py +0 -0
  101. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/correction_graph.py +0 -0
  102. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/agentic/workflows/feedback_workflow.py +0 -0
  103. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/anchor_sequence.py +0 -0
  104. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/corrector.py +0 -0
  105. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/__init__.py +0 -0
  106. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/schemas.py +0 -0
  107. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/feedback/store.py +0 -0
  108. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/__init__.py +0 -0
  109. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/base.py +0 -0
  110. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/extend_anchor.py +0 -0
  111. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/levenshtein.py +0 -0
  112. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/llm.py +0 -0
  113. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/llm_providers.py +0 -0
  114. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/no_space_punct_match.py +0 -0
  115. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/relaxed_word_count_match.py +0 -0
  116. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/repeat.py +0 -0
  117. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/sound_alike.py +0 -0
  118. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/syllables_match.py +0 -0
  119. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/word_count_match.py +0 -0
  120. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/handlers/word_operations.py +0 -0
  121. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/operations.py +0 -0
  122. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/phrase_analyzer.py +0 -0
  123. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/correction/text_utils.py +0 -0
  124. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/.gitignore +0 -0
  125. {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
  126. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/.yarnrc.yml +0 -0
  127. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/README.md +0 -0
  128. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/REPLACE_ALL_FUNCTIONALITY.md +0 -0
  129. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/__init__.py +0 -0
  130. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/eslint.config.js +0 -0
  131. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/index.html +0 -0
  132. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/package.json +0 -0
  133. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/android-chrome-192x192.png +0 -0
  134. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/android-chrome-512x512.png +0 -0
  135. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/apple-touch-icon.png +0 -0
  136. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon-16x16.png +0 -0
  137. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon-32x32.png +0 -0
  138. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/favicon.ico +0 -0
  139. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/public/nomad-karaoke-logo.png +0 -0
  140. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/App.tsx +0 -0
  141. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/api.ts +0 -0
  142. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AIFeedbackModal.tsx +0 -0
  143. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AddLyricsModal.tsx +0 -0
  144. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AgenticCorrectionMetrics.tsx +0 -0
  145. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/AudioPlayer.tsx +0 -0
  146. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectedWordWithActions.tsx +0 -0
  147. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionAnnotationModal.tsx +0 -0
  148. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionDetailCard.tsx +0 -0
  149. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/CorrectionMetrics.tsx +0 -0
  150. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/DurationTimelineView.tsx +0 -0
  151. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditActionBar.tsx +0 -0
  152. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditModal.tsx +0 -0
  153. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditTimelineSection.tsx +0 -0
  154. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/EditWordList.tsx +0 -0
  155. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/FileUpload.tsx +0 -0
  156. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/FindReplaceModal.tsx +0 -0
  157. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/Header.tsx +0 -0
  158. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsAnalyzer.tsx +0 -0
  159. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/SyncControls.tsx +0 -0
  160. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/TimelineCanvas.tsx +0 -0
  161. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/UpcomingWordsBar.tsx +0 -0
  162. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/LyricsSynchronizer/index.tsx +0 -0
  163. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/MetricsDashboard.tsx +0 -0
  164. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModeSelectionModal.tsx +0 -0
  165. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModeSelector.tsx +0 -0
  166. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ModelSelector.tsx +0 -0
  167. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/PreviewVideoSection.tsx +0 -0
  168. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReferenceView.tsx +0 -0
  169. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReplaceAllLyricsModal.tsx +0 -0
  170. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/ReviewChangesModal.tsx +0 -0
  171. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/SegmentDetailsModal.tsx +0 -0
  172. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TimelineEditor.tsx +0 -0
  173. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TimingOffsetModal.tsx +0 -0
  174. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/TranscriptionView.tsx +0 -0
  175. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/WordDivider.tsx +0 -0
  176. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/HighlightedText.tsx +0 -0
  177. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/SourceSelector.tsx +0 -0
  178. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/components/Word.tsx +0 -0
  179. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/constants.ts +0 -0
  180. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/hooks/useWordClick.ts +0 -0
  181. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/styles.ts +0 -0
  182. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/types.js +0 -0
  183. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/types.ts +0 -0
  184. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/keyboardHandlers.ts +0 -0
  185. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/localStorage.ts +0 -0
  186. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/referenceLineCalculator.ts +0 -0
  187. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/segmentOperations.ts +0 -0
  188. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/timingUtils.ts +0 -0
  189. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/components/shared/utils/wordUtils.ts +0 -0
  190. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/hooks/useManualSync.ts +0 -0
  191. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/main.tsx +0 -0
  192. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/theme.ts +0 -0
  193. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types/global.d.ts +0 -0
  194. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types.js +0 -0
  195. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/types.ts +0 -0
  196. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/validation.ts +0 -0
  197. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/src/vite-env.d.ts +0 -0
  198. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.app.json +0 -0
  199. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.json +0 -0
  200. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.node.json +0 -0
  201. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/tsconfig.tsbuildinfo +0 -0
  202. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/update_version.js +0 -0
  203. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.d.ts +0 -0
  204. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.js +0 -0
  205. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/vite.config.ts +0 -0
  206. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/android-chrome-192x192.png +0 -0
  207. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/android-chrome-512x512.png +0 -0
  208. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/apple-touch-icon.png +0 -0
  209. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/assets/index-COYImAcx.js +0 -0
  210. {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
  211. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon-16x16.png +0 -0
  212. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon-32x32.png +0 -0
  213. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/favicon.ico +0 -0
  214. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/index.html +0 -0
  215. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/web_assets/nomad-karaoke-logo.png +0 -0
  216. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/frontend/yarn.lock +0 -0
  217. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/__init__.py +0 -0
  218. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/base_lyrics_provider.py +0 -0
  219. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/file_provider.py +0 -0
  220. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/genius.py +0 -0
  221. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/lrclib.py +0 -0
  222. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/musixmatch.py +0 -0
  223. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/spotify.py +0 -0
  224. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/lyrics/user_input_provider.py +0 -0
  225. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/__init__.py +0 -0
  226. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/__init__.py +0 -0
  227. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/ass.py +0 -0
  228. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/ass_specs.txt +0 -0
  229. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/config.py +0 -0
  230. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/constants.py +0 -0
  231. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/event.py +0 -0
  232. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/formatters.py +0 -0
  233. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/lyrics_line.py +0 -0
  234. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/lyrics_screen.py +0 -0
  235. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/section_detector.py +0 -0
  236. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/section_screen.py +0 -0
  237. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/ass/style.py +0 -0
  238. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdg.py +0 -0
  239. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/__init__.py +0 -0
  240. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/cdg.py +0 -0
  241. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/composer.py +0 -0
  242. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/config.py +0 -0
  243. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/images/instrumental.png +0 -0
  244. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/images/intro.png +0 -0
  245. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/pack.py +0 -0
  246. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/render.py +0 -0
  247. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/centertexttoplogobottomtext.png +0 -0
  248. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/circlein.png +0 -0
  249. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/circleout.png +0 -0
  250. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/fizzle.png +0 -0
  251. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/largecentertexttoplogo.png +0 -0
  252. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/rectangle.png +0 -0
  253. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/spiral.png +0 -0
  254. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/topleftmusicalnotes.png +0 -0
  255. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipein.png +0 -0
  256. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipeleft.png +0 -0
  257. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wipeout.png +0 -0
  258. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/transitions/wiperight.png +0 -0
  259. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/cdgmaker/utils.py +0 -0
  260. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/countdown_processor.py +0 -0
  261. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/AvenirNext-Bold.ttf +0 -0
  262. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/DMSans-VariableFont_opsz,wght.ttf +0 -0
  263. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/DMSerifDisplay-Regular.ttf +0 -0
  264. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/Oswald-SemiBold.ttf +0 -0
  265. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/Zurich_Cn_BT_Bold.ttf +0 -0
  266. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/arial.ttf +0 -0
  267. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/georgia.ttf +0 -0
  268. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/fonts/verdana.ttf +0 -0
  269. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/generator.py +0 -0
  270. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/lrc_to_cdg.py +0 -0
  271. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/lyrics_file.py +0 -0
  272. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/plain_text.py +0 -0
  273. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/segment_resizer.py +0 -0
  274. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/subtitles.py +0 -0
  275. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/output/video.py +0 -0
  276. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/review/__init__.py +0 -0
  277. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/review/server.py +0 -0
  278. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/storage/__init__.py +0 -0
  279. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/storage/dropbox.py +0 -0
  280. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/__init__.py +0 -0
  281. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/audioshake.py +0 -0
  282. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/base_transcriber.py +0 -0
  283. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/transcribers/whisper.py +0 -0
  284. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/types.py +0 -0
  285. {karaoke_gen-0.72.2 → karaoke_gen-0.73.1}/lyrics_transcriber_temp/lyrics_transcriber/utils/__init__.py +0 -0
  286. {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.72.2
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
- Note: raw_result is excluded as it's not serializable.
50
+ Includes full flacfetch Release data if available, enabling
51
+ remote CLIs to use flacfetch's shared display functions.
46
52
  """
47
- return {
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
- print(f"\n{'=' * 60}")
636
- print(f"Search Results for: {artist} - {title}")
637
- print(f"{'=' * 60}\n")
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
- self.logger.info("")
1541
- self.logger.info("Choose which audio source to download:")
1542
- self.logger.info("")
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
- for result in results:
1545
- index = result.get('index', 0)
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"Enter your choice (1-{len(results)}): ").strip()
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
- self.logger.error(f"Please enter a number between 1 and {len(results)}")
1602
+ print(f"Please enter a number between 0 and {len(results)}")
1574
1603
  except ValueError:
1575
- self.logger.error("Please enter a valid number")
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.72.2"
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