1
0
mirror of https://github.com/thebaer/cdr.git synced 2024-11-15 01:31:01 +00:00

Move track information into struct

This adds a NewTrack func that creates the struct, and we now use this in RenameTrack().
This commit is contained in:
Matt Baer 2020-02-25 23:23:03 -05:00
parent 97c9e0d14f
commit 3125d14d23
2 changed files with 38 additions and 12 deletions

View File

@ -13,29 +13,41 @@ import (
var trackNameReg = regexp.MustCompile("^([0-9]{2}).+")
// RenameTrack takes a filename, opens it, reads the metadata, and returns both
// the old and new filename.
func RenameTrack(file string) string {
func NewTrack(file string) *Track {
f, err := os.Open(file)
if err != nil {
fmt.Printf("error loading file: %v", err)
return ""
return nil
}
defer f.Close()
fName := f.Name()
fMatch := trackNameReg.FindStringSubmatch(fName)
m, err := tag.ReadFrom(f)
if err != nil {
return nil
}
return &Track{
Title: m.Title(),
Artist: m.Artist(),
Filename: f.Name(),
}
}
// RenameTrack takes a filename, opens it, reads the metadata, and returns both
// the old and new filename.
func RenameTrack(file string) string {
t := NewTrack(file)
// Extract playlist track number from filename
fMatch := trackNameReg.FindStringSubmatch(t.Filename)
if len(fMatch) < 2 {
log.Fatal("Unexpect filename format")
}
trackNum := fMatch[1]
ext := fName[strings.LastIndex(fName, "."):]
m, err := tag.ReadFrom(f)
if err != nil {
log.Fatal(err)
}
return fmt.Sprintf("%s-%s-%s%s", trackNum, Sanitize(m.Artist()), Sanitize(m.Title()), ext)
ext := t.Filename[strings.LastIndex(t.Filename, "."):]
return fmt.Sprintf("%s-%s-%s%s", trackNum, Sanitize(t.Artist), Sanitize(t.Title), ext)
}
// Sanitize takes a string and removes problematic characters from it.

14
track.go Normal file
View File

@ -0,0 +1,14 @@
package cdr
type (
Mixtape struct {
Tracks []Track
}
Track struct {
Title string
Artist string
Filename string
}
)