add lyric fetching

This commit is contained in:
Gabe Farrell 2025-11-22 20:27:12 -05:00
parent 6480f93bb5
commit 66e52469db
2 changed files with 199 additions and 0 deletions

33
main.go
View file

@ -186,6 +186,11 @@ func RunImporter() {
continue
}
fmt.Println("→ Fetching synced lyrics from LRCLIB:")
if err := DownloadAlbumLyrics(albumPath); err != nil {
fmt.Println("Failed to download synced lyrics.")
}
// Apply album-wide ReplayGain
fmt.Println("→ Applying ReplayGain to album:", albumPath)
if err := applyReplayGain(albumPath); err != nil {
@ -207,6 +212,14 @@ func RunImporter() {
}
}
lyrics, _ := getLyricFiles(albumPath)
for _, file := range lyrics {
if err := moveToLibrary(libraryDir, md, file); err != nil {
fmt.Println("Failed to move lyrics:", file, err)
}
}
// Move album cover image
if coverImg, err := media.FindCoverImage(albumPath); err == nil {
if err := moveToLibrary(libraryDir, md, coverImg); err != nil {
@ -241,6 +254,26 @@ func getAudioFiles(dir string) ([]string, error) {
return tracks, nil
}
func getLyricFiles(dir string) ([]string, error) {
entries, err := os.ReadDir(dir)
if err != nil {
return nil, err
}
var lyrics []string
for _, e := range entries {
if e.IsDir() {
continue
}
ext := strings.ToLower(filepath.Ext(e.Name()))
if ext == ".lrc" {
lyrics = append(lyrics, filepath.Join(dir, e.Name()))
}
}
return lyrics, nil
}
func getAlbumMetadata(albumPath, trackPath string) (*MusicMetadata, error) {
fmt.Println("→ Tagging track with beets:", trackPath)