Files

84 lines
1.9 KiB
Go

package main
import (
"os"
"path/filepath"
_ "github.com/mattn/go-sqlite3"
"github.com/op/go-logging"
"git.ohea.xyz/golang/config"
"git.ohea.xyz/mediasrv/server/database"
"git.ohea.xyz/mediasrv/server/rest"
)
func get_data_dir() string {
// Find data directory
// Linux (XDG base directory specification compliant)
xdg_data_home := os.Getenv("XDG_DATA_HOME")
if xdg_data_home != "" {
return filepath.Join(xdg_data_home, "mediasrv")
} else {
home := os.Getenv("HOME")
return filepath.Join(home, ".local", "share", "mediasrv")
}
}
var log = logging.MustGetLogger("mediasrv-server")
type Config struct {
Address string
Port int
ScanDirectory string
}
func main() {
var format = logging.MustStringFormatter(
`%{color}%{time:15:04:05.000} %{level:.4s}:%{color:reset} %{message}`,
)
backend := logging.NewLogBackend(os.Stderr, "", 0)
backendFormatter := logging.NewBackendFormatter(backend, format)
backendLeveled := logging.AddModuleLevel(backendFormatter)
backendLeveled.SetLevel(logging.DEBUG, "")
logging.SetBackend(backendLeveled)
configData := config.Config[Config]{
Name: "mediasrv",
Filename: "server",
Config: Config{
Address: "127.0.0.1",
Port: 32520,
ScanDirectory: "FILL IN",
},
}
ret, err := configData.Get()
if ret == true {
log.Warningf("Created config file at %v, please edit and launch again\n", *configData.ConfigFile)
return
}
data_dir := get_data_dir()
db, is_new, err := database.OpenDatabase(data_dir)
if err != nil {
log.Fatalf("Could not open database: %v", err)
}
defer db.Close()
if is_new {
err = database.ScanTvshowRoot(configData.Config.ScanDirectory, db)
if err != nil {
log.Fatalf("Could not scan directory \"%v\": %v\n", configData.Config.ScanDirectory, err)
}
}
rest.RunServer(configData.Config.Address, configData.Config.Port, data_dir, configData.Config.ScanDirectory)
}