initial commit
This commit is contained in:
72
internal/ripsort.go
Normal file
72
internal/ripsort.go
Normal file
@@ -0,0 +1,72 @@
|
||||
package ripsort
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/fs"
|
||||
"log/slog"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
func Scan(filePath string) {
|
||||
info, err := ReadAudioTags(filePath)
|
||||
|
||||
if err != nil {
|
||||
slog.Error("Reading metadata", "file", filePath, "err", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
fmt.Printf("Format: %v\n", info.Format)
|
||||
fmt.Printf("File Type: %v\n", info.FileType)
|
||||
fmt.Printf("Title: %s\n", info.Title)
|
||||
fmt.Printf("Artist: %s\n", info.Artist)
|
||||
fmt.Printf("Album: %s\n", info.Album)
|
||||
fmt.Printf("Album Artist: %s\n", info.AlbumArtist)
|
||||
fmt.Printf("Composer: %s\n", info.Composer)
|
||||
fmt.Printf("Genre: %s\n", info.Genre)
|
||||
fmt.Printf("Year: %d\n", info.Year)
|
||||
fmt.Printf("Track: %d/%d\n", info.Track, info.TotalTracks)
|
||||
fmt.Printf("Disc: %d/%d\n", info.Disc, info.TotalDiscs)
|
||||
fmt.Printf("Lyrics: %s\n", info.Lyrics)
|
||||
fmt.Printf("Comment: %s\n", info.Comment)
|
||||
fmt.Printf("Has Picture: %v\n", info.HasPicture)
|
||||
|
||||
sortPath := pathForFile(filePath, *info)
|
||||
fmt.Printf("Sort path: %s\n", sortPath)
|
||||
}
|
||||
|
||||
func Sort(dst, path string) {
|
||||
info, err := os.Stat(path)
|
||||
if err != nil {
|
||||
slog.Error("Failed to stat path", "file", path, "err", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
if !info.IsDir() {
|
||||
if err := sortSong(path, dst); err != nil {
|
||||
slog.Error("Failed to sort single file", "file", path, "err", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
err = filepath.WalkDir(path, func(p string, d fs.DirEntry, err error) error {
|
||||
if err != nil {
|
||||
slog.Error("Failed to walk path", "path", path, "file", p, "err", err)
|
||||
return err
|
||||
}
|
||||
|
||||
if !d.IsDir() {
|
||||
if err := sortSong(p, dst); err != nil {
|
||||
slog.Error("Failed to sort file", "file", p, "err", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user