1
0
mirror of https://github.com/krateng/maloja.git synced 2023-08-10 21:12:55 +03:00

Significant rework of the architecture

* URL keys and internal keys are now being separated more cleanly
* HTML generation is split up into submodules that can be used by serveral websites
* HTML generation now talks directly to the database in most cases instead of calling the database server for json data
This commit is contained in:
Krateng
2019-02-20 18:22:45 +01:00
parent a4b95969d5
commit 5f19e7b38e
15 changed files with 461 additions and 415 deletions

View File

@@ -1,63 +1,67 @@
import urllib
import json
import database
def instructions(keys,dbport):
from utilities import getArtistInfo, getTrackInfo
from htmlgenerators import clean, artistLink, artistLinks, trackLink, scrobblesTrackLink, keysToUrl, pickKeys, getTimeDesc, getRangeDesc, scrobblesLink
from htmlgenerators import clean, artistLink, artistLinks, trackLink, scrobblesTrackLink, keysToUrl, pickKeys, getTimeDesc, getRangeDesc, scrobblesLink, KeySplit
from htmlmodules import module_scrobblelist, module_pulse
clean(keys)
limitkeys = pickKeys(keys,"artist","title")
trackobject = {"artists":limitkeys.getall("artist"),"title":limitkeys.get("title")}
info = getTrackInfo(keys.getall("artist"),keys.get("title"))
imgurl = info.get("image")
filterkeys, _, _, _ = KeySplit(keys)
track = filterkeys.get("track")
imgurl = getTrackInfo(track["artists"],track["title"]).get("image")
pushresources = [{"file":imgurl,"type":"image"}] if imgurl.startswith("/") else []
response = urllib.request.urlopen("http://[::1]:" + str(dbport) + "/trackinfo?" + keysToUrl(limitkeys))
db_data = json.loads(response.read())
scrobblesnum = str(db_data["scrobbles"])
pos = "#" + str(db_data["position"])
data = database.trackInfo(track["artists"],track["title"])
scrobblesnum = str(data["scrobbles"])
pos = "#" + str(data["position"])
response = urllib.request.urlopen("http://[::1]:" + str(dbport) + "/scrobbles?" + keysToUrl(limitkeys))
db_data = json.loads(response.read())
scrobbles = db_data["list"]
#response = urllib.request.urlopen("http://[::1]:" + str(dbport) + "/scrobbles?" + keysToUrl(limitkeys))
#db_data = json.loads(response.read())
#scrobbles = db_data["list"]
# build list
html = "<table class='list'>"
for s in scrobbles:
html += "<tr>"
html += "<td class='time'>" + getTimeDesc(s["time"]) + "</td>"
html += "<td class='artists'>" + artistLinks(s["artists"]) + "</td>"
html += "<td class='title'>" + trackLink({"artists":s["artists"],"title":s["title"]}) + "</td>"
html += "</tr>"
html += "</table>"
# html = "<table class='list'>"
# for s in scrobbles:
# html += "<tr>"
# html += "<td class='time'>" + getTimeDesc(s["time"]) + "</td>"
# html += "<td class='artists'>" + artistLinks(s["artists"]) + "</td>"
# html += "<td class='title'>" + trackLink({"artists":s["artists"],"title":s["title"]}) + "</td>"
# html += "</tr>"
# html += "</table>"
html_scrobbles, _, _ = module_scrobblelist(track=track,max_=100)
# pulse
response = urllib.request.urlopen("http://[::1]:" + str(dbport) + "/pulse?step=year&trail=1&" + keysToUrl(limitkeys))
db_data = json.loads(response.read())
terms = db_data["list"]
# response = urllib.request.urlopen("http://[::1]:" + str(dbport) + "/pulse?step=year&trail=1&" + keysToUrl(limitkeys))
# db_data = json.loads(response.read())
# terms = db_data["list"]
# build list
maxbar = max([t["scrobbles"] for t in terms])
# maxbar = max([t["scrobbles"] for t in terms])
html_pulse = "<table class='list'>"
for t in terms:
fromstr = "/".join([str(e) for e in t["from"]])
tostr = "/".join([str(e) for e in t["to"]])
html_pulse += "<tr>"
#html += "<td>" + fromstr + "</td>"
#html += "<td>" + tostr + "</td>"
html_pulse += "<td>" + getRangeDesc(t["from"],t["to"]) + "</td>"
html_pulse += "<td class='amount'>" + scrobblesLink({"since":fromstr,"to":tostr},amount=t["scrobbles"],track=trackobject) + "</td>"
html_pulse += "<td class='bar'>" + scrobblesLink({"since":fromstr,"to":tostr},percent=t["scrobbles"]*100/maxbar,track=trackobject) + "</td>"
html_pulse += "</tr>"
html_pulse += "</table>"
# html_pulse = "<table class='list'>"
# for t in terms:
# fromstr = "/".join([str(e) for e in t["from"]])
# tostr = "/".join([str(e) for e in t["to"]])
# html_pulse += "<tr>"
# #html += "<td>" + fromstr + "</td>"
# #html += "<td>" + tostr + "</td>"
# html_pulse += "<td>" + getRangeDesc(t["from"],t["to"]) + "</td>"
# html_pulse += "<td class='amount'>" + scrobblesLink({"since":fromstr,"to":tostr},amount=t["scrobbles"],track=trackobject) + "</td>"
# html_pulse += "<td class='bar'>" + scrobblesLink({"since":fromstr,"to":tostr},percent=t["scrobbles"]*100/maxbar,track=trackobject) + "</td>"
# html_pulse += "</tr>"
# html_pulse += "</table>"
html_pulse = module_pulse(track=track,step="year",stepn=1,trail=1)
replace = {"KEY_TRACKTITLE":limitkeys.get("title"),"KEY_ARTISTS":artistLinks(limitkeys.getall("artist")),"KEY_SCROBBLES":scrobblesnum,"KEY_IMAGEURL":imgurl,
"KEY_SCROBBLELINK":keysToUrl(limitkeys),"KEY_SCROBBLELIST":html,"KEY_POSITION":pos,"KEY_PULSE":html_pulse}
replace = {"KEY_TRACKTITLE":track.get("title"),"KEY_ARTISTS":artistLinks(track.get("artists")),"KEY_SCROBBLES":scrobblesnum,"KEY_IMAGEURL":imgurl,
"KEY_SCROBBLELINK":keysToUrl(keys),"KEY_SCROBBLELIST":html_scrobbles,"KEY_POSITION":pos,"KEY_PULSE":html_pulse}
return (replace,pushresources)