Raspberry Pi internetradio med kolven (9 / 9 steg)
Steg 9: All kod
Jinja2 HTML-mallen:
Interface.html
<! doctype html >
< head >
< title > RPi Radio < / title >
< / head >
< body >
{% om namn %}
< h1 > Välkommen, {{name}} < / h1 >
{% annat %}
< h1 > Välkommen till RPi Radio < / h1 >
{% endif %}
< bildar metod = "POST" action = '/' >
< input type = "Skicka" namn = "Skicka" värde = "Aktivera radio" / >
< input type = "Skicka" namn = "Skicka" värde = "inaktivera radio" / >
< br / >
< Välj namn = "station" > {{stations|safe}} < / Välj >
< input type = "Skicka" namn = "Skicka" värde = "ändra" / >
< br / >
< input type = "Skicka" namn = "Skicka" värde = "uppdatera spellistan" / >
< br / >
< hr / >
< input type = "Skicka" namn = "Skicka" värde = "-5" / > {{volym}}
< input type = "Skicka" namn = "Skicka" värde = "+ 5" / >
< hr / >
< / form >
< / body >
Python lös fil:
predefines.py
importera underprocess
Host = "0.0.0.0"
Port = 1234
txtFile = "stations.txt"
templateFile = "interface.html"
def isInteger(s):
försök:
int(s)
Return True
Förutom ValueError:
returnera False
def mpcCommand(cmd):
p = underprocess. Popen (cmd, stdout = underprocess. Pipa, stderr = underprocess. Pipa, stdin = underprocess. PIPE)
återgå p.stdout.read()
Python kolven kod:
radio.py
#! / usr/bin/python
#-*-kodning: utf-8-*-
från kolven importera kolv
importera render_template från kolven
från kolven importera begäran
från fördefinierar import värd, port, txtFile, templateFile
från fördefinierar import isInteger, mpcCommand
importera underprocess
app = Flask(__name__)
metoder = ["få", "POST"])
def hello_world (namn = "Kolven FM"):
stationer =]
stationURLs =]
stationOutput = ''
om request.method == "POST":
om request.form['submit "] =="aktivera radion":
mpcCommand (['mpc', 'spela'])
Elif request.form['submit'] == "inaktivera radio":
mpcCommand (["mpc", "stoppa"])
Elif request.form['submit'] == 'ändra':
mpcCommand (["mpc", "play", str(request.form['station'])])
Elif request.form['submit'] == "+ 5":
mpcCommand (["mpc", "volym", "5"])
Elif request.form['submit'] == '-5':
mpcCommand (["mpc", "volym", "-5"])
Elif request.form['submit'] == "uppdatera spellistan":
mpcCommand (["mpc", "rensa"])
för stationURL i stationURLs:
mpcCommand (['mpc', 'Lägg till', stationURL])
CMD = ['mpc', '-f', '% position %']
p = underprocess. Popen (cmd, stdout = underprocess. Pipa, stderr = underprocess. Pipa, stdin = underprocess. PIPE)
läge = p.stdout.read()
IDX = position.split('[')
läge = idx[0].strip()
om isInteger(position) == False:
läge = 0
x = 1
för station i stationer:
stationOutput += "< alternativet värdet =" "+ str(x) +" ""
om x == int(position):
stationOutput += "valda ="markerade""
stationOutput += ">" + station + "< / option >"
x += 1
volym = mpcCommand (["mpc", "volym"])
återgå render_template (templateFile, namn = namn, stations=stationOutput.strip(), volym = volym)
om __name__ == "__main__":
app.Run (host = host, port = port, debug = True)