about summary refs log tree commit diff
path: root/tools/music/iTunes.go
diff options
context:
space:
mode:
author"Vincent Ambo ext:(%22) <tazjin@me.com>2012-02-22T21·03+0100
committer"Vincent Ambo ext:(%22) <tazjin@me.com>2012-02-22T21·03+0100
commitb951faa6b4771693f08b4002c771a508904d97a1 (patch)
tree93177791ac00c21ea864920db9ed6faefee4bea3 /tools/music/iTunes.go
* initial checkin
Diffstat (limited to 'tools/music/iTunes.go')
-rw-r--r--tools/music/iTunes.go79
1 files changed, 79 insertions, 0 deletions
diff --git a/tools/music/iTunes.go b/tools/music/iTunes.go
new file mode 100644
index 000000000000..5eb530f6b34b
--- /dev/null
+++ b/tools/music/iTunes.go
@@ -0,0 +1,79 @@
+/* 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
+}
\ No newline at end of file