Compare commits
No commits in common. "3f892331f699720c657007758dc8275516674fdc" and "32a57cc0502328a7ec3784e5812faa9ba20bc2a5" have entirely different histories.
3f892331f6
...
32a57cc050
4 changed files with 40 additions and 48 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1 +0,0 @@
|
||||||
records
|
|
||||||
6
main.go
6
main.go
|
|
@ -16,13 +16,11 @@ const version = "0-pre"
|
||||||
|
|
||||||
var addr *string
|
var addr *string
|
||||||
var port *uint16
|
var port *uint16
|
||||||
var regenerate *bool
|
|
||||||
var showVersion *bool
|
var showVersion *bool
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
addr = getopt.String('a', "0.0.0.0")
|
addr = getopt.String('a', "0.0.0.0")
|
||||||
port = getopt.Uint16('p', 8000)
|
port = getopt.Uint16('p', 8000)
|
||||||
regenerate = getopt.Bool('r')
|
|
||||||
showVersion = getopt.Bool('V')
|
showVersion = getopt.Bool('V')
|
||||||
if err := getopt.Getopt(nil); err != nil {
|
if err := getopt.Getopt(nil); err != nil {
|
||||||
util.Die(err.Error())
|
util.Die(err.Error())
|
||||||
|
|
@ -35,7 +33,7 @@ func main() {
|
||||||
|
|
||||||
args := getopt.Args()
|
args := getopt.Args()
|
||||||
if len(args) != 1 {
|
if len(args) != 1 {
|
||||||
fmt.Fprintf(os.Stderr, "usage: %s [-rV] [-a address] [-p port] directory\n", os.Args[0])
|
fmt.Fprintf(os.Stderr, "usage: %s [-V] [-a address] [-p port] directory\n", os.Args[0])
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -44,7 +42,7 @@ func main() {
|
||||||
log.Printf("This is records %s\n", version)
|
log.Printf("This is records %s\n", version)
|
||||||
log.Println("https://git.baxters.nz/jeremy/records")
|
log.Println("https://git.baxters.nz/jeremy/records")
|
||||||
|
|
||||||
musicindex.Init(mediaDir, *regenerate)
|
musicindex.Init(mediaDir)
|
||||||
|
|
||||||
var artistCount, albumCount, songCount int
|
var artistCount, albumCount, songCount int
|
||||||
artistCount = len(musicindex.Artists())
|
artistCount = len(musicindex.Artists())
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package musicindex
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"io/fs"
|
"io/fs"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
|
@ -57,26 +58,13 @@ func indexArtists() {
|
||||||
util.Die("%s", err.Error())
|
util.Die("%s", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
if (regenerateTarballs) {
|
err = os.RemoveAll(TempDir)
|
||||||
err = os.RemoveAll(TempDir)
|
|
||||||
if err != nil {
|
|
||||||
util.Die("cannot remove temporary directory %s: %s", TempDir, err.Error())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
f, err := os.Stat(TempDir)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = os.Mkdir(TempDir, 0711)
|
util.Die("cannot remove temporary directory %s: %s", TempDir, err.Error())
|
||||||
if err != nil {
|
}
|
||||||
util.Die("cannot make temporary directory %s: %s", TempDir,
|
err = os.Mkdir(TempDir, 0711)
|
||||||
err.Error())
|
if err != nil {
|
||||||
}
|
util.Die("cannot make temporary directory %s: %s", TempDir, err.Error())
|
||||||
log.Println("generating new tarball index")
|
|
||||||
} else {
|
|
||||||
if !f.IsDir() {
|
|
||||||
util.Die("cannot make temporary directory %s: %s", TempDir,
|
|
||||||
"not a directory")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
artists = make(map[string]Artist)
|
artists = make(map[string]Artist)
|
||||||
|
|
@ -160,32 +148,42 @@ func indexAlbum(artist *Artist, albumName, albumDir string) (a Album, err error)
|
||||||
slices.Sort(tracks)
|
slices.Sort(tracks)
|
||||||
a.TrackFiles = tracks
|
a.TrackFiles = tracks
|
||||||
|
|
||||||
generate := false
|
|
||||||
hash := util.HashOf(a.Artist.Name + "::" + a.Name)
|
hash := util.HashOf(a.Artist.Name + "::" + a.Name)
|
||||||
a.Tarball = TempDir + "/" + hash
|
path := TempDir + "/" + hash
|
||||||
|
|
||||||
if _, err = os.Stat(a.Tarball); errors.Is(err, os.ErrNotExist) {
|
if _, err = os.Stat(path); errors.Is(err, os.ErrNotExist) {
|
||||||
// if the file isn't there we definitely want to generate one
|
a.Tarball = path
|
||||||
generate = true
|
} else if err == nil {
|
||||||
} else { // if the file exists or if it's some other error
|
a.Tarball = ""
|
||||||
if regenerateTarballs {
|
for i := range 9 {
|
||||||
// not sure why this is here since we deleted the whole
|
if _, err = os.Stat(fmt.Sprintf("%s.%d", path, i)); err == nil {
|
||||||
// directory beforehand but let's try overwrite it anyway
|
continue
|
||||||
generate = true
|
} else if errors.Is(err, os.ErrNotExist) {
|
||||||
|
a.Tarball = path
|
||||||
|
} else {
|
||||||
|
err = errors.New("cannot create tarball in filesystem: " +
|
||||||
|
err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
if len(a.Tarball) == 0 {
|
||||||
|
err = errors.New("cannot create tarball in filesystem; " +
|
||||||
if generate {
|
"please clean out " + TempDir)
|
||||||
err = targz.Compress(a.Directory(), a.Tarball)
|
|
||||||
if err != nil {
|
|
||||||
a.Tarball = ""
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
err = errors.New("cannot create tarball in filesystem: " + err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
a.Tarball = path
|
||||||
|
err = targz.Compress(a.Directory(), a.Tarball)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
tarball, err := os.Stat(a.Tarball)
|
tarball, err := os.Stat(a.Tarball)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a.Tarball = ""
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
a.TarballSize = tarball.Size()
|
a.TarballSize = tarball.Size()
|
||||||
|
|
|
||||||
|
|
@ -34,23 +34,20 @@ var artists map[string]Artist
|
||||||
var coverFileExtension string
|
var coverFileExtension string
|
||||||
var defaultCoverFile string
|
var defaultCoverFile string
|
||||||
var mediaDir string
|
var mediaDir string
|
||||||
var regenerateTarballs bool
|
|
||||||
var trackFileExtension string
|
var trackFileExtension string
|
||||||
|
|
||||||
func Init(path string, regenerate bool) {
|
func Init(path string) {
|
||||||
InitWith(path, regenerate, ".flac", "cover.jpg", ".jpg")
|
InitWith(path, ".flac", "cover.jpg", ".jpg")
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitWith(path string, regenerate bool,
|
func InitWith(path, mediaExtension, coverFile, coverExtension string) {
|
||||||
mediaExtension, coverFile, coverExtension string) {
|
|
||||||
if initialised {
|
if initialised {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
mediaDir = path
|
mediaDir = path
|
||||||
defaultCoverFile = coverFile
|
|
||||||
regenerateTarballs = regenerate
|
|
||||||
trackFileExtension = mediaExtension
|
trackFileExtension = mediaExtension
|
||||||
|
defaultCoverFile = coverFile
|
||||||
coverFileExtension = coverExtension
|
coverFileExtension = coverExtension
|
||||||
|
|
||||||
assertAccessTo(mediaDir)
|
assertAccessTo(mediaDir)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue