chore: prepare for srt support + force sync lrc timestamp if timeline length mismatch

This commit is contained in:
CDN18 2024-09-27 20:39:48 +08:00
parent 6875b43b78
commit 00deeaf425
Signed by: CDN
GPG key ID: 0C656827F9F80080
2 changed files with 28 additions and 41 deletions

25
convert.go Normal file
View file

@ -0,0 +1,25 @@
package main
import (
"fmt"
"os"
)
func lrcToTxt(sourceFile, targetFile string) {
sourceLyrics, err := parseLyrics(sourceFile)
if err != nil {
fmt.Println("Error parsing source lyrics file:", err)
return
}
file, err := os.Create(targetFile)
if err != nil {
fmt.Println("Error creating target file:", err)
return
}
defer file.Close()
for _, content := range sourceLyrics.Content {
fmt.Fprintln(file, content)
}
}

View file

@ -162,16 +162,14 @@ func syncLyrics(args []string) {
return return
} }
// Sync timeline
if len(sourceLyrics.Timeline) != len(targetLyrics.Timeline) {
fmt.Println("Warning: Timeline length mismatch")
return
}
minLength := len(sourceLyrics.Timeline) minLength := len(sourceLyrics.Timeline)
if len(targetLyrics.Timeline) < minLength { if len(targetLyrics.Timeline) < minLength {
minLength = len(targetLyrics.Timeline) minLength = len(targetLyrics.Timeline)
fmt.Printf("Warning: Timeline length mismatch. Source: %d lines, Target: %d lines. Will sync the first %d lines.\n",
len(sourceLyrics.Timeline), len(targetLyrics.Timeline), minLength)
} }
// Sync the timeline
for i := 0; i < minLength; i++ { for i := 0; i < minLength; i++ {
targetLyrics.Timeline[i] = sourceLyrics.Timeline[i] targetLyrics.Timeline[i] = sourceLyrics.Timeline[i]
} }
@ -185,23 +183,6 @@ func syncLyrics(args []string) {
} }
} }
// func printLyricsInfo(lyrics Lyrics) {
// fmt.Println("Metadata:")
// for key, value := range lyrics.Metadata {
// fmt.Printf("%s: %s\n", key, value)
// }
// fmt.Println("\nTimeline:")
// for _, time := range lyrics.Timeline {
// fmt.Println(time)
// }
// fmt.Println("\nLyrics Content:")
// for _, content := range lyrics.Content {
// fmt.Println(content)
// }
// }
func convertLyrics(args []string) { func convertLyrics(args []string) {
if len(args) < 2 { if len(args) < 2 {
fmt.Println(CONVERT_USAGE) fmt.Println(CONVERT_USAGE)
@ -244,25 +225,6 @@ func fmtLyrics(args []string) {
} }
} }
func lrcToTxt(sourceFile, targetFile string) {
sourceLyrics, err := parseLyrics(sourceFile)
if err != nil {
fmt.Println("Error parsing source lyrics file:", err)
return
}
file, err := os.Create(targetFile)
if err != nil {
fmt.Println("Error creating target file:", err)
return
}
defer file.Close()
for _, content := range sourceLyrics.Content {
fmt.Fprintln(file, content)
}
}
func timestampToString(ts Timestamp) string { func timestampToString(ts Timestamp) string {
if ts.Hours > 0 { if ts.Hours > 0 {
return fmt.Sprintf("[%02d:%02d:%02d.%03d]", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds) return fmt.Sprintf("[%02d:%02d:%02d.%03d]", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds)