blob: 80c654ad23c192d72c52b146dd7d6e04a929c702 (
plain)
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
#! /bin/bash
set -euf
stream_file=/tmp/krebs.stream.current
HERE=$(dirname $(readlink -f $0))
URLS=`cat $HERE/stream.db`
CURRENT_STREAM="no stream" #will be set when calling `status`
if [ ! `id -u` -eq "0" ]; then
exec sudo "$0" "$@"
fi
#if [ ! `id -u` -eq "0" ]; then
# echo "we are going sudo..."
# exec sudo "$0" "$@"
#fi
function start() {
# start the given stream von $1
REQ=$1
tmux start-server
if status &>/dev/null ; then
echo "!! Stream already running!"
exit 1
fi
if echo "$URLS" | while read URL NAME; do
if [ "$NAME" = "$REQ" ];then
tmux new-session -s streams -n streams -d "
while sleep 1; do
echo $NAME > $stream_file
mplayer $URL
done
"
echo "** $REQ started"
exit 1
fi
done; then
echo "!! Stream '$REQ' not found!"
exit 1
fi
}
function stop()
{
#stops every stream
if status &>/dev/null; then
status | cut -d\ -f2 | xargs printf "** killing %s\n"
tmux kill-session -t streams 2>/dev/null || echo "!! killing session failed"
else
echo "** no stream running";
return 1
fi
}
function status()
{
#tmux has-session -t streams 2>/dev/null
#RET=$?
#tmux list-sessions 2>/dev/null
#return $RET
EV="`ps -ef | grep mplayer`"
if echo "$URLS" | while read URL NAME; do
if [ "`echo "$EV" | grep \"$URL\"`" ] ;then
echo "** $NAME running ($URL)"
exit 1
fi
done; then
echo "** no stream running"
return 1
else
return 0
fi
}
function current()
{
return 1
}
function list()
{
echo "$URLS" | while read URL NAME ; do
echo "$NAME : $URL"
done
}
function shorthelp()
{
echo "start|stop|restart|status|list [audio stream]"
}
function longhelp()
{
B=`basename $0`
echo -n "Usage: $B "
shorthelp
echo "[32;1m get all available streams with [31;1;4m'/$B list'[m
Examples:
$B list
$B start groove
$B restart deepmix
$B status
$B stop"
}
case "$1" in
start)
start ${2-"`test -f $stream_file && cat $stream_file`"}
;;
stop)
stop
;;
(switch|restart)
stop
start $2
;;
status)
status
exit $?
;;
list)
list
;;
(--help)
shorthelp
;;
*)
longhelp
;;
esac
|