karaoke-gen 0.71.27__py3-none-any.whl → 0.75.16__py3-none-any.whl

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 (39) hide show
  1. karaoke_gen/__init__.py +32 -1
  2. karaoke_gen/audio_fetcher.py +476 -56
  3. karaoke_gen/audio_processor.py +11 -3
  4. karaoke_gen/file_handler.py +192 -0
  5. karaoke_gen/instrumental_review/__init__.py +45 -0
  6. karaoke_gen/instrumental_review/analyzer.py +408 -0
  7. karaoke_gen/instrumental_review/editor.py +322 -0
  8. karaoke_gen/instrumental_review/models.py +171 -0
  9. karaoke_gen/instrumental_review/server.py +475 -0
  10. karaoke_gen/instrumental_review/static/index.html +1506 -0
  11. karaoke_gen/instrumental_review/waveform.py +409 -0
  12. karaoke_gen/karaoke_finalise/karaoke_finalise.py +62 -1
  13. karaoke_gen/karaoke_gen.py +114 -1
  14. karaoke_gen/lyrics_processor.py +81 -4
  15. karaoke_gen/utils/bulk_cli.py +3 -0
  16. karaoke_gen/utils/cli_args.py +9 -2
  17. karaoke_gen/utils/gen_cli.py +379 -2
  18. karaoke_gen/utils/remote_cli.py +1126 -77
  19. {karaoke_gen-0.71.27.dist-info → karaoke_gen-0.75.16.dist-info}/METADATA +7 -1
  20. {karaoke_gen-0.71.27.dist-info → karaoke_gen-0.75.16.dist-info}/RECORD +38 -26
  21. lyrics_transcriber/correction/anchor_sequence.py +226 -350
  22. lyrics_transcriber/frontend/package.json +1 -1
  23. lyrics_transcriber/frontend/src/components/Header.tsx +38 -12
  24. lyrics_transcriber/frontend/src/components/LyricsAnalyzer.tsx +17 -3
  25. lyrics_transcriber/frontend/src/components/LyricsSynchronizer/SyncControls.tsx +185 -0
  26. lyrics_transcriber/frontend/src/components/LyricsSynchronizer/TimelineCanvas.tsx +704 -0
  27. lyrics_transcriber/frontend/src/components/LyricsSynchronizer/UpcomingWordsBar.tsx +80 -0
  28. lyrics_transcriber/frontend/src/components/LyricsSynchronizer/index.tsx +905 -0
  29. lyrics_transcriber/frontend/src/components/ModeSelectionModal.tsx +127 -0
  30. lyrics_transcriber/frontend/src/components/ReplaceAllLyricsModal.tsx +190 -542
  31. lyrics_transcriber/frontend/tsconfig.tsbuildinfo +1 -1
  32. lyrics_transcriber/frontend/web_assets/assets/{index-DdJTDWH3.js → index-COYImAcx.js} +1722 -489
  33. lyrics_transcriber/frontend/web_assets/assets/index-COYImAcx.js.map +1 -0
  34. lyrics_transcriber/frontend/web_assets/index.html +1 -1
  35. lyrics_transcriber/review/server.py +5 -5
  36. lyrics_transcriber/frontend/web_assets/assets/index-DdJTDWH3.js.map +0 -1
  37. {karaoke_gen-0.71.27.dist-info → karaoke_gen-0.75.16.dist-info}/WHEEL +0 -0
  38. {karaoke_gen-0.71.27.dist-info → karaoke_gen-0.75.16.dist-info}/entry_points.txt +0 -0
  39. {karaoke_gen-0.71.27.dist-info → karaoke_gen-0.75.16.dist-info}/licenses/LICENSE +0 -0
karaoke_gen/__init__.py CHANGED
@@ -4,4 +4,35 @@ import warnings
4
4
  warnings.filterwarnings("ignore", category=SyntaxWarning, module="pydub.*")
5
5
  warnings.filterwarnings("ignore", category=SyntaxWarning, module="syrics.*")
6
6
 
7
- from .karaoke_gen import KaraokePrep
7
+ # Lazy imports to avoid loading heavy dependencies when not needed.
8
+ # KaraokePrep has many dependencies (lyrics_transcriber, etc.) which may not
9
+ # be available in all contexts (e.g., backend which only needs audio_fetcher).
10
+ #
11
+ # Use explicit imports instead:
12
+ # from karaoke_gen.karaoke_gen import KaraokePrep
13
+ # from karaoke_gen.audio_fetcher import FlacFetcher, AudioSearchResult, ...
14
+
15
+ __all__ = [
16
+ "KaraokePrep",
17
+ # Audio fetcher
18
+ "FlacFetcher",
19
+ "AudioSearchResult",
20
+ "AudioFetchResult",
21
+ "AudioFetcherError",
22
+ "NoResultsError",
23
+ "DownloadError",
24
+ "UserCancelledError",
25
+ ]
26
+
27
+
28
+ def __getattr__(name):
29
+ """Lazy import for heavy modules."""
30
+ if name == "KaraokePrep":
31
+ from .karaoke_gen import KaraokePrep
32
+ return KaraokePrep
33
+ elif name in ("FlacFetcher", "AudioSearchResult", "AudioFetchResult",
34
+ "AudioFetcherError", "NoResultsError", "DownloadError",
35
+ "UserCancelledError"):
36
+ from . import audio_fetcher
37
+ return getattr(audio_fetcher, name)
38
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")