mirror of
https://github.com/gabehf/music-importer.git
synced 2026-03-07 13:38:14 -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"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
@ -154,6 +155,11 @@ func RunImporter() {
|
||||||
|
|
||||||
fmt.Println("=== Starting Import ===")
|
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)
|
entries, err := os.ReadDir(importDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Failed to read import dir:", err)
|
log.Println("Failed to read import dir:", err)
|
||||||
|
|
@ -234,6 +240,31 @@ func RunImporter() {
|
||||||
fmt.Println("\n=== Import Complete ===")
|
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) {
|
func getAudioFiles(dir string) ([]string, error) {
|
||||||
entries, err := os.ReadDir(dir)
|
entries, err := os.ReadDir(dir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue