79 lines
		
	
	
		
			No EOL
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			No EOL
		
	
	
		
			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
 | |
| } |