mirror of https://github.com/krateng/maloja.git
Adapted listenbrainz API to new architecture
This commit is contained in:
parent
de18ecff26
commit
08bd352641
|
@ -20,8 +20,9 @@ def api_key_correct(request,args,kwargs):
|
||||||
elif "apikey" in kwargs:
|
elif "apikey" in kwargs:
|
||||||
apikey = kwargs.pop("apikey")
|
apikey = kwargs.pop("apikey")
|
||||||
else: return False
|
else: return False
|
||||||
if checkAPIkey(apikey):
|
|
||||||
client = [c for c in apikeystore if apikeystore[c]==apikey][0]
|
client = apikeystore.check_and_identify_key(apikey)
|
||||||
|
if client:
|
||||||
return {'client':client}
|
return {'client':client}
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
|
@ -89,12 +89,10 @@ class APIHandler:
|
||||||
return method(path,keys)
|
return method(path,keys)
|
||||||
|
|
||||||
|
|
||||||
def scrobble(self,artiststr,titlestr,time=None,duration=None,album=None):
|
def scrobble(self,rawscrobble,client=None):
|
||||||
logmsg = f"API {self.__apiname__} receiving scrobble: ARTISTS: {artiststr}, TRACK: {titlestr}"
|
|
||||||
log(logmsg)
|
|
||||||
|
|
||||||
# fixing etc is handled by the main scrobble function
|
# fixing etc is handled by the main scrobble function
|
||||||
try:
|
try:
|
||||||
database.incoming_scrobble(artists=[artiststr],title=titlestr,time=time,duration=duration,album=album)
|
return database.incoming_scrobble(rawscrobble,api=self.__apiname__,client=client)
|
||||||
except:
|
except:
|
||||||
raise ScrobblingException()
|
raise ScrobblingException()
|
||||||
|
|
|
@ -2,7 +2,7 @@ from ._base import APIHandler
|
||||||
from ._exceptions import *
|
from ._exceptions import *
|
||||||
from .. import database
|
from .. import database
|
||||||
import datetime
|
import datetime
|
||||||
from ._apikeys import checkAPIkey
|
from ._apikeys import apikeystore
|
||||||
|
|
||||||
from ..globalconf import malojaconfig
|
from ..globalconf import malojaconfig
|
||||||
|
|
||||||
|
@ -37,7 +37,9 @@ class Listenbrainz(APIHandler):
|
||||||
except:
|
except:
|
||||||
raise BadAuthException()
|
raise BadAuthException()
|
||||||
|
|
||||||
if not checkAPIkey(token):
|
client = apikeystore.check_and_identify_key(token)
|
||||||
|
|
||||||
|
if not client:
|
||||||
raise InvalidAuthException()
|
raise InvalidAuthException()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -60,7 +62,11 @@ class Listenbrainz(APIHandler):
|
||||||
except:
|
except:
|
||||||
raise MalformedJSONException()
|
raise MalformedJSONException()
|
||||||
|
|
||||||
self.scrobble(artiststr,titlestr,timestamp)
|
self.scrobble({
|
||||||
|
'track_artists':[artiststr],
|
||||||
|
'track_title':titlestr,
|
||||||
|
'scrobble_time':timestamp
|
||||||
|
},client=client)
|
||||||
|
|
||||||
return 200,{"status":"ok"}
|
return 200,{"status":"ok"}
|
||||||
|
|
||||||
|
|
|
@ -248,12 +248,15 @@ def post_scrobble(artist:Multi=None,auth_result=None,**keys):
|
||||||
'scrobble_time':int(keys.get('time')) if (keys.get('time') is not None) else None
|
'scrobble_time':int(keys.get('time')) if (keys.get('time') is not None) else None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# for logging purposes, don't pass values that we didn't actually supply
|
||||||
|
rawscrobble = {k:rawscrobble[k] for k in rawscrobble if rawscrobble[k]}
|
||||||
|
|
||||||
return database.incoming_scrobble(
|
return database.incoming_scrobble(
|
||||||
rawscrobble,
|
rawscrobble,
|
||||||
client='browser' if auth_result.get('doreah_native_auth_check') else auth_result.get('client'),
|
client='browser' if auth_result.get('doreah_native_auth_check') else auth_result.get('client'),
|
||||||
|
api='native/v1',
|
||||||
fix=(keys.get("nofix") is None)
|
fix=(keys.get("nofix") is None)
|
||||||
)
|
)
|
||||||
# TODO: malojaclient needs to be converted to proper argument in doreah
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -86,13 +86,13 @@ coa = CollectorAgent()
|
||||||
##
|
##
|
||||||
##
|
##
|
||||||
|
|
||||||
def incoming_scrobble(rawscrobble,fix=True,client=None,dbconn=None):
|
def incoming_scrobble(rawscrobble,fix=True,client=None,api=None,dbconn=None):
|
||||||
|
|
||||||
if (not "track_artists" in rawscrobble) or (len(rawscrobble['track_artists']) == 0) or (not "track_title" in rawscrobble):
|
if (not "track_artists" in rawscrobble) or (len(rawscrobble['track_artists']) == 0) or (not "track_title" in rawscrobble):
|
||||||
log(f"Incoming scrobble {rawscrobble} [Source: {client}] is not valid")
|
log(f"Incoming scrobble {rawscrobble} [Source: {client}] is not valid")
|
||||||
return {"status":"failure"}
|
return {"status":"failure"}
|
||||||
|
|
||||||
log(f"Incoming scrobble [{client}]: {rawscrobble}")
|
log(f"Incoming scrobble [Client: {client} | API: {api}]: {rawscrobble}")
|
||||||
|
|
||||||
# raw scrobble to processed info
|
# raw scrobble to processed info
|
||||||
scrobbleinfo = {**rawscrobble}
|
scrobbleinfo = {**rawscrobble}
|
||||||
|
|
Loading…
Reference in New Issue