karaoke-gen 0.71.42__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.
- karaoke_gen/__init__.py +32 -1
- karaoke_gen/audio_fetcher.py +476 -56
- karaoke_gen/audio_processor.py +11 -3
- karaoke_gen/instrumental_review/server.py +154 -860
- karaoke_gen/instrumental_review/static/index.html +1506 -0
- karaoke_gen/karaoke_finalise/karaoke_finalise.py +62 -1
- karaoke_gen/karaoke_gen.py +114 -1
- karaoke_gen/lyrics_processor.py +81 -4
- karaoke_gen/utils/bulk_cli.py +3 -0
- karaoke_gen/utils/cli_args.py +4 -2
- karaoke_gen/utils/gen_cli.py +196 -5
- karaoke_gen/utils/remote_cli.py +523 -34
- {karaoke_gen-0.71.42.dist-info → karaoke_gen-0.75.16.dist-info}/METADATA +4 -1
- {karaoke_gen-0.71.42.dist-info → karaoke_gen-0.75.16.dist-info}/RECORD +31 -25
- lyrics_transcriber/frontend/package.json +1 -1
- lyrics_transcriber/frontend/src/components/Header.tsx +38 -12
- lyrics_transcriber/frontend/src/components/LyricsAnalyzer.tsx +17 -3
- lyrics_transcriber/frontend/src/components/LyricsSynchronizer/SyncControls.tsx +185 -0
- lyrics_transcriber/frontend/src/components/LyricsSynchronizer/TimelineCanvas.tsx +704 -0
- lyrics_transcriber/frontend/src/components/LyricsSynchronizer/UpcomingWordsBar.tsx +80 -0
- lyrics_transcriber/frontend/src/components/LyricsSynchronizer/index.tsx +905 -0
- lyrics_transcriber/frontend/src/components/ModeSelectionModal.tsx +127 -0
- lyrics_transcriber/frontend/src/components/ReplaceAllLyricsModal.tsx +190 -542
- lyrics_transcriber/frontend/tsconfig.tsbuildinfo +1 -1
- lyrics_transcriber/frontend/web_assets/assets/{index-DdJTDWH3.js → index-COYImAcx.js} +1722 -489
- lyrics_transcriber/frontend/web_assets/assets/index-COYImAcx.js.map +1 -0
- lyrics_transcriber/frontend/web_assets/index.html +1 -1
- lyrics_transcriber/review/server.py +5 -5
- lyrics_transcriber/frontend/web_assets/assets/index-DdJTDWH3.js.map +0 -1
- {karaoke_gen-0.71.42.dist-info → karaoke_gen-0.75.16.dist-info}/WHEEL +0 -0
- {karaoke_gen-0.71.42.dist-info → karaoke_gen-0.75.16.dist-info}/entry_points.txt +0 -0
- {karaoke_gen-0.71.42.dist-info → karaoke_gen-0.75.16.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Dialog,
|
|
3
|
+
DialogTitle,
|
|
4
|
+
DialogContent,
|
|
5
|
+
DialogActions,
|
|
6
|
+
IconButton,
|
|
7
|
+
Box,
|
|
8
|
+
Button,
|
|
9
|
+
Typography,
|
|
10
|
+
Paper
|
|
11
|
+
} from '@mui/material'
|
|
12
|
+
import CloseIcon from '@mui/icons-material/Close'
|
|
13
|
+
import ContentPasteIcon from '@mui/icons-material/ContentPaste'
|
|
14
|
+
import SyncIcon from '@mui/icons-material/Sync'
|
|
15
|
+
|
|
16
|
+
interface ModeSelectionModalProps {
|
|
17
|
+
open: boolean
|
|
18
|
+
onClose: () => void
|
|
19
|
+
onSelectReplace: () => void // Goes to paste phase for replacing all lyrics
|
|
20
|
+
onSelectResync: () => void // Goes directly to sync view with existing lyrics
|
|
21
|
+
hasExistingLyrics: boolean // Whether there are existing lyrics to re-sync
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export default function ModeSelectionModal({
|
|
25
|
+
open,
|
|
26
|
+
onClose,
|
|
27
|
+
onSelectReplace,
|
|
28
|
+
onSelectResync,
|
|
29
|
+
hasExistingLyrics
|
|
30
|
+
}: ModeSelectionModalProps) {
|
|
31
|
+
return (
|
|
32
|
+
<Dialog
|
|
33
|
+
open={open}
|
|
34
|
+
onClose={onClose}
|
|
35
|
+
maxWidth="sm"
|
|
36
|
+
fullWidth
|
|
37
|
+
>
|
|
38
|
+
<DialogTitle sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
|
|
39
|
+
<Box sx={{ flex: 1 }}>
|
|
40
|
+
Edit All Lyrics
|
|
41
|
+
</Box>
|
|
42
|
+
<IconButton onClick={onClose} sx={{ ml: 'auto' }}>
|
|
43
|
+
<CloseIcon />
|
|
44
|
+
</IconButton>
|
|
45
|
+
</DialogTitle>
|
|
46
|
+
|
|
47
|
+
<DialogContent dividers>
|
|
48
|
+
<Typography variant="body1" sx={{ mb: 3 }}>
|
|
49
|
+
Choose how you want to edit the lyrics:
|
|
50
|
+
</Typography>
|
|
51
|
+
|
|
52
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>
|
|
53
|
+
{/* Re-sync Existing option - only show if there are existing lyrics */}
|
|
54
|
+
{hasExistingLyrics && (
|
|
55
|
+
<Paper
|
|
56
|
+
sx={{
|
|
57
|
+
p: 2,
|
|
58
|
+
cursor: 'pointer',
|
|
59
|
+
border: 2,
|
|
60
|
+
borderColor: 'primary.main',
|
|
61
|
+
'&:hover': {
|
|
62
|
+
bgcolor: 'action.hover',
|
|
63
|
+
borderColor: 'primary.dark'
|
|
64
|
+
}
|
|
65
|
+
}}
|
|
66
|
+
onClick={onSelectResync}
|
|
67
|
+
>
|
|
68
|
+
<Box sx={{ display: 'flex', alignItems: 'flex-start', gap: 2 }}>
|
|
69
|
+
<SyncIcon color="primary" sx={{ fontSize: 40, mt: 0.5 }} />
|
|
70
|
+
<Box>
|
|
71
|
+
<Typography variant="h6" color="primary">
|
|
72
|
+
Re-sync Existing Lyrics
|
|
73
|
+
</Typography>
|
|
74
|
+
<Typography variant="body2" color="text.secondary">
|
|
75
|
+
Keep the current lyrics text and fix timing issues.
|
|
76
|
+
Use this when lyrics are correct but timing has drifted,
|
|
77
|
+
especially in the second half of the song.
|
|
78
|
+
</Typography>
|
|
79
|
+
<Typography variant="caption" color="success.main" sx={{ mt: 1, display: 'block' }}>
|
|
80
|
+
Recommended for fixing timing drift
|
|
81
|
+
</Typography>
|
|
82
|
+
</Box>
|
|
83
|
+
</Box>
|
|
84
|
+
</Paper>
|
|
85
|
+
)}
|
|
86
|
+
|
|
87
|
+
{/* Replace All option */}
|
|
88
|
+
<Paper
|
|
89
|
+
sx={{
|
|
90
|
+
p: 2,
|
|
91
|
+
cursor: 'pointer',
|
|
92
|
+
border: 1,
|
|
93
|
+
borderColor: 'divider',
|
|
94
|
+
'&:hover': {
|
|
95
|
+
bgcolor: 'action.hover',
|
|
96
|
+
borderColor: 'text.secondary'
|
|
97
|
+
}
|
|
98
|
+
}}
|
|
99
|
+
onClick={onSelectReplace}
|
|
100
|
+
>
|
|
101
|
+
<Box sx={{ display: 'flex', alignItems: 'flex-start', gap: 2 }}>
|
|
102
|
+
<ContentPasteIcon sx={{ fontSize: 40, mt: 0.5, color: 'text.secondary' }} />
|
|
103
|
+
<Box>
|
|
104
|
+
<Typography variant="h6">
|
|
105
|
+
Replace All Lyrics
|
|
106
|
+
</Typography>
|
|
107
|
+
<Typography variant="body2" color="text.secondary">
|
|
108
|
+
Paste completely new lyrics from clipboard and manually
|
|
109
|
+
sync timing for all words from scratch.
|
|
110
|
+
</Typography>
|
|
111
|
+
<Typography variant="caption" color="warning.main" sx={{ mt: 1, display: 'block' }}>
|
|
112
|
+
All existing timing data will be lost
|
|
113
|
+
</Typography>
|
|
114
|
+
</Box>
|
|
115
|
+
</Box>
|
|
116
|
+
</Paper>
|
|
117
|
+
</Box>
|
|
118
|
+
</DialogContent>
|
|
119
|
+
|
|
120
|
+
<DialogActions>
|
|
121
|
+
<Button onClick={onClose} color="inherit">
|
|
122
|
+
Cancel
|
|
123
|
+
</Button>
|
|
124
|
+
</DialogActions>
|
|
125
|
+
</Dialog>
|
|
126
|
+
)
|
|
127
|
+
}
|