mirror of
https://github.com/krateng/maloja.git
synced 2025-07-09 03:04:07 -04:00
Return multiple top results for ranges, GH-278
This commit is contained in:
parent
d160078def
commit
436b40821a
@ -482,7 +482,7 @@ def get_top_artists_external(k_filter, k_limit, k_delimit, k_amount):
|
|||||||
:rtype: Dictionary"""
|
:rtype: Dictionary"""
|
||||||
|
|
||||||
ckeys = {**k_limit, **k_delimit}
|
ckeys = {**k_limit, **k_delimit}
|
||||||
results = database.get_top_artists(**ckeys)
|
results = database.get_top_artists(**ckeys,compatibility=True)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"status":"ok",
|
"status":"ok",
|
||||||
@ -501,7 +501,7 @@ def get_top_tracks_external(k_filter, k_limit, k_delimit, k_amount):
|
|||||||
:rtype: Dictionary"""
|
:rtype: Dictionary"""
|
||||||
|
|
||||||
ckeys = {**k_limit, **k_delimit}
|
ckeys = {**k_limit, **k_delimit}
|
||||||
results = database.get_top_tracks(**ckeys)
|
results = database.get_top_tracks(**ckeys,compatibility=True)
|
||||||
# IMPLEMENT THIS FOR TOP TRACKS OF ARTIST/ALBUM AS WELL?
|
# IMPLEMENT THIS FOR TOP TRACKS OF ARTIST/ALBUM AS WELL?
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -521,7 +521,7 @@ def get_top_albums_external(k_filter, k_limit, k_delimit, k_amount):
|
|||||||
:rtype: Dictionary"""
|
:rtype: Dictionary"""
|
||||||
|
|
||||||
ckeys = {**k_limit, **k_delimit}
|
ckeys = {**k_limit, **k_delimit}
|
||||||
results = database.get_top_albums(**ckeys)
|
results = database.get_top_albums(**ckeys,compatibility=True)
|
||||||
# IMPLEMENT THIS FOR TOP ALBUMS OF ARTIST AS WELL?
|
# IMPLEMENT THIS FOR TOP ALBUMS OF ARTIST AS WELL?
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -42,6 +42,7 @@ from collections import namedtuple
|
|||||||
from threading import Lock
|
from threading import Lock
|
||||||
import yaml, json
|
import yaml, json
|
||||||
import math
|
import math
|
||||||
|
from itertools import takewhile
|
||||||
|
|
||||||
# url handling
|
# url handling
|
||||||
import urllib
|
import urllib
|
||||||
@ -570,7 +571,7 @@ def get_performance(dbconn=None,**keys):
|
|||||||
return results
|
return results
|
||||||
|
|
||||||
@waitfordb
|
@waitfordb
|
||||||
def get_top_artists(dbconn=None,**keys):
|
def get_top_artists(dbconn=None,compatibility=True,**keys):
|
||||||
|
|
||||||
separate = keys.get('separate')
|
separate = keys.get('separate')
|
||||||
|
|
||||||
@ -578,42 +579,73 @@ def get_top_artists(dbconn=None,**keys):
|
|||||||
results = []
|
results = []
|
||||||
|
|
||||||
for rng in rngs:
|
for rng in rngs:
|
||||||
try:
|
result = {'range':rng}
|
||||||
res = get_charts_artists(timerange=rng,separate=separate,dbconn=dbconn)[0]
|
res = get_charts_artists(timerange=rng,separate=separate,dbconn=dbconn)
|
||||||
results.append({"range":rng,"artist":res["artist"],"scrobbles":res["scrobbles"],"real_scrobbles":res["real_scrobbles"],"associated_artists":sqldb.get_associated_artists(res["artist"])})
|
|
||||||
except Exception:
|
result['top'] = [
|
||||||
results.append({"range":rng,"artist":None,"scrobbles":0,"real_scrobbles":0})
|
{'artist': r['artist'], 'scrobbles': r['scrobbles'], 'real_scrobbles':r['real_scrobbles'], 'associated_artists': sqldb.get_associated_artists(r['artist'])}
|
||||||
|
for r in takewhile(lambda x:x['rank']==1,res)
|
||||||
|
]
|
||||||
|
# for third party applications
|
||||||
|
if compatibility:
|
||||||
|
if result['top']:
|
||||||
|
result.update(result['top'][0])
|
||||||
|
else:
|
||||||
|
result.update({'artist':None,'scrobbles':0,'real_scrobbles':0})
|
||||||
|
|
||||||
|
results.append(result)
|
||||||
|
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
||||||
@waitfordb
|
@waitfordb
|
||||||
def get_top_tracks(dbconn=None,**keys):
|
def get_top_tracks(dbconn=None,compatibility=True,**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:
|
result = {'range':rng}
|
||||||
res = get_charts_tracks(timerange=rng,dbconn=dbconn)[0]
|
res = get_charts_tracks(timerange=rng,dbconn=dbconn)
|
||||||
results.append({"range":rng,"track":res["track"],"scrobbles":res["scrobbles"]})
|
|
||||||
except Exception:
|
result['top'] = [
|
||||||
results.append({"range":rng,"track":None,"scrobbles":0})
|
{'track': r['track'], 'scrobbles': r['scrobbles']}
|
||||||
|
for r in takewhile(lambda x:x['rank']==1,res)
|
||||||
|
]
|
||||||
|
# for third party applications
|
||||||
|
if compatibility:
|
||||||
|
if result['top']:
|
||||||
|
result.update(result['top'][0])
|
||||||
|
else:
|
||||||
|
result.update({'track':None,'scrobbles':0})
|
||||||
|
|
||||||
|
results.append(result)
|
||||||
|
|
||||||
return results
|
return results
|
||||||
|
|
||||||
@waitfordb
|
@waitfordb
|
||||||
def get_top_albums(dbconn=None,**keys):
|
def get_top_albums(dbconn=None,compatibility=True,**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:
|
|
||||||
res = get_charts_albums(timerange=rng,dbconn=dbconn)[0]
|
result = {'range':rng}
|
||||||
results.append({"range":rng,"album":res["album"],"scrobbles":res["scrobbles"]})
|
res = get_charts_tracks(timerange=rng,dbconn=dbconn)
|
||||||
except Exception:
|
|
||||||
results.append({"range":rng,"album":None,"scrobbles":0})
|
result['top'] = [
|
||||||
|
{'album': r['album'], 'scrobbles': r['scrobbles']}
|
||||||
|
for r in takewhile(lambda x:x['rank']==1,res)
|
||||||
|
]
|
||||||
|
# for third party applications
|
||||||
|
if compatibility:
|
||||||
|
if result['top']:
|
||||||
|
result.update(result['top'][0])
|
||||||
|
else:
|
||||||
|
result.update({'album':None,'scrobbles':0})
|
||||||
|
|
||||||
|
results.append(result)
|
||||||
|
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user