lyrics-transcriber 0.49.3__py3-none-any.whl → 0.52.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.
- lyrics_transcriber/cli/cli_main.py +5 -1
- lyrics_transcriber/frontend/dist/assets/{index-DSQidWB1.js → index-C5ftSgQo.js} +633 -60
- lyrics_transcriber/frontend/dist/assets/index-C5ftSgQo.js.map +1 -0
- lyrics_transcriber/frontend/dist/index.html +1 -1
- lyrics_transcriber/frontend/src/components/Header.tsx +31 -0
- lyrics_transcriber/frontend/src/components/LyricsAnalyzer.tsx +125 -18
- lyrics_transcriber/frontend/src/components/PreviewVideoSection.tsx +26 -3
- lyrics_transcriber/frontend/src/components/ReviewChangesModal.tsx +16 -1
- lyrics_transcriber/frontend/src/components/TimingOffsetModal.tsx +131 -0
- lyrics_transcriber/frontend/src/components/shared/utils/keyboardHandlers.ts +8 -0
- lyrics_transcriber/frontend/src/components/shared/utils/timingUtils.ts +110 -0
- lyrics_transcriber/frontend/tsconfig.tsbuildinfo +1 -1
- lyrics_transcriber/output/cdg.py +10 -0
- lyrics_transcriber/transcribers/audioshake.py +1 -1
- {lyrics_transcriber-0.49.3.dist-info → lyrics_transcriber-0.52.0.dist-info}/LICENSE +1 -1
- {lyrics_transcriber-0.49.3.dist-info → lyrics_transcriber-0.52.0.dist-info}/METADATA +10 -9
- {lyrics_transcriber-0.49.3.dist-info → lyrics_transcriber-0.52.0.dist-info}/RECORD +19 -17
- {lyrics_transcriber-0.49.3.dist-info → lyrics_transcriber-0.52.0.dist-info}/WHEEL +1 -1
- lyrics_transcriber/frontend/dist/assets/index-DSQidWB1.js.map +0 -1
- {lyrics_transcriber-0.49.3.dist-info → lyrics_transcriber-0.52.0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,110 @@
|
|
1
|
+
import { LyricsSegment, Word, CorrectionData } from '../../../types';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Apply the timing offset to a single timestamp
|
5
|
+
* @param time The original timestamp in seconds
|
6
|
+
* @param offsetMs The offset in milliseconds
|
7
|
+
* @returns The adjusted timestamp in seconds
|
8
|
+
*/
|
9
|
+
export const applyOffsetToTime = (time: number | null, offsetMs: number): number | null => {
|
10
|
+
if (time === null) return null;
|
11
|
+
// Convert ms to seconds and add to the time
|
12
|
+
return time + (offsetMs / 1000);
|
13
|
+
};
|
14
|
+
|
15
|
+
/**
|
16
|
+
* Apply the timing offset to a word
|
17
|
+
* @param word The original word object
|
18
|
+
* @param offsetMs The offset in milliseconds
|
19
|
+
* @returns A new word object with adjusted timestamps
|
20
|
+
*/
|
21
|
+
export const applyOffsetToWord = (word: Word, offsetMs: number): Word => {
|
22
|
+
if (offsetMs === 0) return word;
|
23
|
+
|
24
|
+
return {
|
25
|
+
...word,
|
26
|
+
start_time: applyOffsetToTime(word.start_time, offsetMs),
|
27
|
+
end_time: applyOffsetToTime(word.end_time, offsetMs)
|
28
|
+
};
|
29
|
+
};
|
30
|
+
|
31
|
+
/**
|
32
|
+
* Apply the timing offset to all words in a segment
|
33
|
+
* Also updates the segment's start and end times based on the first and last word
|
34
|
+
* @param segment The original segment
|
35
|
+
* @param offsetMs The offset in milliseconds
|
36
|
+
* @returns A new segment with adjusted timestamps
|
37
|
+
*/
|
38
|
+
export const applyOffsetToSegment = (segment: LyricsSegment, offsetMs: number): LyricsSegment => {
|
39
|
+
if (offsetMs === 0) return segment;
|
40
|
+
|
41
|
+
const adjustedWords = segment.words.map(word => applyOffsetToWord(word, offsetMs));
|
42
|
+
|
43
|
+
// Update segment start/end times based on first/last word
|
44
|
+
const validStartTimes = adjustedWords.map(w => w.start_time).filter((t): t is number => t !== null);
|
45
|
+
const validEndTimes = adjustedWords.map(w => w.end_time).filter((t): t is number => t !== null);
|
46
|
+
|
47
|
+
const segmentStartTime = validStartTimes.length > 0 ? Math.min(...validStartTimes) : null;
|
48
|
+
const segmentEndTime = validEndTimes.length > 0 ? Math.max(...validEndTimes) : null;
|
49
|
+
|
50
|
+
return {
|
51
|
+
...segment,
|
52
|
+
words: adjustedWords,
|
53
|
+
start_time: segmentStartTime,
|
54
|
+
end_time: segmentEndTime
|
55
|
+
};
|
56
|
+
};
|
57
|
+
|
58
|
+
/**
|
59
|
+
* Apply the timing offset to the entire correction data
|
60
|
+
* This creates a new data object with all timestamps adjusted by the offset
|
61
|
+
* @param data The original correction data
|
62
|
+
* @param offsetMs The offset in milliseconds
|
63
|
+
* @returns A new correction data object with all timestamps adjusted
|
64
|
+
*/
|
65
|
+
export const applyOffsetToCorrectionData = (data: CorrectionData, offsetMs: number): CorrectionData => {
|
66
|
+
console.log(`[TIMING] applyOffsetToCorrectionData called with offset: ${offsetMs}ms`);
|
67
|
+
|
68
|
+
if (offsetMs === 0) {
|
69
|
+
console.log('[TIMING] Offset is 0, returning original data');
|
70
|
+
return data;
|
71
|
+
}
|
72
|
+
|
73
|
+
// Log some examples of original timestamps
|
74
|
+
if (data.corrected_segments.length > 0) {
|
75
|
+
const firstSegment = data.corrected_segments[0];
|
76
|
+
console.log(`[TIMING] First segment before offset - id: ${firstSegment.id}`);
|
77
|
+
console.log(`[TIMING] - start_time: ${firstSegment.start_time}, end_time: ${firstSegment.end_time}`);
|
78
|
+
|
79
|
+
if (firstSegment.words.length > 0) {
|
80
|
+
const firstWord = firstSegment.words[0];
|
81
|
+
const lastWord = firstSegment.words[firstSegment.words.length - 1];
|
82
|
+
console.log(`[TIMING] - first word "${firstWord.text}" time: ${firstWord.start_time} -> ${firstWord.end_time}`);
|
83
|
+
console.log(`[TIMING] - last word "${lastWord.text}" time: ${lastWord.start_time} -> ${lastWord.end_time}`);
|
84
|
+
}
|
85
|
+
}
|
86
|
+
|
87
|
+
const result = {
|
88
|
+
...data,
|
89
|
+
corrected_segments: data.corrected_segments.map(segment =>
|
90
|
+
applyOffsetToSegment(segment, offsetMs)
|
91
|
+
)
|
92
|
+
};
|
93
|
+
|
94
|
+
// Log some examples of adjusted timestamps
|
95
|
+
if (result.corrected_segments.length > 0) {
|
96
|
+
const firstSegment = result.corrected_segments[0];
|
97
|
+
console.log(`[TIMING] First segment AFTER offset - id: ${firstSegment.id}`);
|
98
|
+
console.log(`[TIMING] - start_time: ${firstSegment.start_time}, end_time: ${firstSegment.end_time}`);
|
99
|
+
|
100
|
+
if (firstSegment.words.length > 0) {
|
101
|
+
const firstWord = firstSegment.words[0];
|
102
|
+
const lastWord = firstSegment.words[firstSegment.words.length - 1];
|
103
|
+
console.log(`[TIMING] - first word "${firstWord.text}" time: ${firstWord.start_time} -> ${firstWord.end_time}`);
|
104
|
+
console.log(`[TIMING] - last word "${lastWord.text}" time: ${lastWord.start_time} -> ${lastWord.end_time}`);
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
console.log(`[TIMING] Finished applying offset of ${offsetMs}ms to data`);
|
109
|
+
return result;
|
110
|
+
};
|
@@ -1 +1 @@
|
|
1
|
-
{"root":["./src/app.tsx","./src/api.ts","./src/main.tsx","./src/theme.ts","./src/types.ts","./src/validation.ts","./src/vite-env.d.ts","./src/components/addlyricsmodal.tsx","./src/components/audioplayer.tsx","./src/components/correctionmetrics.tsx","./src/components/editactionbar.tsx","./src/components/editmodal.tsx","./src/components/edittimelinesection.tsx","./src/components/editwordlist.tsx","./src/components/fileupload.tsx","./src/components/findreplacemodal.tsx","./src/components/header.tsx","./src/components/lyricsanalyzer.tsx","./src/components/modeselector.tsx","./src/components/previewvideosection.tsx","./src/components/referenceview.tsx","./src/components/reviewchangesmodal.tsx","./src/components/segmentdetailsmodal.tsx","./src/components/timelineeditor.tsx","./src/components/transcriptionview.tsx","./src/components/worddivider.tsx","./src/components/shared/constants.ts","./src/components/shared/styles.ts","./src/components/shared/types.ts","./src/components/shared/components/highlightedtext.tsx","./src/components/shared/components/sourceselector.tsx","./src/components/shared/components/word.tsx","./src/components/shared/hooks/usewordclick.ts","./src/components/shared/utils/keyboardhandlers.ts","./src/components/shared/utils/localstorage.ts","./src/components/shared/utils/referencelinecalculator.ts","./src/components/shared/utils/segmentoperations.ts","./src/components/shared/utils/wordutils.ts","./src/hooks/usemanualsync.ts","./src/types/global.d.ts"],"version":"5.6.3"}
|
1
|
+
{"root":["./src/app.tsx","./src/api.ts","./src/main.tsx","./src/theme.ts","./src/types.ts","./src/validation.ts","./src/vite-env.d.ts","./src/components/addlyricsmodal.tsx","./src/components/audioplayer.tsx","./src/components/correctionmetrics.tsx","./src/components/editactionbar.tsx","./src/components/editmodal.tsx","./src/components/edittimelinesection.tsx","./src/components/editwordlist.tsx","./src/components/fileupload.tsx","./src/components/findreplacemodal.tsx","./src/components/header.tsx","./src/components/lyricsanalyzer.tsx","./src/components/modeselector.tsx","./src/components/previewvideosection.tsx","./src/components/referenceview.tsx","./src/components/reviewchangesmodal.tsx","./src/components/segmentdetailsmodal.tsx","./src/components/timelineeditor.tsx","./src/components/timingoffsetmodal.tsx","./src/components/transcriptionview.tsx","./src/components/worddivider.tsx","./src/components/shared/constants.ts","./src/components/shared/styles.ts","./src/components/shared/types.ts","./src/components/shared/components/highlightedtext.tsx","./src/components/shared/components/sourceselector.tsx","./src/components/shared/components/word.tsx","./src/components/shared/hooks/usewordclick.ts","./src/components/shared/utils/keyboardhandlers.ts","./src/components/shared/utils/localstorage.ts","./src/components/shared/utils/referencelinecalculator.ts","./src/components/shared/utils/segmentoperations.ts","./src/components/shared/utils/timingutils.ts","./src/components/shared/utils/wordutils.ts","./src/hooks/usemanualsync.ts","./src/types/global.d.ts"],"version":"5.6.3"}
|
lyrics_transcriber/output/cdg.py
CHANGED
@@ -314,6 +314,16 @@ class CDGGenerator:
|
|
314
314
|
"outro_line1_line2_gap",
|
315
315
|
}
|
316
316
|
|
317
|
+
optional_styles_with_defaults = {
|
318
|
+
"title_top_padding": 0,
|
319
|
+
# Any other optional parameters with their default values
|
320
|
+
}
|
321
|
+
|
322
|
+
# Add any missing optional parameters with their default values
|
323
|
+
for key, default_value in optional_styles_with_defaults.items():
|
324
|
+
if key not in cdg_styles:
|
325
|
+
cdg_styles[key] = default_value
|
326
|
+
|
317
327
|
missing_styles = required_styles - set(cdg_styles.keys())
|
318
328
|
if missing_styles:
|
319
329
|
raise ValueError(f"Missing required style parameters: {', '.join(missing_styles)}")
|
@@ -41,7 +41,7 @@ class AudioShakeAPI:
|
|
41
41
|
self.logger.info(f"Uploading {filepath} to AudioShake")
|
42
42
|
self._validate_config() # Validate before making API call
|
43
43
|
|
44
|
-
url = f"{self.config.base_url}/upload"
|
44
|
+
url = f"{self.config.base_url}/upload/"
|
45
45
|
with open(filepath, "rb") as file:
|
46
46
|
files = {"file": (os.path.basename(filepath), file)}
|
47
47
|
response = requests.post(url, headers={"Authorization": self._get_headers()["Authorization"]}, files=files)
|
@@ -1,24 +1,24 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: lyrics-transcriber
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.52.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
|
7
7
|
Author-email: andrew@beveridge.uk
|
8
|
-
Requires-Python: >=3.
|
8
|
+
Requires-Python: >=3.10,<3.14
|
9
9
|
Classifier: License :: OSI Approved :: MIT License
|
10
10
|
Classifier: Programming Language :: Python :: 3
|
11
|
-
Classifier: Programming Language :: Python :: 3.9
|
12
11
|
Classifier: Programming Language :: Python :: 3.10
|
13
12
|
Classifier: Programming Language :: Python :: 3.11
|
14
13
|
Classifier: Programming Language :: Python :: 3.12
|
14
|
+
Classifier: Programming Language :: Python :: 3.13
|
15
15
|
Requires-Dist: attrs (>=23.0.0)
|
16
16
|
Requires-Dist: cattrs (>=23.0.0)
|
17
17
|
Requires-Dist: dropbox (>=12)
|
18
18
|
Requires-Dist: fastapi (>=0.115)
|
19
19
|
Requires-Dist: ffmpeg-python (>=0.2.0)
|
20
20
|
Requires-Dist: fonttools (>=4.55)
|
21
|
-
Requires-Dist: karaoke-lyrics-processor (>=0.
|
21
|
+
Requires-Dist: karaoke-lyrics-processor (>=0.6)
|
22
22
|
Requires-Dist: lyricsgenius (>=0.1.0)
|
23
23
|
Requires-Dist: metaphone (>=0.6)
|
24
24
|
Requires-Dist: nltk (>=3.9)
|
@@ -30,18 +30,19 @@ Requires-Dist: python-dotenv (>=1)
|
|
30
30
|
Requires-Dist: python-levenshtein (>=0.26)
|
31
31
|
Requires-Dist: python-slugify (>=8)
|
32
32
|
Requires-Dist: shortuuid (>=1.0.13,<2.0.0)
|
33
|
-
Requires-Dist: spacy (>=3.8)
|
33
|
+
Requires-Dist: spacy (>=3.8.7)
|
34
34
|
Requires-Dist: spacy-syllables (>=3)
|
35
|
+
Requires-Dist: srsly (>=2.5.1)
|
35
36
|
Requires-Dist: syllables (>=1)
|
36
37
|
Requires-Dist: syrics (>=0)
|
37
38
|
Requires-Dist: toml (>=0.10.0)
|
38
|
-
Requires-Dist: torch (
|
39
|
+
Requires-Dist: torch (>=2.7,<3.0)
|
39
40
|
Requires-Dist: tqdm (>=4.67)
|
40
41
|
Requires-Dist: transformers (>=4.47)
|
41
42
|
Requires-Dist: uvicorn (>=0.34)
|
42
|
-
Project-URL: Documentation, https://github.com/
|
43
|
-
Project-URL: Homepage, https://github.com/
|
44
|
-
Project-URL: Repository, https://github.com/
|
43
|
+
Project-URL: Documentation, https://github.com/nomadkaraoke/python-lyrics-transcriber/blob/main/README.md
|
44
|
+
Project-URL: Homepage, https://github.com/nomadkaraoke/python-lyrics-transcriber
|
45
|
+
Project-URL: Repository, https://github.com/nomadkaraoke/python-lyrics-transcriber
|
45
46
|
Description-Content-Type: text/markdown
|
46
47
|
|
47
48
|
# Lyrics Transcriber 🎶
|
@@ -1,6 +1,6 @@
|
|
1
1
|
lyrics_transcriber/__init__.py,sha256=g9ZbJg9U1qo7XzrC25J3bTKcNzzwUJWDVdi_7-hjcM4,412
|
2
2
|
lyrics_transcriber/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
-
lyrics_transcriber/cli/cli_main.py,sha256=
|
3
|
+
lyrics_transcriber/cli/cli_main.py,sha256=XSKaSIqP4cw-hM_zw_qtFlHvaxG2XWWfygzS4M72NRk,10613
|
4
4
|
lyrics_transcriber/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
5
|
lyrics_transcriber/core/config.py,sha256=euwOOtuNbXy4-a1xs8QKdjcf5jXZQle0zf6X1Wthurw,1229
|
6
6
|
lyrics_transcriber/core/controller.py,sha256=66qwIv-2jEW94wU5RVFRIcfrTyszC-aC_Fcx5dCjG7k,20255
|
@@ -26,9 +26,9 @@ lyrics_transcriber/frontend/.yarn/install-state.gz,sha256=kcgQ-S9HvdNHexkXQVt18L
|
|
26
26
|
lyrics_transcriber/frontend/.yarn/releases/yarn-4.7.0.cjs,sha256=KTYy2KCV2OpHhussV5jIPDdUSr7RftMRhqPsRUmgfAY,2765465
|
27
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-
|
30
|
-
lyrics_transcriber/frontend/dist/assets/index-
|
31
|
-
lyrics_transcriber/frontend/dist/index.html,sha256=
|
29
|
+
lyrics_transcriber/frontend/dist/assets/index-C5ftSgQo.js,sha256=7br7uK67P5qBGO0ujo_v0Mq7iH6UMU9uJxGTkpWMBIE,1257815
|
30
|
+
lyrics_transcriber/frontend/dist/assets/index-C5ftSgQo.js.map,sha256=X28amKQHtLDho5eEnnh3X-NVHcuKFw7XZEOJh_9jIsg,2678200
|
31
|
+
lyrics_transcriber/frontend/dist/index.html,sha256=TCtZWtuUvZeiXgpC1MZjUtgxJS_ol_7zvMXEp_4c1Bs,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
|
@@ -45,14 +45,15 @@ lyrics_transcriber/frontend/src/components/EditTimelineSection.tsx,sha256=74dKgU
|
|
45
45
|
lyrics_transcriber/frontend/src/components/EditWordList.tsx,sha256=atl-9Z-24U-KWojwo0apTy1Y9DbQGoVo2dFX4P-1Z9E,13681
|
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=
|
49
|
-
lyrics_transcriber/frontend/src/components/LyricsAnalyzer.tsx,sha256=
|
48
|
+
lyrics_transcriber/frontend/src/components/Header.tsx,sha256=1qKPR_uLrhlTHrGSMMv16Mx-qg7gHvCoVdmDeuceYxs,15734
|
49
|
+
lyrics_transcriber/frontend/src/components/LyricsAnalyzer.tsx,sha256=2Q5mbEKyxfnbKmotAHESjD3Zrbh5kOIJqJM_npvblB4,52002
|
50
50
|
lyrics_transcriber/frontend/src/components/ModeSelector.tsx,sha256=HnBAK_gFgNBJLtMC_ESMVdUapDjmqmoLX8pQeyHfpOw,2651
|
51
|
-
lyrics_transcriber/frontend/src/components/PreviewVideoSection.tsx,sha256
|
51
|
+
lyrics_transcriber/frontend/src/components/PreviewVideoSection.tsx,sha256=59ZhG5XsxUZ_dkK8BjTQhYmYP5Wv86uRR-xtuwFRK8c,5582
|
52
52
|
lyrics_transcriber/frontend/src/components/ReferenceView.tsx,sha256=thpf2ojge9pvZojUnGaiQroeHfBmxhUesO7945RGSfk,9499
|
53
|
-
lyrics_transcriber/frontend/src/components/ReviewChangesModal.tsx,sha256=
|
53
|
+
lyrics_transcriber/frontend/src/components/ReviewChangesModal.tsx,sha256=VQg_gBFViAxQu9Z75o6rOsvmH5DZBjKq9FkU8aB_7mI,13790
|
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
|
+
lyrics_transcriber/frontend/src/components/TimingOffsetModal.tsx,sha256=aivGi6ehI6cDqwtoKBb6Eif8gpPqi0t3mJT8i5Feu7Q,4803
|
56
57
|
lyrics_transcriber/frontend/src/components/TranscriptionView.tsx,sha256=uXSZcsiMsrxKhgbGUdZEfYTwjwpJbnxRl7AXGfMC0Q8,8607
|
57
58
|
lyrics_transcriber/frontend/src/components/WordDivider.tsx,sha256=tOs_4WZGlJQ1o7sZFGLhwUoyX2jSKMa6vLZqa-1vzKY,6590
|
58
59
|
lyrics_transcriber/frontend/src/components/shared/components/HighlightedText.tsx,sha256=Iopa2n7ANnPtHFu2zq7vnfwQ4SOgmBUHUfNKwBQHBxY,16203
|
@@ -63,10 +64,11 @@ lyrics_transcriber/frontend/src/components/shared/hooks/useWordClick.ts,sha256=e
|
|
63
64
|
lyrics_transcriber/frontend/src/components/shared/styles.ts,sha256=J1jCSuRqpk1mOFYAqJudhxeozH-q1bi-dsOibLukBJU,411
|
64
65
|
lyrics_transcriber/frontend/src/components/shared/types.js,sha256=1DqoH1vIn6o1ng-XyBS6JRVVkf8Hj7ub_UD4x8loMjA,77
|
65
66
|
lyrics_transcriber/frontend/src/components/shared/types.ts,sha256=HFbYnfWhejMAmAU3v-Jrf_Lm5t7WU25L83UP9rvG3M8,3949
|
66
|
-
lyrics_transcriber/frontend/src/components/shared/utils/keyboardHandlers.ts,sha256=
|
67
|
+
lyrics_transcriber/frontend/src/components/shared/utils/keyboardHandlers.ts,sha256=Yh5c_kOdOjE84FtKVB4BBC8QIgkFk5tO0ZJa9oJqqqU,5870
|
67
68
|
lyrics_transcriber/frontend/src/components/shared/utils/localStorage.ts,sha256=jpLT65Rk_toaB-8X2lRGyYZ9EoMQDI45GviUT7N9Bp0,3240
|
68
69
|
lyrics_transcriber/frontend/src/components/shared/utils/referenceLineCalculator.ts,sha256=TJ2oHDitFFVxm83eFEhdlwvhx--mIt3054YbET2RiXs,2575
|
69
70
|
lyrics_transcriber/frontend/src/components/shared/utils/segmentOperations.ts,sha256=yNE-4Da2nL38ofsizQUsPYWl_8Q9Ic2jbB_G3N4X7ps,12559
|
71
|
+
lyrics_transcriber/frontend/src/components/shared/utils/timingUtils.ts,sha256=s3xdwGPg6ltZEcQ4AzgpznAR-fLhCTCYW7pfXaD60JY,4597
|
70
72
|
lyrics_transcriber/frontend/src/components/shared/utils/wordUtils.ts,sha256=bZbsvEgY3JoI15l4SdB51tHE33OkUxDH-WSG8doLcCQ,721
|
71
73
|
lyrics_transcriber/frontend/src/hooks/useManualSync.ts,sha256=fTAtHeO1Ca6o0n01DtietCHNgBFfvFEsXtQQO2orRWI,10775
|
72
74
|
lyrics_transcriber/frontend/src/main.tsx,sha256=UXPXUc2HeDuGtW5GVzP312RjCo3TdnpBal7SWild-k4,345
|
@@ -79,7 +81,7 @@ lyrics_transcriber/frontend/src/vite-env.d.ts,sha256=ZZlpNvuwQpFfe3SiAPzd5-QQ8yp
|
|
79
81
|
lyrics_transcriber/frontend/tsconfig.app.json,sha256=7aUBVcaBqEtmtfQXsbwsgBxSUng06xzQi5t4QCgWQ3E,665
|
80
82
|
lyrics_transcriber/frontend/tsconfig.json,sha256=AOS5v1AsNPL3wGc8bt58Ybh8HHpbYrlK91q0KIzaSgs,627
|
81
83
|
lyrics_transcriber/frontend/tsconfig.node.json,sha256=oMBhK5xufBrVE7SkbADRxA3pxm8_L9m5YwtCOZSafsc,536
|
82
|
-
lyrics_transcriber/frontend/tsconfig.tsbuildinfo,sha256=
|
84
|
+
lyrics_transcriber/frontend/tsconfig.tsbuildinfo,sha256=n9Px5IUHD0gpP4syANUDMHsnuqUQnqsMXtWXGYPc6yU,1593
|
83
85
|
lyrics_transcriber/frontend/vite.config.d.ts,sha256=S5bdGf0pSdKM6A6RNBKwAm3EIeW_bDHYfHtesRtXU7Q,76
|
84
86
|
lyrics_transcriber/frontend/vite.config.js,sha256=P4GuPgRZzwEWPQZpyujUe7eA3mjPoFAe2CgE5sQAXg8,232
|
85
87
|
lyrics_transcriber/frontend/vite.config.ts,sha256=8FdW0dN8zDFqfhQSxX5h7sIu72X2piLYlp_TZYRQvBQ,216
|
@@ -102,7 +104,7 @@ lyrics_transcriber/output/ass/lyrics_screen.py,sha256=gRzUsDMLEtZZPuv77xk7M0FzCp
|
|
102
104
|
lyrics_transcriber/output/ass/section_detector.py,sha256=TsSf4E0fleC-Tzd5KK6q4m-wjGiu6TvGDtHdR6sUqvc,3922
|
103
105
|
lyrics_transcriber/output/ass/section_screen.py,sha256=QeUaIeDXs_Es33W5aqyVSaZzMwUx-b60vbAww3aQfls,4185
|
104
106
|
lyrics_transcriber/output/ass/style.py,sha256=ty3IGorlOZ_Q-TxeA02hNb5Pb0mA755dOb8bqKr1k7U,6880
|
105
|
-
lyrics_transcriber/output/cdg.py,sha256=
|
107
|
+
lyrics_transcriber/output/cdg.py,sha256=0wiWhLfqll23Zte-czF50mAhGuaI3Ux8UfWqL66G6Us,25486
|
106
108
|
lyrics_transcriber/output/cdgmaker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
107
109
|
lyrics_transcriber/output/cdgmaker/cdg.py,sha256=nBqkw0JOois-NI27CkwHblLuBaoL-sHyJb2SntX7m8s,6733
|
108
110
|
lyrics_transcriber/output/cdgmaker/composer.py,sha256=_67PBhg8-EvrRUATCRzEGhzpntKRbwBP7uwf04_W_MA,93997
|
@@ -143,13 +145,13 @@ lyrics_transcriber/review/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
143
145
|
lyrics_transcriber/review/server.py,sha256=D5wMRdwdjW7Y1KnL4dON1rIrZpJg7jhqU_lK1q4ssqg,27445
|
144
146
|
lyrics_transcriber/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
145
147
|
lyrics_transcriber/storage/dropbox.py,sha256=Dyam1ULTkoxD1X5trkZ5dGp5XhBGCn998moC8IS9-68,9804
|
146
|
-
lyrics_transcriber/transcribers/audioshake.py,sha256=
|
148
|
+
lyrics_transcriber/transcribers/audioshake.py,sha256=hLlnRfkYldP8Y0dMCCwjYlLwqUZPAP7Xzk59G3u5bq0,8939
|
147
149
|
lyrics_transcriber/transcribers/base_transcriber.py,sha256=T3m4ZCwZ9Bpv6Jvb2hNcnllk-lmeNmADDJlSySBtP1Q,6480
|
148
150
|
lyrics_transcriber/transcribers/whisper.py,sha256=YcCB1ic9H6zL1GS0jD0emu8-qlcH0QVEjjjYB4aLlIQ,13260
|
149
151
|
lyrics_transcriber/types.py,sha256=d73cDstrEI_tVgngDYYYFwjZNs6OVBuAB_QDkga7dWA,19841
|
150
152
|
lyrics_transcriber/utils/word_utils.py,sha256=-cMGpj9UV4F6IsoDKAV2i1aiqSO8eI91HMAm_igtVMk,958
|
151
|
-
lyrics_transcriber-0.
|
152
|
-
lyrics_transcriber-0.
|
153
|
-
lyrics_transcriber-0.
|
154
|
-
lyrics_transcriber-0.
|
155
|
-
lyrics_transcriber-0.
|
153
|
+
lyrics_transcriber-0.52.0.dist-info/LICENSE,sha256=81R_4XwMZDODHD7JcZeUR8IiCU8AD7Ajl6bmwR9tYDk,1074
|
154
|
+
lyrics_transcriber-0.52.0.dist-info/METADATA,sha256=fszZQYIGEuu4pEFJ3YoGZz9v98U38oLBTNSvh-joqJs,6226
|
155
|
+
lyrics_transcriber-0.52.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
156
|
+
lyrics_transcriber-0.52.0.dist-info/entry_points.txt,sha256=kcp-bSFkCACAEA0t166Kek0HpaJUXRo5SlF5tVrqNBU,216
|
157
|
+
lyrics_transcriber-0.52.0.dist-info/RECORD,,
|