about summary refs log blame commit diff
path: root/tools/music/iTunes.go
blob: 5eb530f6b34b208df5d779fa098994937269407c (plain) (tree)














































































                                                                                       
/* 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
}