79 lines
1.7 KiB
Go
79 lines
1.7 KiB
Go
|
/* This program is free software. It comes without any warranty, to
|
||
|
* the extent permitted by applicable law. You can redistribute it
|
||
|
* and/or modify it under the terms of the Do What The Fuck You Want
|
||
|
* To Do Public License, Version 3, as published by Vincent Ambo. See
|
||
|
* included COPYING file for more details. */
|
||
|
|
||
|
package main
|
||
|
|
||
|
import( "fmt"
|
||
|
"exec"
|
||
|
"strings"
|
||
|
"http"
|
||
|
"url"
|
||
|
"flag"
|
||
|
"os"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
var authkey, host, c_artist, c_title string
|
||
|
|
||
|
func init(){
|
||
|
flag.StringVar(&authkey, "key", "none", "http auth key")
|
||
|
flag.StringVar(&host, "host", "http://localhost:8080", "host")
|
||
|
}
|
||
|
|
||
|
func main(){
|
||
|
flag.Parse()
|
||
|
fmt.Println("Music updater launching. Update occurs once per minute.")
|
||
|
go updaterThread()
|
||
|
|
||
|
var cc string
|
||
|
for {
|
||
|
fmt.Println("Type \"exit\" to quit")
|
||
|
fmt.Scanf("%s", &cc)
|
||
|
switch(cc) {
|
||
|
case "exit":
|
||
|
os.Exit(1)
|
||
|
default:
|
||
|
fmt.Println("Type \"exit\" to quit")
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func updaterThread(){
|
||
|
rValues := make(url.Values)
|
||
|
rValues.Add("artist", "")
|
||
|
rValues.Add("title", "")
|
||
|
rValues.Add("key", authkey)
|
||
|
|
||
|
for {
|
||
|
title, artist := getTrack()
|
||
|
if (title != c_title) || (artist != c_artist) {
|
||
|
fmt.Println("Updating to: " + title + " - " + artist)
|
||
|
c_artist = artist; c_title = title
|
||
|
rValues.Set("artist", artist)
|
||
|
rValues.Set("title", title)
|
||
|
_, err := http.PostForm(fmt.Sprint(host + "/setsong"), rValues)
|
||
|
if err != nil {
|
||
|
fmt.Println(err.String())
|
||
|
}
|
||
|
}
|
||
|
time.Sleep(60000000000)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func getTrack() (title, artist string){
|
||
|
a, err := exec.Command("./gettitle").Output()
|
||
|
if err != nil {
|
||
|
fmt.Println("err: " + err.String())
|
||
|
title = ""
|
||
|
artist = ""
|
||
|
} else {
|
||
|
trackInfo := strings.Split(string(a), "\n")
|
||
|
title = trackInfo[0]
|
||
|
artist = trackInfo[1]
|
||
|
}
|
||
|
return
|
||
|
}
|