1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
#!/usr/bin/python2
# this version cannot tell if a stream is running or just ordinary music
import os
import sys
from subprocess import Popen, PIPE
os.chdir(os.path.dirname(os.path.realpath(sys.argv[0])))
pidfile = "/tmp/krebs.stream.pid"
host="lounge.mpd.shack"
url_file = os.environ.get("STREAM_DB", "../db/stream.db")
urls = []
for line in open(url_file):
urls.append(line.split())
#print urls
mybin = sys.argv[0]
cmd = sys.argv[1] if len(sys.argv) > 1 else "you-are-made-of-stupid"
stream = sys.argv[2] if len(sys.argv) == 3 else "groove"
pipe_silent = open("/dev/null","w")
def urlForStream(stream):
for url, s in urls:
if s == stream:
return url
def streamForUrl(url):
for u, s in urls:
if u == url:
return stream
def startStream(stream_url):
Popen(["mpc","--host",host,"crossfade","5"],
stdout=pipe_silent,stderr=pipe_silent)
Popen(["mpc","--host",host,"repeat","yes"],
stdout=pipe_silent,stderr=pipe_silent)
Popen(["mpc","--host",host,"clear"],
stdout=pipe_silent,stderr=pipe_silent)
Popen(["mpc","--host",host,"add",stream_url],
stdout=pipe_silent,stderr=pipe_silent).wait()
Popen(["mpc","--host",host,"play"],
stdout=pipe_silent,stderr=pipe_silent)
def start(stream):
ret = running()
if ret:
print "!! Stream `%s` already running !" % \
(ret)
else:
startStream(urlForStream(stream))
print "** Starting `%s`."% stream
def stop():
ret = running()
if not ret:
print "!! No Stream running!"
else:
print "** Stopping `%s`" % ret
Popen(["mpc","--host",host,"stop"],
stdout=pipe_silent,stderr=pipe_silent)
def running():
try:
(out,err) = Popen(["mpc","--host",host,"current"],stdout=PIPE,stderr=PIPE).communicate()
out = out.rstrip()
return out
except Exception as e:
return ""
def slist():
for url, name in urls:
print "%s : %s" % (name, url)
def shorthelp():
print "start|stop|restart|status|list [audio stream]"
def longhelp():
print "Usage: %s" % mybin,
shorthelp
print """[32;1m get all available streams with [31;1;4m'/%(fil)s list'[m
Examples:
%(fil)s list
%(fil)s start groove
%(fil)s switch deepmix
%(fil)s status
%(fil)s stop""" % {'fil': mybin}
if cmd == "start":
start(stream)
elif cmd == "stop":
stop()
elif cmd == "switch" or cmd == "restart":
stop()
start(stream)
elif cmd == "status":
ret = running()
if not ret:
print "** nothing running" # , e
else:
print "Now Playing: %s" % ret
elif cmd == "list":
slist()
elif cmd == "--help":
longhelp()
elif cmd == "-h":
shorthelp()
else:
print "unknown command `%s`" % cmd
print "try `%s` --help" % os.path.basename(mybin)
|