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

WHAT THE F*CK AM I DOING

This commit is contained in:
krateng 2022-02-26 21:30:06 +01:00
parent 349e0bb7ea
commit 65f3dac40a
20 changed files with 89 additions and 80 deletions

View File

@ -73,7 +73,7 @@ coa = CollectorAgent()
def incoming_scrobble(artists,title,album=None,albumartists=None,duration=None,length=None,time=None,fix=True,client=None,**kwargs): def incoming_scrobble(artists,title,album=None,albumartists=None,duration=None,length=None,time=None,fix=True,client=None,dbconn=None,**kwargs):
# TODO: just collecting all extra kwargs now. at some point, rework the authenticated api with alt function # TODO: just collecting all extra kwargs now. at some point, rework the authenticated api with alt function
# to actually look at the converted args instead of the request object and remove the key # to actually look at the converted args instead of the request object and remove the key
# so that this function right here doesnt get the key passed to it # so that this function right here doesnt get the key passed to it
@ -106,7 +106,7 @@ def incoming_scrobble(artists,title,album=None,albumartists=None,duration=None,l
} }
sqldb.add_scrobble(scrobbledict) sqldb.add_scrobble(scrobbledict,dbconn=dbconn)
proxy_scrobble_all(artists,title,time) proxy_scrobble_all(artists,title,time)
@ -125,80 +125,80 @@ def incoming_scrobble(artists,title,album=None,albumartists=None,duration=None,l
@waitfordb @waitfordb
def get_scrobbles(**keys): def get_scrobbles(dbconn=None,**keys):
(since,to) = keys.get('timerange').timestamps() (since,to) = keys.get('timerange').timestamps()
if 'artist' in keys: if 'artist' in keys:
result = sqldb.get_scrobbles_of_artist(artist=keys['artist'],since=since,to=to) result = sqldb.get_scrobbles_of_artist(artist=keys['artist'],since=since,to=to,dbconn=dbconn)
elif 'track' in keys: elif 'track' in keys:
result = sqldb.get_scrobbles_of_track(track=keys['track'],since=since,to=to) result = sqldb.get_scrobbles_of_track(track=keys['track'],since=since,to=to,dbconn=dbconn)
else: else:
result = sqldb.get_scrobbles(since=since,to=to) result = sqldb.get_scrobbles(since=since,to=to,dbconn=dbconn)
#return result[keys['page']*keys['perpage']:(keys['page']+1)*keys['perpage']] #return result[keys['page']*keys['perpage']:(keys['page']+1)*keys['perpage']]
return list(reversed(result)) return list(reversed(result))
@waitfordb @waitfordb
def get_scrobbles_num(**keys): def get_scrobbles_num(dbconn=None,**keys):
return len(get_scrobbles(**keys)) return len(get_scrobbles(dbconn=dbconn,**keys))
@waitfordb @waitfordb
def get_tracks(artist=None): def get_tracks(dbconn=None,artist=None):
if artist is None: if artist is None:
result = sqldb.get_tracks() result = sqldb.get_tracks(dbconn=dbconn)
else: else:
result = sqldb.get_tracks_of_artist(artist) result = sqldb.get_tracks_of_artist(artist,dbconn=dbconn)
return result return result
@waitfordb @waitfordb
def get_artists(): def get_artists(dbconn=None):
return sqldb.get_artists() return sqldb.get_artists(dbconn=dbconn)
@waitfordb @waitfordb
def get_charts_artists(**keys): def get_charts_artists(dbconn=None,**keys):
(since,to) = keys.get('timerange').timestamps() (since,to) = keys.get('timerange').timestamps()
result = sqldb.count_scrobbles_by_artist(since=since,to=to) result = sqldb.count_scrobbles_by_artist(since=since,to=to,dbconn=dbconn)
return result return result
@waitfordb @waitfordb
def get_charts_tracks(**keys): def get_charts_tracks(dbconn=None,**keys):
(since,to) = keys.get('timerange').timestamps() (since,to) = keys.get('timerange').timestamps()
if 'artist' in keys: if 'artist' in keys:
result = sqldb.count_scrobbles_by_track_of_artist(since=since,to=to,artist=keys['artist']) result = sqldb.count_scrobbles_by_track_of_artist(since=since,to=to,artist=keys['artist'],dbconn=dbconn)
else: else:
result = sqldb.count_scrobbles_by_track(since=since,to=to) result = sqldb.count_scrobbles_by_track(since=since,to=to,dbconn=dbconn)
return result return result
@waitfordb @waitfordb
def get_pulse(**keys): def get_pulse(dbconn=None,**keys):
rngs = ranges(**{k:keys[k] for k in keys if k in ["since","to","within","timerange","step","stepn","trail"]}) rngs = ranges(**{k:keys[k] for k in keys if k in ["since","to","within","timerange","step","stepn","trail"]})
results = [] results = []
for rng in rngs: for rng in rngs:
res = get_scrobbles_num(timerange=rng,**{k:keys[k] for k in keys if k != 'timerange'}) res = get_scrobbles_num(timerange=rng,**{k:keys[k] for k in keys if k != 'timerange'},dbconn=dbconn)
results.append({"range":rng,"scrobbles":res}) results.append({"range":rng,"scrobbles":res})
return results return results
@waitfordb @waitfordb
def get_performance(**keys): def get_performance(dbconn=None,**keys):
rngs = ranges(**{k:keys[k] for k in keys if k in ["since","to","within","timerange","step","stepn","trail"]}) rngs = ranges(**{k:keys[k] for k in keys if k in ["since","to","within","timerange","step","stepn","trail"]})
results = [] results = []
for rng in rngs: for rng in rngs:
if "track" in keys: if "track" in keys:
track = sqldb.get_track(sqldb.get_track_id(keys['track'])) track = sqldb.get_track(sqldb.get_track_id(keys['track'],dbconn=dbconn),dbconn=dbconn)
charts = get_charts_tracks(timerange=rng) charts = get_charts_tracks(timerange=rng,dbconn=dbconn)
rank = None rank = None
for c in charts: for c in charts:
if c["track"] == track: if c["track"] == track:
rank = c["rank"] rank = c["rank"]
break break
elif "artist" in keys: elif "artist" in keys:
artist = sqldb.get_artist(sqldb.get_artist_id(keys['artist'])) artist = sqldb.get_artist(sqldb.get_artist_id(keys['artist'],dbconn=dbconn),dbconn=dbconn)
# ^this is the most useless line in programming history # ^this is the most useless line in programming history
# but I like consistency # but I like consistency
charts = get_charts_artists(timerange=rng) charts = get_charts_artists(timerange=rng,dbconn=dbconn)
rank = None rank = None
for c in charts: for c in charts:
if c["artist"] == artist: if c["artist"] == artist:
@ -209,14 +209,14 @@ def get_performance(**keys):
return results return results
@waitfordb @waitfordb
def get_top_artists(**keys): def get_top_artists(dbconn=None,**keys):
rngs = ranges(**{k:keys[k] for k in keys if k in ["since","to","within","timerange","step","stepn","trail"]}) rngs = ranges(**{k:keys[k] for k in keys if k in ["since","to","within","timerange","step","stepn","trail"]})
results = [] results = []
for rng in rngs: for rng in rngs:
try: try:
res = get_charts_artists(timerange=rng)[0] res = get_charts_artists(timerange=rng,dbconn=dbconn)[0]
results.append({"range":rng,"artist":res["artist"],"scrobbles":res["scrobbles"]}) results.append({"range":rng,"artist":res["artist"],"scrobbles":res["scrobbles"]})
except: except:
results.append({"range":rng,"artist":None,"scrobbles":0}) results.append({"range":rng,"artist":None,"scrobbles":0})
@ -225,14 +225,14 @@ def get_top_artists(**keys):
@waitfordb @waitfordb
def get_top_tracks(**keys): def get_top_tracks(dbconn=None,**keys):
rngs = ranges(**{k:keys[k] for k in keys if k in ["since","to","within","timerange","step","stepn","trail"]}) rngs = ranges(**{k:keys[k] for k in keys if k in ["since","to","within","timerange","step","stepn","trail"]})
results = [] results = []
for rng in rngs: for rng in rngs:
try: try:
res = get_charts_tracks(timerange=rng)[0] res = get_charts_tracks(timerange=rng,dbconn=dbconn)[0]
results.append({"range":rng,"track":res["track"],"scrobbles":res["scrobbles"]}) results.append({"range":rng,"track":res["track"],"scrobbles":res["scrobbles"]})
except: except:
results.append({"range":rng,"track":None,"scrobbles":0}) results.append({"range":rng,"track":None,"scrobbles":0})
@ -240,15 +240,15 @@ def get_top_tracks(**keys):
return results return results
@waitfordb @waitfordb
def artist_info(artist): def artist_info(artist,dbconn=None):
artist = sqldb.get_artist(sqldb.get_artist_id(artist)) artist = sqldb.get_artist(sqldb.get_artist_id(artist,dbconn=dbconn),dbconn=dbconn)
alltimecharts = get_charts_artists(timerange=alltime()) alltimecharts = get_charts_artists(timerange=alltime(),dbconn=dbconn)
scrobbles = get_scrobbles_num(artist=artist,timerange=alltime()) scrobbles = get_scrobbles_num(artist=artist,timerange=alltime(),dbconn=dbconn)
#we cant take the scrobble number from the charts because that includes all countas scrobbles #we cant take the scrobble number from the charts because that includes all countas scrobbles
try: try:
c = [e for e in alltimecharts if e["artist"] == artist][0] c = [e for e in alltimecharts if e["artist"] == artist][0]
others = sqldb.get_associated_artists(artist) others = sqldb.get_associated_artists(artist,dbconn=dbconn)
position = c["rank"] position = c["rank"]
return { return {
"artist":artist, "artist":artist,
@ -274,10 +274,10 @@ def artist_info(artist):
@waitfordb @waitfordb
def track_info(track): def track_info(track,dbconn=None):
track = sqldb.get_track(sqldb.get_track_id(track)) track = sqldb.get_track(sqldb.get_track_id(track,dbconn=dbconn),dbconn=dbconn)
alltimecharts = get_charts_tracks(timerange=alltime()) alltimecharts = get_charts_tracks(timerange=alltime(),dbconn=dbconn)
#scrobbles = get_scrobbles_num(track=track,timerange=alltime()) #scrobbles = get_scrobbles_num(track=track,timerange=alltime())
c = [e for e in alltimecharts if e["track"] == track][0] c = [e for e in alltimecharts if e["track"] == track][0]

View File

@ -31,6 +31,10 @@ def cached_wrapper(inner_func):
if not USE_CACHE: return inner_func if not USE_CACHE: return inner_func
def outer_func(*args,**kwargs): def outer_func(*args,**kwargs):
if 'dbconn' in kwargs:
conn = kwargs.pop('dbconn')
else:
conn = None
global hits, misses global hits, misses
key = (serialize(args),serialize(kwargs), inner_func, kwargs.get("since"), kwargs.get("to")) key = (serialize(args),serialize(kwargs), inner_func, kwargs.get("since"), kwargs.get("to"))
@ -40,7 +44,7 @@ def cached_wrapper(inner_func):
else: else:
misses += 1 misses += 1
result = inner_func(*args,**kwargs) result = inner_func(*args,**kwargs,dbconn=conn)
cache[key] = result cache[key] = result
return result return result

View File

@ -1,12 +1,17 @@
from .. import database from .. import database
from . sqldb import engine
# this is a wrapper object that provides a DB connection so that one jinja page # this is a wrapper object that provides a DB connection so that one jinja page
# (with all its included partials) can use it for all functions # (with all its included partials) can use it for all functions
# it also translates the non-unpacked calls to unpacked calls that the DB wants # it also translates the non-unpacked calls to unpacked calls that the DB wants
class JinjaDBConnection: class JinjaDBConnection:
def __init__(self): def __enter__(self):
pass self.conn = engine.connect()
return self
def __exit__(self, exc_type, exc_value, exc_traceback):
self.conn.close()
def __getattr__(self,name): def __getattr__(self,name):
originalmethod = getattr(database,name) originalmethod = getattr(database,name)
@ -14,6 +19,6 @@ class JinjaDBConnection:
kwargs = {} kwargs = {}
for k in keys: for k in keys:
kwargs.update(k) kwargs.update(k)
return originalmethod(**kwargs) return originalmethod(**kwargs,dbconn=self.conn)
return packedmethod return packedmethod

View File

@ -167,10 +167,10 @@ def artist_dict_to_db(info):
##### Actual Database interactions ##### Actual Database interactions
def add_scrobble(scrobbledict): def add_scrobble(scrobbledict,dbconn=None):
add_scrobbles([scrobbledict]) add_scrobbles([scrobbledict])
def add_scrobbles(scrobbleslist): def add_scrobbles(scrobbleslist,dbconn=None):
ops = [ ops = [
DB['scrobbles'].insert().values( DB['scrobbles'].insert().values(
@ -189,7 +189,7 @@ def add_scrobbles(scrobbleslist):
### these will 'get' the ID of an entity, creating it if necessary ### these will 'get' the ID of an entity, creating it if necessary
@cached_wrapper @cached_wrapper
def get_track_id(trackdict): def get_track_id(trackdict,dbconn=None):
ntitle = normalize_name(trackdict['title']) ntitle = normalize_name(trackdict['title'])
artist_ids = [get_artist_id(a) for a in trackdict['artists']] artist_ids = [get_artist_id(a) for a in trackdict['artists']]
@ -235,7 +235,7 @@ def get_track_id(trackdict):
return track_id return track_id
@cached_wrapper @cached_wrapper
def get_artist_id(artistname): def get_artist_id(artistname,dbconn=None):
nname = normalize_name(artistname) nname = normalize_name(artistname)
#print("looking for",nname) #print("looking for",nname)
@ -266,7 +266,7 @@ def get_artist_id(artistname):
### Functions that get rows according to parameters ### Functions that get rows according to parameters
@cached_wrapper @cached_wrapper
def get_scrobbles_of_artist(artist,since=None,to=None): def get_scrobbles_of_artist(artist,since=None,to=None,dbconn=None):
if since is None: since=0 if since is None: since=0
if to is None: to=now() if to is None: to=now()
@ -287,7 +287,7 @@ def get_scrobbles_of_artist(artist,since=None,to=None):
return result return result
@cached_wrapper @cached_wrapper
def get_scrobbles_of_track(track,since=None,to=None): def get_scrobbles_of_track(track,since=None,to=None,dbconn=None):
if since is None: since=0 if since is None: since=0
if to is None: to=now() if to is None: to=now()
@ -307,7 +307,7 @@ def get_scrobbles_of_track(track,since=None,to=None):
return result return result
@cached_wrapper @cached_wrapper
def get_scrobbles(since=None,to=None,resolve_references=True): def get_scrobbles(since=None,to=None,resolve_references=True,dbconn=None):
if since is None: since=0 if since is None: since=0
if to is None: to=now() if to is None: to=now()
@ -324,7 +324,7 @@ def get_scrobbles(since=None,to=None,resolve_references=True):
return result return result
@cached_wrapper @cached_wrapper
def get_artists_of_track(track_id,resolve_references=True): def get_artists_of_track(track_id,resolve_references=True,dbconn=None):
with engine.begin() as conn: with engine.begin() as conn:
op = DB['trackartists'].select().where( op = DB['trackartists'].select().where(
DB['trackartists'].c.track_id==track_id DB['trackartists'].c.track_id==track_id
@ -336,7 +336,7 @@ def get_artists_of_track(track_id,resolve_references=True):
@cached_wrapper @cached_wrapper
def get_tracks_of_artist(artist): def get_tracks_of_artist(artist,dbconn=None):
artist_id = get_artist_id(artist) artist_id = get_artist_id(artist)
@ -349,7 +349,7 @@ def get_tracks_of_artist(artist):
return tracks_db_to_dict(result) return tracks_db_to_dict(result)
@cached_wrapper @cached_wrapper
def get_artists(): def get_artists(dbconn=None):
with engine.begin() as conn: with engine.begin() as conn:
op = DB['artists'].select() op = DB['artists'].select()
result = conn.execute(op).all() result = conn.execute(op).all()
@ -357,7 +357,7 @@ def get_artists():
return artists_db_to_dict(result) return artists_db_to_dict(result)
@cached_wrapper @cached_wrapper
def get_tracks(): def get_tracks(dbconn=None):
with engine.begin() as conn: with engine.begin() as conn:
op = DB['tracks'].select() op = DB['tracks'].select()
result = conn.execute(op).all() result = conn.execute(op).all()
@ -367,7 +367,7 @@ def get_tracks():
### functions that count rows for parameters ### functions that count rows for parameters
@cached_wrapper @cached_wrapper
def count_scrobbles_by_artist(since,to): def count_scrobbles_by_artist(since,to,dbconn=None):
jointable = sql.join( jointable = sql.join(
DB['scrobbles'], DB['scrobbles'],
DB['trackartists'], DB['trackartists'],
@ -404,7 +404,7 @@ def count_scrobbles_by_artist(since,to):
return result return result
@cached_wrapper @cached_wrapper
def count_scrobbles_by_track(since,to): def count_scrobbles_by_track(since,to,dbconn=None):
with engine.begin() as conn: with engine.begin() as conn:
op = sql.select( op = sql.select(
@ -424,7 +424,7 @@ def count_scrobbles_by_track(since,to):
return result return result
@cached_wrapper @cached_wrapper
def count_scrobbles_by_track_of_artist(since,to,artist): def count_scrobbles_by_track_of_artist(since,to,artist,dbconn=None):
artist_id = get_artist_id(artist) artist_id = get_artist_id(artist)
@ -458,7 +458,7 @@ def count_scrobbles_by_track_of_artist(since,to,artist):
### functions that get mappings for several entities -> rows ### functions that get mappings for several entities -> rows
@cached_wrapper @cached_wrapper
def get_artists_of_tracks(track_ids): def get_artists_of_tracks(track_ids,dbconn=None):
with engine.begin() as conn: with engine.begin() as conn:
op = sql.join(DB['trackartists'],DB['artists']).select().where( op = sql.join(DB['trackartists'],DB['artists']).select().where(
DB['trackartists'].c.track_id.in_(track_ids) DB['trackartists'].c.track_id.in_(track_ids)
@ -472,7 +472,7 @@ def get_artists_of_tracks(track_ids):
@cached_wrapper @cached_wrapper
def get_tracks_map(track_ids): def get_tracks_map(track_ids,dbconn=None):
with engine.begin() as conn: with engine.begin() as conn:
op = DB['tracks'].select().where( op = DB['tracks'].select().where(
DB['tracks'].c.id.in_(track_ids) DB['tracks'].c.id.in_(track_ids)
@ -487,7 +487,7 @@ def get_tracks_map(track_ids):
return tracks return tracks
@cached_wrapper @cached_wrapper
def get_artists_map(artist_ids): def get_artists_map(artist_ids,dbconn=None):
with engine.begin() as conn: with engine.begin() as conn:
op = DB['artists'].select().where( op = DB['artists'].select().where(
DB['artists'].c.id.in_(artist_ids) DB['artists'].c.id.in_(artist_ids)
@ -505,7 +505,7 @@ def get_artists_map(artist_ids):
### associations ### associations
@cached_wrapper @cached_wrapper
def get_associated_artists(*artists): def get_associated_artists(dbconn=None,*artists):
artist_ids = [get_artist_id(a) for a in artists] artist_ids = [get_artist_id(a) for a in artists]
jointable = sql.join( jointable = sql.join(
@ -524,7 +524,7 @@ def get_associated_artists(*artists):
return artists return artists
@cached_wrapper @cached_wrapper
def get_credited_artists(*artists): def get_credited_artists(dbconn=None,*artists):
artist_ids = [get_artist_id(a) for a in artists] artist_ids = [get_artist_id(a) for a in artists]
jointable = sql.join( jointable = sql.join(
@ -546,7 +546,7 @@ def get_credited_artists(*artists):
### get a specific entity by id ### get a specific entity by id
@cached_wrapper @cached_wrapper
def get_track(id): def get_track(id,dbconn=None):
with engine.begin() as conn: with engine.begin() as conn:
op = DB['tracks'].select().where( op = DB['tracks'].select().where(
DB['tracks'].c.id==id DB['tracks'].c.id==id
@ -557,7 +557,7 @@ def get_track(id):
return track_db_to_dict(trackinfo) return track_db_to_dict(trackinfo)
@cached_wrapper @cached_wrapper
def get_artist(id): def get_artist(id,dbconn=None):
with engine.begin() as conn: with engine.begin() as conn:
op = DB['artists'].select().where( op = DB['artists'].select().where(
DB['artists'].c.id==id DB['artists'].c.id==id

View File

@ -33,7 +33,7 @@
</script> </script>
{% endblock %} {% endblock %}
{% set issuedata = dbp.issues() %} {% set issuedata = dbc.issues() %}
{% block maincontent %} {% block maincontent %}

View File

@ -47,7 +47,7 @@
</script> </script>
{% endblock %} {% endblock %}
{% set rulesets = dbp.get_predefined_rulesets() %} {% set rulesets = dbc.get_predefined_rulesets() %}
{% block maincontent %} {% block maincontent %}

View File

@ -5,7 +5,7 @@
<script src="/datechange.js" async></script> <script src="/datechange.js" async></script>
{% endblock %} {% endblock %}
{% set charts = dbp.get_charts_artists(filterkeys,limitkeys) %} {% set charts = dbc.get_charts_artists(filterkeys,limitkeys) %}
{% set pages = math.ceil(charts.__len__() / amountkeys.perpage) %} {% set pages = math.ceil(charts.__len__() / amountkeys.perpage) %}
{% if charts[0] is defined %} {% if charts[0] is defined %}
{% set topartist = charts[0].artist %} {% set topartist = charts[0].artist %}

View File

@ -7,7 +7,7 @@
<script src="/datechange.js" async></script> <script src="/datechange.js" async></script>
{% endblock %} {% endblock %}
{% set charts = dbp.get_charts_tracks(filterkeys,limitkeys) %} {% set charts = dbc.get_charts_tracks(filterkeys,limitkeys) %}
{% set pages = math.ceil(charts.__len__() / amountkeys.perpage) %} {% set pages = math.ceil(charts.__len__() / amountkeys.perpage) %}
{% if charts[0] is defined %} {% if charts[0] is defined %}
{% set toptrack = charts[0].track %} {% set toptrack = charts[0].track %}

View File

@ -2,7 +2,7 @@
{% import 'snippets/entityrow.jinja' as entityrow %} {% import 'snippets/entityrow.jinja' as entityrow %}
{% if charts is undefined %} {% if charts is undefined %}
{% set charts = dbp.get_charts_artists(limitkeys) %} {% set charts = dbc.get_charts_artists(limitkeys) %}
{% endif %} {% endif %}
{% if compare %} {% if compare %}
@ -11,7 +11,7 @@
{% if compare is none %}{% set compare = False %}{% endif %} {% if compare is none %}{% set compare = False %}{% endif %}
{% endif %} {% endif %}
{% if compare %} {% if compare %}
{% set prevartists = dbp.get_charts_artists({'timerange':compare}) %} {% set prevartists = dbc.get_charts_artists({'timerange':compare}) %}
{% set lastranks = {} %} {% set lastranks = {} %}
{% for a in prevartists %} {% for a in prevartists %}

View File

@ -2,7 +2,7 @@
{% if charts is undefined %} {% if charts is undefined %}
{% set charts = dbp.get_charts_artists(limitkeys) %} {% set charts = dbc.get_charts_artists(limitkeys) %}
{% endif %} {% endif %}
{% set charts_14 = charts | fixlength(14) %} {% set charts_14 = charts | fixlength(14) %}

View File

@ -2,7 +2,7 @@
{% import 'snippets/entityrow.jinja' as entityrow %} {% import 'snippets/entityrow.jinja' as entityrow %}
{% if charts is undefined %} {% if charts is undefined %}
{% set charts = dbp.get_charts_tracks(filterkeys,limitkeys) %} {% set charts = dbc.get_charts_tracks(filterkeys,limitkeys) %}
{% endif %} {% endif %}
{% if compare %} {% if compare %}
{% if compare is true %} {% if compare is true %}
@ -10,7 +10,7 @@
{% if compare is none %}{% set compare = False %}{% endif %} {% if compare is none %}{% set compare = False %}{% endif %}
{% endif %} {% endif %}
{% if compare %} {% if compare %}
{% set prevtracks = dbp.get_charts_tracks(filterkeys,{'timerange':compare}) %} {% set prevtracks = dbc.get_charts_tracks(filterkeys,{'timerange':compare}) %}
{% set lastranks = {} %} {% set lastranks = {} %}
{% for t in prevtracks %} {% for t in prevtracks %}

View File

@ -2,7 +2,7 @@
{% if charts is undefined %} {% if charts is undefined %}
{% set charts = dbp.get_charts_tracks(filterkeys,limitkeys) %} {% set charts = dbc.get_charts_tracks(filterkeys,limitkeys) %}
{% endif %} {% endif %}
{% set charts_14 = charts | fixlength(14) %} {% set charts_14 = charts | fixlength(14) %}

View File

@ -1,6 +1,6 @@
{% import 'snippets/links.jinja' as links %} {% import 'snippets/links.jinja' as links %}
{% set ranges = dbp.get_performance(filterkeys,limitkeys,delimitkeys) %} {% set ranges = dbc.get_performance(filterkeys,limitkeys,delimitkeys) %}
{% set minrank = ranges|map(attribute="rank")|reject("none")|max|default(60) %} {% set minrank = ranges|map(attribute="rank")|reject("none")|max|default(60) %}
{% set minrank = minrank + 20 %} {% set minrank = minrank + 20 %}

View File

@ -1,6 +1,6 @@
{% import 'snippets/links.jinja' as links %} {% import 'snippets/links.jinja' as links %}
{% set ranges = dbp.get_pulse(filterkeys,limitkeys,delimitkeys) %} {% set ranges = dbc.get_pulse(filterkeys,limitkeys,delimitkeys) %}
{% set maxbar = ranges|map(attribute="scrobbles")|max|default(1) %} {% set maxbar = ranges|map(attribute="scrobbles")|max|default(1) %}
{% if maxbar < 1 %}{% set maxbar = 1 %}{% endif %} {% if maxbar < 1 %}{% set maxbar = 1 %}{% endif %}

View File

@ -1,4 +1,4 @@
{% set scrobbles = dbp.get_scrobbles(filterkeys,limitkeys,amountkeys) %} {% set scrobbles = dbc.get_scrobbles(filterkeys,limitkeys,amountkeys) %}
{% set firstindex = amountkeys.page * amountkeys.perpage %} {% set firstindex = amountkeys.page * amountkeys.perpage %}
{% set lastindex = firstindex + amountkeys.perpage %} {% set lastindex = firstindex + amountkeys.perpage %}

View File

@ -1,7 +1,7 @@
{% import 'snippets/links.jinja' as links %} {% import 'snippets/links.jinja' as links %}
{% import 'snippets/entityrow.jinja' as entityrow %} {% import 'snippets/entityrow.jinja' as entityrow %}
{% set ranges = dbp.get_top_artists(limitkeys,delimitkeys) %} {% set ranges = dbc.get_top_artists(limitkeys,delimitkeys) %}
{% set maxbar = ranges|map(attribute="scrobbles")|max|default(1) %} {% set maxbar = ranges|map(attribute="scrobbles")|max|default(1) %}
{% if maxbar < 1 %}{% set maxbar = 1 %}{% endif %} {% if maxbar < 1 %}{% set maxbar = 1 %}{% endif %}

View File

@ -1,7 +1,7 @@
{% import 'snippets/links.jinja' as links %} {% import 'snippets/links.jinja' as links %}
{% import 'snippets/entityrow.jinja' as entityrow %} {% import 'snippets/entityrow.jinja' as entityrow %}
{% set ranges = dbp.get_top_tracks(filterkeys,limitkeys,delimitkeys) %} {% set ranges = dbc.get_top_tracks(filterkeys,limitkeys,delimitkeys) %}
{% set maxbar = ranges|map(attribute="scrobbles")|max|default(1) %} {% set maxbar = ranges|map(attribute="scrobbles")|max|default(1) %}
{% if maxbar < 1 %}{% set maxbar = 1 %}{% endif %} {% if maxbar < 1 %}{% set maxbar = 1 %}{% endif %}

View File

@ -4,7 +4,7 @@
{% import 'snippets/filterdescription.jinja' as filterdesc %} {% import 'snippets/filterdescription.jinja' as filterdesc %}
{% import 'snippets/pagination.jinja' as pagination %} {% import 'snippets/pagination.jinja' as pagination %}
{% set scrobbles = dbp.get_scrobbles(filterkeys,limitkeys,amountkeys) %} {% set scrobbles = dbc.get_scrobbles(filterkeys,limitkeys,amountkeys) %}
{% set pages = math.ceil(scrobbles.__len__() / amountkeys.perpage) %} {% set pages = math.ceil(scrobbles.__len__() / amountkeys.perpage) %}
{% if filterkeys.get('track') is not none %} {% if filterkeys.get('track') is not none %}

View File

@ -4,7 +4,7 @@
<!-- find representative --> <!-- find representative -->
{% set entries = dbp.get_top_artists(limitkeys,delimitkeys) %} {% set entries = dbc.get_top_artists(limitkeys,delimitkeys) %}
{% set repr = entries | find_representative('artist','scrobbles') %} {% set repr = entries | find_representative('artist','scrobbles') %}
{% set img = "/favicon.png" if repr is none else utilities.get_artist_image(repr.artist) %} {% set img = "/favicon.png" if repr is none else utilities.get_artist_image(repr.artist) %}

View File

@ -4,7 +4,7 @@
<!-- find representative --> <!-- find representative -->
{% set entries = dbp.get_top_tracks(filterkeys,limitkeys,delimitkeys) %} {% set entries = dbc.get_top_tracks(filterkeys,limitkeys,delimitkeys) %}
{% set repr = entries | find_representative('track','scrobbles') %} {% set repr = entries | find_representative('track','scrobbles') %}
{% set img = "/favicon.png" if repr is none else utilities.get_track_image(repr.track) %} {% set img = "/favicon.png" if repr is none else utilities.get_track_image(repr.track) %}