import urllib from bottle import FormsDict import datetime from urihandler import compose_querystring # returns the proper column(s) for an artist or track def entity_column(element,counting=[],image=None): html = "" if image is not None: html += """
""" if "artists" in element: # track html += "" + artistLinks(element["artists"]) + "" html += "" + trackLink({"artists":element["artists"],"title":element["title"]}) + "" else: # artist html += "" + artistLink(element) if (counting != []): html += " incl. " + ", ".join([artistLink(a) for a in counting]) + "" html += "" return html def artistLink(name): return "" + name + "" def artistLinks(artists): return ", ".join([artistLink(a) for a in artists]) #def trackLink(artists,title): def trackLink(track): artists,title = track["artists"],track["title"] return "" + title + "" #def scrobblesTrackLink(artists,title,timekeys,amount=None,pixels=None): def scrobblesTrackLink(track,timekeys,amount=None,percent=None): artists,title = track["artists"],track["title"] inner = str(amount) if amount is not None else "
" return "" + inner + "" def scrobblesArtistLink(artist,timekeys,amount=None,percent=None,associated=False): inner = str(amount) if amount is not None else "
" askey = "&associated" if associated else "" return "" + inner + "" def scrobblesLink(timekeys,amount=None,percent=None,artist=None,track=None,associated=False): if track is not None: return scrobblesTrackLink(track,timekeys,amount,percent) if artist is not None: return scrobblesArtistLink(artist,timekeys,amount,percent,associated) inner = str(amount) if amount is not None else "
" return "" + inner + "" # limit a multidict to only the specified keys # would be a simple constructor expression, but multidicts apparently don't let me do that def pickKeys(d,*keys): if isinstance(d,dict): return {k:d.get(k) for k in d if k in keys} else: # create a normal dictionary of lists newd = {k:d.getall(k) for k in d if k in keys} # one by one add the list entries to the formsdict finald = FormsDict() for k in newd: for v in newd.get(k): finald.append(k,v) return finald