lyrics-transcriber 0.45.0__py3-none-any.whl → 0.46.0__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.
@@ -5,7 +5,7 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>Lyrics Transcriber Analyzer</title>
8
- <script type="module" crossorigin src="/assets/index-ZCT0s9MG.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-BXOpmKq-.js"></script>
9
9
  </head>
10
10
  <body>
11
11
  <div id="root"></div>
@@ -38,5 +38,5 @@
38
38
  "typescript-eslint": "^8.18.2",
39
39
  "vite": "^6.0.5"
40
40
  },
41
- "packageManager": "yarn@4.6.0"
41
+ "packageManager": "yarn@4.7.0"
42
42
  }
@@ -1,14 +1,12 @@
1
1
  import { Box, Button, Typography, useMediaQuery, useTheme, Switch, FormControlLabel, Tooltip, Paper } from '@mui/material'
2
2
  import LockIcon from '@mui/icons-material/Lock'
3
3
  import UploadFileIcon from '@mui/icons-material/UploadFile'
4
- import TextSnippetIcon from '@mui/icons-material/TextSnippet'
5
4
  import FindReplaceIcon from '@mui/icons-material/FindReplace'
6
5
  import EditIcon from '@mui/icons-material/Edit'
7
- import { CorrectionData } from '../types'
6
+ import { CorrectionData, InteractionMode } from '../types'
8
7
  import CorrectionMetrics from './CorrectionMetrics'
9
8
  import ModeSelector from './ModeSelector'
10
9
  import AudioPlayer from './AudioPlayer'
11
- import { InteractionMode } from '../types'
12
10
  import { ApiClient } from '../api'
13
11
  import { findWordById } from './shared/utils/wordUtils'
14
12
 
@@ -29,7 +27,6 @@ interface HeaderProps {
29
27
  onHandlerToggle: (handler: string, enabled: boolean) => void
30
28
  isUpdatingHandlers: boolean
31
29
  onHandlerClick?: (handler: string) => void
32
- onAddLyrics?: () => void
33
30
  onFindReplace?: () => void
34
31
  onEditAll?: () => void
35
32
  }
@@ -47,7 +44,6 @@ export default function Header({
47
44
  onHandlerToggle,
48
45
  isUpdatingHandlers,
49
46
  onHandlerClick,
50
- onAddLyrics,
51
47
  onFindReplace,
52
48
  onEditAll,
53
49
  }: HeaderProps) {
@@ -271,17 +267,6 @@ export default function Header({
271
267
  audioHash={audioHash}
272
268
  />
273
269
  </Box>
274
- {!isReadOnly && apiClient && onAddLyrics && (
275
- <Button
276
- variant="outlined"
277
- size="small"
278
- onClick={onAddLyrics}
279
- startIcon={<TextSnippetIcon />}
280
- sx={{ minWidth: 'fit-content', height: '32px' }}
281
- >
282
- Add Reference Lyrics
283
- </Button>
284
- )}
285
270
  </Box>
286
271
  </Paper>
287
272
  </>
@@ -124,6 +124,7 @@ interface MemoizedReferenceViewProps {
124
124
  onSourceChange: (source: string) => void
125
125
  corrected_segments: LyricsSegment[]
126
126
  corrections: WordCorrection[]
127
+ onAddLyrics?: () => void
127
128
  }
128
129
 
129
130
  // Create a memoized ReferenceView component
@@ -139,7 +140,8 @@ const MemoizedReferenceView = memo(function MemoizedReferenceView({
139
140
  currentSource,
140
141
  onSourceChange,
141
142
  corrected_segments,
142
- corrections
143
+ corrections,
144
+ onAddLyrics
143
145
  }: MemoizedReferenceViewProps) {
144
146
  return (
145
147
  <ReferenceView
@@ -155,6 +157,7 @@ const MemoizedReferenceView = memo(function MemoizedReferenceView({
155
157
  onSourceChange={onSourceChange}
156
158
  corrected_segments={corrected_segments}
157
159
  corrections={corrections}
160
+ onAddLyrics={onAddLyrics}
158
161
  />
159
162
  );
160
163
  });
@@ -195,7 +198,6 @@ const MemoizedHeader = memo(function MemoizedHeader({
195
198
  onHandlerToggle,
196
199
  isUpdatingHandlers,
197
200
  onHandlerClick,
198
- onAddLyrics,
199
201
  onFindReplace,
200
202
  onEditAll
201
203
  }: MemoizedHeaderProps) {
@@ -213,7 +215,6 @@ const MemoizedHeader = memo(function MemoizedHeader({
213
215
  onHandlerToggle={onHandlerToggle}
214
216
  isUpdatingHandlers={isUpdatingHandlers}
215
217
  onHandlerClick={onHandlerClick}
216
- onAddLyrics={onAddLyrics}
217
218
  onFindReplace={onFindReplace}
218
219
  onEditAll={onEditAll}
219
220
  />
@@ -948,6 +949,7 @@ export default function LyricsAnalyzer({ data: initialData, onFileLoad, apiClien
948
949
  onSourceChange={setCurrentSource}
949
950
  corrected_segments={data.corrected_segments}
950
951
  corrections={data.corrections}
952
+ onAddLyrics={() => setIsAddLyricsModalOpen(true)}
951
953
  />
952
954
  </Grid>
953
955
  </Grid>
@@ -34,7 +34,8 @@ export default function ReferenceView({
34
34
  highlightInfo,
35
35
  mode,
36
36
  gaps,
37
- corrections
37
+ corrections,
38
+ onAddLyrics
38
39
  }: ReferenceViewProps) {
39
40
  // Get available sources from referenceSources object
40
41
  const availableSources = useMemo(() =>
@@ -183,6 +184,7 @@ export default function ReferenceView({
183
184
  availableSources={availableSources}
184
185
  currentSource={effectiveCurrentSource}
185
186
  onSourceChange={onSourceChange}
187
+ onAddLyrics={onAddLyrics}
186
188
  />
187
189
  </Box>
188
190
  <Box sx={{ display: 'flex', flexDirection: 'column', gap: 0.2 }}>
@@ -181,7 +181,8 @@ export function HighlightedText({
181
181
  return correction ? {
182
182
  originalWord: correction.original_word,
183
183
  handler: correction.handler,
184
- confidence: correction.confidence
184
+ confidence: correction.confidence,
185
+ source: correction.source
185
186
  } : null;
186
187
  })()}
187
188
  />
@@ -219,7 +220,8 @@ export function HighlightedText({
219
220
  const correctionInfo = correction ? {
220
221
  originalWord: correction.original_word,
221
222
  handler: correction.handler,
222
- confidence: correction.confidence
223
+ confidence: correction.confidence,
224
+ source: correction.source
223
225
  } : null;
224
226
 
225
227
  return (
@@ -1,21 +1,23 @@
1
1
  import { Box, Button } from '@mui/material'
2
+ import AddIcon from '@mui/icons-material/Add'
2
3
 
3
4
  export interface SourceSelectorProps {
4
5
  currentSource: string
5
6
  onSourceChange: (source: string) => void
6
7
  availableSources: string[]
8
+ onAddLyrics?: () => void
7
9
  }
8
10
 
9
- export function SourceSelector({ currentSource, onSourceChange, availableSources }: SourceSelectorProps) {
11
+ export function SourceSelector({ currentSource, onSourceChange, availableSources, onAddLyrics }: SourceSelectorProps) {
10
12
  return (
11
- <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: 0.3 }}>
13
+ <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: 0.3, alignItems: 'center' }}>
12
14
  {availableSources.map((source) => (
13
15
  <Button
14
16
  key={source}
15
17
  size="small"
16
18
  variant={currentSource === source ? 'contained' : 'outlined'}
17
19
  onClick={() => onSourceChange(source)}
18
- sx={{
20
+ sx={{
19
21
  mr: 0,
20
22
  py: 0.2,
21
23
  px: 0.8,
@@ -28,6 +30,27 @@ export function SourceSelector({ currentSource, onSourceChange, availableSources
28
30
  {source.charAt(0).toUpperCase() + source.slice(1)}
29
31
  </Button>
30
32
  ))}
33
+ {onAddLyrics && (
34
+ <Button
35
+ size="small"
36
+ variant="outlined"
37
+ onClick={onAddLyrics}
38
+ startIcon={<AddIcon sx={{ fontSize: '0.9rem' }} />}
39
+ sx={{
40
+ mr: 0,
41
+ py: 0.2,
42
+ px: 0.8,
43
+ minWidth: 'auto',
44
+ fontSize: '0.7rem',
45
+ lineHeight: 1.2,
46
+ '& .MuiButton-startIcon': {
47
+ marginLeft: '-5px',
48
+ marginRight: '1px',
49
+ marginTop: '-1px'
50
+ }
51
+ }}
52
+ >New</Button>
53
+ )}
31
54
  </Box>
32
55
  )
33
56
  }
@@ -61,7 +61,8 @@ export const WordComponent = React.memo(function Word({
61
61
  const tooltipContent = (
62
62
  <>
63
63
  <strong>Original:</strong> "{correction.originalWord}"<br />
64
- <strong>Corrected by:</strong> {correction.handler}
64
+ <strong>Corrected by:</strong> {correction.handler}<br />
65
+ <strong>Source:</strong> {correction.source}
65
66
  </>
66
67
  )
67
68
 
@@ -62,6 +62,7 @@ export interface WordProps {
62
62
  originalWord: string
63
63
  handler: string
64
64
  confidence: number
65
+ source: string
65
66
  } | null
66
67
  }
67
68
 
@@ -100,6 +101,7 @@ export interface ReferenceViewProps extends BaseViewProps {
100
101
  onSourceChange: (source: string) => void
101
102
  corrected_segments: LyricsSegment[]
102
103
  corrections: WordCorrection[]
104
+ onAddLyrics?: () => void
103
105
  }
104
106
 
105
107
  // Update HighlightedTextProps to include linePositions
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: lyrics-transcriber
3
- Version: 0.45.0
3
+ Version: 0.46.0
4
4
  Summary: Automatically create synchronised lyrics files in ASS and MidiCo LRC formats with word-level timestamps, using Whisper and lyrics from Genius and Spotify
5
5
  License: MIT
6
6
  Author: Andrew Beveridge
@@ -23,16 +23,16 @@ lyrics_transcriber/correction/phrase_analyzer.py,sha256=dtO_2LjxnPdHJM7De40mYIdH
23
23
  lyrics_transcriber/correction/text_utils.py,sha256=z4eiTBCmkNeTUvxG_RpR1Zwg0cbMPKFyxVaKAvLAk88,761
24
24
  lyrics_transcriber/frontend/.gitignore,sha256=lgGIPiVpFVUNSZl9oNQLelLOWUzpF7sikLW8xmsrrqI,248
25
25
  lyrics_transcriber/frontend/.yarn/install-state.gz,sha256=kcgQ-S9HvdNHexkXQVt18LWUpqtP2mdyRfjJV1htFAc,345895
26
- lyrics_transcriber/frontend/.yarn/releases/yarn-4.6.0.cjs,sha256=6vHuq8FkpEygtl29zNVK9-VfP_kpSz_zGNWq7JLysgs,2764946
27
- lyrics_transcriber/frontend/.yarnrc.yml,sha256=RIUAbDBlfdQoS1V4MjkeMHzQqi4cvIWSzY5T3gEB_1I,66
26
+ lyrics_transcriber/frontend/.yarn/releases/yarn-4.7.0.cjs,sha256=KTYy2KCV2OpHhussV5jIPDdUSr7RftMRhqPsRUmgfAY,2765465
27
+ lyrics_transcriber/frontend/.yarnrc.yml,sha256=0hZQ1OTcPqTUNBqQeme4VFkIzrsabHNzLtc_M-wSgIM,66
28
28
  lyrics_transcriber/frontend/README.md,sha256=-D6CAfKTT7Y0V3EjlZ2fMy7fyctFQ4x2TJ9vx6xtccM,1607
29
- lyrics_transcriber/frontend/dist/assets/index-ZCT0s9MG.js,sha256=Rl82XsEWOv8jyFj_UEUxz0El7e4CUtl8L6XDgOqTQC8,1226756
30
- lyrics_transcriber/frontend/dist/assets/index-ZCT0s9MG.js.map,sha256=o3ZQgVCSvTs0LQu7brg461BHRgCPwCRI0TjxyC99uKM,2606491
31
- lyrics_transcriber/frontend/dist/index.html,sha256=va-nSC0PuQHN4j6ZDgCoDsUG7W2DOklJTrH5Vtczmmg,400
29
+ lyrics_transcriber/frontend/dist/assets/index-BXOpmKq-.js,sha256=fJYGO_HEfgSg_5A6_NK1Ee1f2kP_Qkp7JVcDe2ymvj4,1226990
30
+ lyrics_transcriber/frontend/dist/assets/index-BXOpmKq-.js.map,sha256=cgcHxY4eVWppSWSJ-ucIom6w9cuk47hay-wy8jlwD9k,2606947
31
+ lyrics_transcriber/frontend/dist/index.html,sha256=48OalxiOQ5ZEiPndZ-7VH4wb0wbeXzFH6VNWzRz1tqc,400
32
32
  lyrics_transcriber/frontend/dist/vite.svg,sha256=SnSK_UQ5GLsWWRyDTEAdrjPoeGGrXbrQgRw6O0qSFPs,1497
33
33
  lyrics_transcriber/frontend/eslint.config.js,sha256=3ADH23ANA4NNBKFy6nCVk65e8bx1DrVd_FIaYNnhuqA,734
34
34
  lyrics_transcriber/frontend/index.html,sha256=KfqJVONzpUyPIwV73nZRiCWlwLnFWeB3z0vzxDPNudU,376
35
- lyrics_transcriber/frontend/package.json,sha256=kQ0_UiU4xp8wnu-hbTBTAxUB6S_cQMzHM83Dmm5x70s,1181
35
+ lyrics_transcriber/frontend/package.json,sha256=Jhcrbko3OfV2YYc0JCkluoEFMTXq8EEqYm5gcI7O8SU,1181
36
36
  lyrics_transcriber/frontend/public/vite.svg,sha256=SnSK_UQ5GLsWWRyDTEAdrjPoeGGrXbrQgRw6O0qSFPs,1497
37
37
  lyrics_transcriber/frontend/src/App.tsx,sha256=f1-dp-MU8vap18eAXacwVDO5P4eE2iG9zSvjau-7NJs,6533
38
38
  lyrics_transcriber/frontend/src/api.ts,sha256=UgqPc1jo8DEVgxh3_9Lyf9GBsHYpqMAqsPEE5BzTV4w,6640
@@ -45,24 +45,24 @@ lyrics_transcriber/frontend/src/components/EditTimelineSection.tsx,sha256=74dKgU
45
45
  lyrics_transcriber/frontend/src/components/EditWordList.tsx,sha256=hJPXdpW3vur9OFnnIS8xk79yWWTsOuQgy2FdWNQ8vLg,10465
46
46
  lyrics_transcriber/frontend/src/components/FileUpload.tsx,sha256=fwn2rMWtMLPTZLREMb3ps4prSf9nzxGwnjmeC6KYsJA,2383
47
47
  lyrics_transcriber/frontend/src/components/FindReplaceModal.tsx,sha256=U7duKns4IqNXwbWFbQfdyaswnvkSRpfsU0UG__-Serc,20192
48
- lyrics_transcriber/frontend/src/components/Header.tsx,sha256=T07R_OjHRVhodr1eq1U2lS4Ge_FuoHDd62qTbVrMEYo,12296
49
- lyrics_transcriber/frontend/src/components/LyricsAnalyzer.tsx,sha256=hsqkHwRYFGmKgsIZ-qjJ4pgckpX2Un7R-_Twtwill1g,40598
48
+ lyrics_transcriber/frontend/src/components/Header.tsx,sha256=PKFMDITEyC77ndk0emOsU6LFbPTLkWmkTLxEcndKPJY,11657
49
+ lyrics_transcriber/frontend/src/components/LyricsAnalyzer.tsx,sha256=i6RFC-JB5LfURVZnAuNevci1LMxmEXjKTgGTZNj9uSQ,40701
50
50
  lyrics_transcriber/frontend/src/components/ModeSelector.tsx,sha256=OuCOqePGs5JC3NxZxrR-rDu5W5WSObuxrLVOIaqHDOs,1941
51
51
  lyrics_transcriber/frontend/src/components/PreviewVideoSection.tsx,sha256=-9_ljoaadHjAAvia_vhEUgCajPv2jFnRDVR6VWN_a0w,4166
52
- lyrics_transcriber/frontend/src/components/ReferenceView.tsx,sha256=QfK-VzpPcS4iUcYN6iAWE3yQK4rWQJJ-D80DzgixI3I,9436
52
+ lyrics_transcriber/frontend/src/components/ReferenceView.tsx,sha256=thpf2ojge9pvZojUnGaiQroeHfBmxhUesO7945RGSfk,9499
53
53
  lyrics_transcriber/frontend/src/components/ReviewChangesModal.tsx,sha256=zcGoIu5Iqs4ZXpGr3yeMIEKPf8FRLCP2i1TzNOmKzg0,13048
54
54
  lyrics_transcriber/frontend/src/components/SegmentDetailsModal.tsx,sha256=6ME02FkFwCgDAxW49yW260N4vbr80eAJ332Ex811GOo,1643
55
55
  lyrics_transcriber/frontend/src/components/TimelineEditor.tsx,sha256=Aa6ykDRVhWUNHcJ14KGzmUCPDCAltw9gXpdR5ogVQpc,12842
56
56
  lyrics_transcriber/frontend/src/components/TranscriptionView.tsx,sha256=It9alDqvlp3zu9ceEjFpqBOKDa2BFxP4AHm7v2K4AI0,7399
57
57
  lyrics_transcriber/frontend/src/components/WordDivider.tsx,sha256=tOs_4WZGlJQ1o7sZFGLhwUoyX2jSKMa6vLZqa-1vzKY,6590
58
- lyrics_transcriber/frontend/src/components/shared/components/HighlightedText.tsx,sha256=GHEpj6Hw_cUP4xKmg7sEfV4qiS0dVAVU28u2sCm8nTc,16085
59
- lyrics_transcriber/frontend/src/components/shared/components/SourceSelector.tsx,sha256=zZpnQd6RlcGlr2v6T90Eva1cdEkiWzIVE78xAaQPObA,1144
60
- lyrics_transcriber/frontend/src/components/shared/components/Word.tsx,sha256=mP88txgdG47VhYJrn3QqexZYxdmsNCGuBgNrK8mUvhM,2086
58
+ lyrics_transcriber/frontend/src/components/shared/components/HighlightedText.tsx,sha256=Iopa2n7ANnPtHFu2zq7vnfwQ4SOgmBUHUfNKwBQHBxY,16203
59
+ lyrics_transcriber/frontend/src/components/shared/components/SourceSelector.tsx,sha256=FpMn-0i1NFxdIHZN0dxHkWzIIsOEi9CJc_rQMpLyxVw,2031
60
+ lyrics_transcriber/frontend/src/components/shared/components/Word.tsx,sha256=4y1kyWsAO--phTwWvRgX8nAHwSKuBYKVSuJK6j8--rg,2153
61
61
  lyrics_transcriber/frontend/src/components/shared/constants.ts,sha256=25q1qjCwzV-hR72wSb_rJSe4dVuQ0l-piLMoZSpynGQ,488
62
62
  lyrics_transcriber/frontend/src/components/shared/hooks/useWordClick.ts,sha256=aRDzH144FYuK9N3Y0wyTp2c1-DJOT_Y3HWQHHGqiUsY,6196
63
63
  lyrics_transcriber/frontend/src/components/shared/styles.ts,sha256=J1jCSuRqpk1mOFYAqJudhxeozH-q1bi-dsOibLukBJU,411
64
64
  lyrics_transcriber/frontend/src/components/shared/types.js,sha256=1DqoH1vIn6o1ng-XyBS6JRVVkf8Hj7ub_UD4x8loMjA,77
65
- lyrics_transcriber/frontend/src/components/shared/types.ts,sha256=-HniySfrxsjmciMvtXu_bSNAyVHbVAZynRDTC90S5L4,3840
65
+ lyrics_transcriber/frontend/src/components/shared/types.ts,sha256=TUjxwXxiahw0JrRUTUFk_ucUo-G16hB0Jpt8OgVULoU,3892
66
66
  lyrics_transcriber/frontend/src/components/shared/utils/keyboardHandlers.ts,sha256=qtXin35bdVlitJSOmgju-WZP4QkwAJqjlYH3DuwfFPg,4522
67
67
  lyrics_transcriber/frontend/src/components/shared/utils/localStorage.ts,sha256=jpLT65Rk_toaB-8X2lRGyYZ9EoMQDI45GviUT7N9Bp0,3240
68
68
  lyrics_transcriber/frontend/src/components/shared/utils/referenceLineCalculator.ts,sha256=TJ2oHDitFFVxm83eFEhdlwvhx--mIt3054YbET2RiXs,2575
@@ -148,8 +148,8 @@ lyrics_transcriber/transcribers/base_transcriber.py,sha256=T3m4ZCwZ9Bpv6Jvb2hNcn
148
148
  lyrics_transcriber/transcribers/whisper.py,sha256=YcCB1ic9H6zL1GS0jD0emu8-qlcH0QVEjjjYB4aLlIQ,13260
149
149
  lyrics_transcriber/types.py,sha256=d73cDstrEI_tVgngDYYYFwjZNs6OVBuAB_QDkga7dWA,19841
150
150
  lyrics_transcriber/utils/word_utils.py,sha256=-cMGpj9UV4F6IsoDKAV2i1aiqSO8eI91HMAm_igtVMk,958
151
- lyrics_transcriber-0.45.0.dist-info/LICENSE,sha256=BiPihPDxhxIPEx6yAxVfAljD5Bhm_XG2teCbPEj_m0Y,1069
152
- lyrics_transcriber-0.45.0.dist-info/METADATA,sha256=KswMnIPwmJrw597OpS6L7-Hnqny8I4KtncvK4MiPhxI,6017
153
- lyrics_transcriber-0.45.0.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
154
- lyrics_transcriber-0.45.0.dist-info/entry_points.txt,sha256=kcp-bSFkCACAEA0t166Kek0HpaJUXRo5SlF5tVrqNBU,216
155
- lyrics_transcriber-0.45.0.dist-info/RECORD,,
151
+ lyrics_transcriber-0.46.0.dist-info/LICENSE,sha256=BiPihPDxhxIPEx6yAxVfAljD5Bhm_XG2teCbPEj_m0Y,1069
152
+ lyrics_transcriber-0.46.0.dist-info/METADATA,sha256=71tS3Z4R4N11CnTvkLAUpB4bggQAsRfVsrV3oN35930,6017
153
+ lyrics_transcriber-0.46.0.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
154
+ lyrics_transcriber-0.46.0.dist-info/entry_points.txt,sha256=kcp-bSFkCACAEA0t166Kek0HpaJUXRo5SlF5tVrqNBU,216
155
+ lyrics_transcriber-0.46.0.dist-info/RECORD,,