2023-08-28 23:05:23 -05:00
|
|
|
package config
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"errors"
|
2023-09-09 22:34:03 -05:00
|
|
|
"os"
|
|
|
|
|
"path/filepath"
|
|
|
|
|
|
2023-08-28 23:05:23 -05:00
|
|
|
"github.com/BurntSushi/toml"
|
|
|
|
|
"github.com/adrg/xdg"
|
|
|
|
|
"github.com/kirsle/configdir"
|
|
|
|
|
)
|
|
|
|
|
|
2023-09-09 22:34:03 -05:00
|
|
|
const (
|
|
|
|
|
AppName string = "strip-beats"
|
2023-11-12 22:10:31 -06:00
|
|
|
Version string = "0.1.1"
|
2023-09-09 22:34:03 -05:00
|
|
|
Url string = "https://codeberg.org/danjones000/strip-beats"
|
|
|
|
|
Email string = "danjones@goodevilgenius.org"
|
|
|
|
|
UserAgent string = AppName + "/" + Version + " (" + Url + "; " + Email + ")"
|
|
|
|
|
)
|
2023-09-08 21:31:13 -05:00
|
|
|
|
2023-08-28 23:05:23 -05:00
|
|
|
type Config struct {
|
2023-08-29 20:18:27 -05:00
|
|
|
Source string `toml:"source"`
|
|
|
|
|
SourceExtensions []string `toml:"source_ext"`
|
|
|
|
|
Recurse bool `toml:"recurse"`
|
|
|
|
|
SavePath string `toml:"save_path"`
|
|
|
|
|
MusicPath string `toml:"music_path"`
|
|
|
|
|
Codec string `toml:"codec"`
|
2023-09-08 09:35:49 -05:00
|
|
|
FfEncoder string `toml:"ff_encoder"`
|
2023-08-29 20:18:27 -05:00
|
|
|
AllowedCodecs []string `toml:"allowed_codec"`
|
|
|
|
|
CodecExt map[string]string `toml:"codec_ext"`
|
2023-09-08 18:48:21 -05:00
|
|
|
AcousticIdKey string `toml:"acoustic_id_key"`
|
|
|
|
|
AcousticUserKey string `toml:"acoustic_user_key"`
|
2023-08-28 23:05:23 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var config Config
|
|
|
|
|
|
|
|
|
|
func newConfig() Config {
|
|
|
|
|
return Config{
|
2023-08-29 10:58:58 -05:00
|
|
|
Source: xdg.UserDirs.Download,
|
|
|
|
|
SourceExtensions: []string{"webm", "mp4"},
|
|
|
|
|
Recurse: true,
|
|
|
|
|
SavePath: filepath.Join(xdg.UserDirs.Documents, "StripBeats"),
|
|
|
|
|
MusicPath: xdg.UserDirs.Music,
|
2023-08-29 20:18:27 -05:00
|
|
|
Codec: "opus",
|
2023-09-08 09:35:49 -05:00
|
|
|
FfEncoder: "libopus",
|
2023-08-29 20:18:27 -05:00
|
|
|
AllowedCodecs: []string{"aac", "opus"},
|
|
|
|
|
CodecExt: map[string]string{"aac": "m4a", "opus": "opus"},
|
2023-08-28 23:05:23 -05:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
|
config = newConfig()
|
|
|
|
|
configPath := configdir.LocalConfig("strip-beats")
|
|
|
|
|
if err := configdir.MakePath(configPath); err != nil {
|
|
|
|
|
panic(err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
configFile := filepath.Join(configPath, "profile.toml")
|
|
|
|
|
if !exists(configFile) {
|
|
|
|
|
file, err := os.Create(configFile)
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic(err)
|
|
|
|
|
}
|
|
|
|
|
err = toml.NewEncoder(file).Encode(config)
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic(err)
|
|
|
|
|
}
|
|
|
|
|
file.Close()
|
|
|
|
|
} else {
|
|
|
|
|
if _, err := toml.DecodeFile(configFile, &config); err != nil {
|
|
|
|
|
panic(err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GetConfig() Config {
|
|
|
|
|
return config
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func exists(path string) bool {
|
|
|
|
|
_, err := os.Stat(path)
|
|
|
|
|
return !errors.Is(err, os.ErrNotExist)
|
|
|
|
|
}
|