mirror of
https://github.com/gabehf/music-importer.git
synced 2026-03-07 21:48:16 -08:00
add pre-import clustering
This commit is contained in:
parent
66e52469db
commit
8682925f2b
1 changed files with 31 additions and 0 deletions
31
main.go
31
main.go
|
|
@ -8,6 +8,7 @@ import (
|
|||
"net/http"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"sync"
|
||||
|
|
@ -154,6 +155,11 @@ func RunImporter() {
|
|||
|
||||
fmt.Println("=== Starting Import ===")
|
||||
|
||||
if err := cluster(importDir); err != nil {
|
||||
log.Println("Failed to cluster top-level audio files:", err)
|
||||
return
|
||||
}
|
||||
|
||||
entries, err := os.ReadDir(importDir)
|
||||
if err != nil {
|
||||
log.Println("Failed to read import dir:", err)
|
||||
|
|
@ -234,6 +240,31 @@ func RunImporter() {
|
|||
fmt.Println("\n=== Import Complete ===")
|
||||
}
|
||||
|
||||
// moves all top-level audio files into folders defined by their album tags
|
||||
func cluster(dir string) error {
|
||||
files, err := getAudioFiles(dir)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, f := range files {
|
||||
tags, err := readTags(f)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = os.MkdirAll(path.Join(dir, fmt.Sprintf("%s", sanitize(tags.Album))), 0755)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = os.Rename(f, path.Join(dir, fmt.Sprintf("%s", sanitize(tags.Album)), path.Base(f)))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func getAudioFiles(dir string) ([]string, error) {
|
||||
entries, err := os.ReadDir(dir)
|
||||
if err != nil {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue