Skip to content

Commit e3b680b

Browse files
author
David Norman
committed
Adding initial file set
A basic web site A basic controller for bridging between the website and the squeeze server
1 parent dfd85ac commit e3b680b

28 files changed

+8267
-0
lines changed

controller/deploy.sh

Whitespace-only changes.

controller/src/squeezed

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#!/usr/bin/python
2+
3+
import requests
4+
import cherrypy
5+
import cherrypy_cors
6+
import json
7+
import socket
8+
import sys
9+
10+
cherrypy_cors.install()
11+
12+
squeeze_player = ""
13+
14+
def get_ip_address():
15+
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
16+
s.connect(('192.168.0.101', 0)) # connecting to a UDP address doesn't send packets
17+
return s.getsockname()[0]
18+
19+
def squeeze_request(params):
20+
js = {"id":1,"method":"slim.request","params":[squeeze_player,params]}
21+
return requests.post('http://192.168.0.101:9001/jsonrpc.js', data=json.dumps(js)).json()
22+
23+
class SqueezeServerService(object):
24+
exposed = True
25+
26+
@cherrypy.tools.json_out()
27+
@cherrypy.tools.json_in()
28+
def POST(self):
29+
return squeeze_request(cherrypy.request.json)
30+
31+
@cherrypy_cors.tools.preflight(allowed_methods=["POST"])
32+
def OPTIONS(self):
33+
pass
34+
35+
if __name__ == '__main__':
36+
conf = {
37+
'/': {
38+
'request.dispatch': cherrypy.dispatch.MethodDispatcher(),
39+
'tools.response_headers.on': True,
40+
'tools.response_headers.headers': [('Content-Type', 'application/json')],
41+
'cors.expose.on': True,
42+
}
43+
}
44+
45+
# Get our IP address as seen by the squeeze server
46+
ip = get_ip_address()
47+
48+
# Establish our player id
49+
r = squeeze_request(["players"])
50+
player_count = r["result"]["count"]
51+
if player_count == 0:
52+
sys.exit(0)
53+
54+
r = squeeze_request(["players",0,player_count])
55+
for p in r["result"]["players_loop"]:
56+
if p["ip"].startswith(ip):
57+
squeeze_player = p["playerid"]
58+
59+
if squeeze_player == "":
60+
sys.exit(0)
61+
62+
cherrypy.server.socket_host = "0.0.0.0"
63+
cherrypy.server.socket_port = 3000
64+
65+
cherrypy.quickstart(SqueezeServerService(), '/', conf)
66+

dependencies

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
squeezelite
2+
build options: FFMPEG
3+
ffmpeg
4+
5+

deploy.sh

Whitespace-only changes.

web/deploy.sh

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

0 commit comments

Comments
 (0)