From a5912bb30206ba41b518f4caa6739cf6aa7045da Mon Sep 17 00:00:00 2001 From: moecinnamo Date: Tue, 9 Sep 2025 20:00:52 +0800 Subject: [PATCH] modify lyric time mechanism --- .env.example | 24 ++++++++++++++++-------- yuafengfreeapi.go | 16 +++++++++++++++- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/.env.example b/.env.example index fe2bda1..36a1dc0 100644 --- a/.env.example +++ b/.env.example @@ -1,12 +1,20 @@ -WEBSITE_NAME=MeowEmbeddedMusicServer // Your website name -WEBSITE_URL=http://127.0.0.1:2233 // Your website URL -WEBSITE_DESC=A music server for embedded devices // Your website description -WEBSITE_KEYWORDS=music, embedded, server // Your website keywords -WEBSITE_AUTHOR=Yuafeng // Your website author -WEBSITE_FAVICON=favicon.ico // Your website favicon -PORT=2233 // Your website port +WEBSITE_NAME_CN=MeowEmbeddedMusicServer # Your website name in chinese +WEBSITE_NAME_EN=MeowEmbeddedMusicServer # Your website name in English +WEBSITE_TITLE_CN=MeowEmbeddedMusicServer # Your website title in chinese +WEBSITE_TITLE_EN=MeowEmbeddedMusicServer # Your website title in English +WEBSITE_DESC_CN=A music server for embedded devices # Your website description in chinese +WEBSITE_DESC_EN=A music server for embedded devices # Your website description in English +WEBSITE_KEYWORDS_CN=music, embedded, server # Your website keywords in chinese +WEBSITE_KEYWORDS_EN=music, embedded, server # Your website keywords in English +WEBSITE_FAVICON=/favicon.ico # Your website favicon +WEBSITE_BACKGROUND=/background.webp # Your website background image -// Yuafeng free API sources +WEBSITE_URL=http://127.0.0.1:2233 # Your website URL +PORT=2233 # Your website port + +FONTAWESOME_CDN=https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css # Fontawesome CDN + +# Yuafeng free API sources API_SOURCES=kuwo API_SOURCES_1=netease API_SOURCES_2=migu diff --git a/yuafengfreeapi.go b/yuafengfreeapi.go index 6e663a1..8de5efd 100644 --- a/yuafengfreeapi.go +++ b/yuafengfreeapi.go @@ -7,6 +7,8 @@ import ( "net/http" "os" "path/filepath" + "regexp" + "strconv" "strings" ) @@ -99,7 +101,7 @@ func YuafengAPIResponseHandler(sources, song, singer string) MusicItem { fmt.Println("[Warning] Lyric retrieval failed, skipping lyric file creation and download.") } else if !strings.HasPrefix(lyricData, "http://") && !strings.HasPrefix(lyricData, "https://") { // If it is not in link format, write the lyrics to the file line by line - lines := strings.Split(lyricData, "\r\n") + lines := strings.Split(lyricData, "\n") lyricFilePath := filepath.Join(dirName, "lyric.lrc") file, err := os.Create(lyricFilePath) if err != nil { @@ -108,7 +110,19 @@ func YuafengAPIResponseHandler(sources, song, singer string) MusicItem { } defer file.Close() + timeTagRegex := regexp.MustCompile(`^\[(\d+(?:\.\d+)?)\]`) for _, line := range lines { + // Check if the line starts with a time tag + match := timeTagRegex.FindStringSubmatch(line) + if match != nil { + // Convert the time tag to [mm:ss.ms] format + timeInSeconds, _ := strconv.ParseFloat(match[1], 64) + minutes := int(timeInSeconds / 60) + seconds := int(timeInSeconds) % 60 + milliseconds := int((timeInSeconds-float64(seconds))*1000) / 100 % 100 + formattedTimeTag := fmt.Sprintf("[%02d:%02d.%02d]", minutes, seconds, milliseconds) + line = timeTagRegex.ReplaceAllString(line, formattedTimeTag) + } _, err := file.WriteString(line + "\r\n") if err != nil { fmt.Println("[Error] Error writing to lyric file:", err)