Added a config parser
Add a config.yml/config.toml file to $HOME/.config/goMP/ so that user configurations are read.
This commit is contained in:
parent
8e05e1a865
commit
5ad7b90844
32
config.go
Normal file
32
config.go
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/spf13/viper"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
HOME_DIR, _ = os.UserHomeDir()
|
||||||
|
defaults = map[string]interface{}{
|
||||||
|
"ADDITIONAL_PADDING_X": 12,
|
||||||
|
"ADDITIONAL_PADDING_Y": 16,
|
||||||
|
"IMAGE_WIDTH_EXTRA_X": -1.5,
|
||||||
|
"IMAGE_WIDTH_EXTRA_Y": -3.75,
|
||||||
|
"MUSIC_DIRECTORY": HOME_DIR + "/Music",
|
||||||
|
"PORT": "6600",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func readConfig() {
|
||||||
|
for k, v := range defaults {
|
||||||
|
viper.SetDefault(k, v)
|
||||||
|
}
|
||||||
|
viper.SetConfigName("config")
|
||||||
|
viper.AddConfigPath(HOME_DIR + "/.config/goMP")
|
||||||
|
err := viper.ReadInConfig()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Could Not Read Config file.")
|
||||||
|
}
|
||||||
|
}
|
@ -6,6 +6,7 @@ import (
|
|||||||
|
|
||||||
"github.com/dhowden/tag"
|
"github.com/dhowden/tag"
|
||||||
"github.com/nfnt/resize"
|
"github.com/nfnt/resize"
|
||||||
|
"github.com/spf13/viper"
|
||||||
)
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -14,7 +15,7 @@ import (
|
|||||||
path to default image is sent.
|
path to default image is sent.
|
||||||
*/
|
*/
|
||||||
func getAlbumArt(uri string) string {
|
func getAlbumArt(uri string) string {
|
||||||
var path string = "default.jpg"
|
var path string = "/H/code/goMP/default.jpg"
|
||||||
f, err := os.Open(uri)
|
f, err := os.Open(uri)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
@ -25,13 +26,13 @@ func getAlbumArt(uri string) string {
|
|||||||
}
|
}
|
||||||
albumCover := m.Picture()
|
albumCover := m.Picture()
|
||||||
if albumCover != nil {
|
if albumCover != nil {
|
||||||
b, err := os.Create("thumb.jpg")
|
b, err := os.Create("/H/code/goMP/thumb.jpg")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
defer b.Close()
|
defer b.Close()
|
||||||
b.Write(albumCover.Data)
|
b.Write(albumCover.Data)
|
||||||
path = "thumb.jpg"
|
path = "/H/code/goMP/thumb.jpg"
|
||||||
b.Close()
|
b.Close()
|
||||||
}
|
}
|
||||||
f.Close()
|
f.Close()
|
||||||
@ -53,7 +54,7 @@ func getImg(uri string) (image.Image, error) {
|
|||||||
|
|
||||||
fw, fh := getFontWidth()
|
fw, fh := getFontWidth()
|
||||||
img = resize.Resize(
|
img = resize.Resize(
|
||||||
uint(float32(IMG_W)*(fw+IMAGE_WIDTH_EXTRA_X)), uint(float32(IMG_H)*(fh+IMAGE_WIDTH_EXTRA_Y)),
|
uint(float32(IMG_W)*(fw+float32(viper.GetFloat64("IMAGE_WIDTH_EXTRA_X")))), uint(float32(IMG_H)*(fh+float32(viper.GetFloat64("IMAGE_WIDTH_EXTRA_Y")))),
|
||||||
img,
|
img,
|
||||||
resize.Bilinear,
|
resize.Bilinear,
|
||||||
)
|
)
|
||||||
|
7
main.go
7
main.go
@ -8,6 +8,7 @@ import (
|
|||||||
|
|
||||||
"github.com/fhs/gompd/mpd"
|
"github.com/fhs/gompd/mpd"
|
||||||
"github.com/gdamore/tcell/v2"
|
"github.com/gdamore/tcell/v2"
|
||||||
|
"github.com/spf13/viper"
|
||||||
)
|
)
|
||||||
|
|
||||||
var Volume int64
|
var Volume int64
|
||||||
@ -16,9 +17,9 @@ var Repeat bool
|
|||||||
var InsidePlaylist bool = true
|
var InsidePlaylist bool = true
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
readConfig()
|
||||||
// Connect to MPD server
|
// Connect to MPD server
|
||||||
conn, err := mpd.Dial("tcp", "localhost:6600")
|
conn, err := mpd.Dial("tcp", "localhost:"+viper.GetString("MPD_PORT"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln(err)
|
log.Fatalln(err)
|
||||||
}
|
}
|
||||||
@ -27,7 +28,7 @@ func main() {
|
|||||||
r := newRenderer()
|
r := newRenderer()
|
||||||
c, _ := conn.CurrentSong()
|
c, _ := conn.CurrentSong()
|
||||||
if len(c) != 0 {
|
if len(c) != 0 {
|
||||||
r.Start(DBDIR + c["file"])
|
r.Start(viper.GetString("MUSIC_DIRECTORY") + c["file"])
|
||||||
} else {
|
} else {
|
||||||
r.Start("stop")
|
r.Start("stop")
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
"github.com/fhs/gompd/mpd"
|
"github.com/fhs/gompd/mpd"
|
||||||
"github.com/gdamore/tcell/v2"
|
"github.com/gdamore/tcell/v2"
|
||||||
"github.com/rivo/tview"
|
"github.com/rivo/tview"
|
||||||
|
"github.com/spf13/viper"
|
||||||
)
|
)
|
||||||
|
|
||||||
var CurrentSong string
|
var CurrentSong string
|
||||||
@ -56,7 +57,7 @@ func (s *progressBar) updateTitle(conn mpd.Client, r *Renderer) {
|
|||||||
CurrentSong = ""
|
CurrentSong = ""
|
||||||
r.Send("stop")
|
r.Send("stop")
|
||||||
} else if song != CurrentSong && len(_currentAttributes) != 0 {
|
} else if song != CurrentSong && len(_currentAttributes) != 0 {
|
||||||
r.Send(DBDIR + _currentAttributes["file"])
|
r.Send(viper.GetString("music_directory") + _currentAttributes["file"])
|
||||||
CurrentSong = song
|
CurrentSong = song
|
||||||
}
|
}
|
||||||
// fmt.Println(len(_currentAttributes))
|
// fmt.Println(len(_currentAttributes))
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/spf13/viper"
|
||||||
"gitlab.com/diamondburned/ueberzug-go"
|
"gitlab.com/diamondburned/ueberzug-go"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -43,7 +44,7 @@ func openImage(path string, c chan string) {
|
|||||||
var im *ueberzug.Image
|
var im *ueberzug.Image
|
||||||
if path != "stop" {
|
if path != "stop" {
|
||||||
img2, _ := getImg(getAlbumArt(path))
|
img2, _ := getImg(getAlbumArt(path))
|
||||||
im, _ = ueberzug.NewImage(img2, int(float32(IMG_X)*fw)+ADDITIONAL_PADDING_X, int(float32(IMG_Y)*fh)+ADDITIONAL_PADDING_Y)
|
im, _ = ueberzug.NewImage(img2, int(float32(IMG_X)*fw)+viper.GetInt("ADDITIONAL_PADDING_X"), int(float32(IMG_Y)*fh)+viper.GetInt("ADDITIONAL_PADDING_Y"))
|
||||||
}
|
}
|
||||||
d := <-c
|
d := <-c
|
||||||
if im != nil {
|
if im != nil {
|
||||||
|
4
utils.go
4
utils.go
@ -3,7 +3,6 @@ package main
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
@ -85,8 +84,7 @@ func formatString(a interface{}) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getMusicDirectory() string {
|
func getMusicDirectory() string {
|
||||||
a, _ := os.UserHomeDir()
|
content, err := ioutil.ReadFile(HOME_DIR + "/.config/mpd/mpd.conf")
|
||||||
content, err := ioutil.ReadFile(a + "/.config/mpd/mpd.conf")
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("No Config File for mpd Found")
|
fmt.Println("No Config File for mpd Found")
|
||||||
panic(err)
|
panic(err)
|
||||||
|
Loading…
Reference in New Issue
Block a user