diff --git a/dev/releases/3.1.yml b/dev/releases/3.1.yml index 03f9bd1..fc63cdf 100644 --- a/dev/releases/3.1.yml +++ b/dev/releases/3.1.yml @@ -23,6 +23,10 @@ minor_release_name: "Soyeon" - "[Bugfix] Fixed leftover whitespaces when parsing titles" - "[Bugfix] Fixed handling of fallthrough values in config file" 3.1.3: + commit: "f3a04c79b1c37597cdf3cafcd95e3c923cd6a53f" notes: - "[Bugfix] Fixed infinite recursion with capitalized featuring delimiters" - "[Bugfix] Fixed favicon display" +3.1.4: + notes: + - "[Feature] Expanded information saved from Listenbrainz API" diff --git a/maloja/apis/listenbrainz.py b/maloja/apis/listenbrainz.py index 129b581..656c11c 100644 --- a/maloja/apis/listenbrainz.py +++ b/maloja/apis/listenbrainz.py @@ -55,6 +55,7 @@ class Listenbrainz(APIHandler): try: metadata = listen["track_metadata"] artiststr, titlestr = metadata["artist_name"], metadata["track_name"] + additional = metadata.get("additional_info",{}) try: timestamp = int(listen["listened_at"]) except Exception: @@ -62,10 +63,19 @@ class Listenbrainz(APIHandler): except Exception: raise MalformedJSONException() + extrafields = { + # fields that will not be consumed by regular scrobbling + # will go into 'extra' + k:additional[k] + for k in ['release_mbid','artist_mbids','recording_mbid','tags'] + if k in additional + } + self.scrobble({ 'track_artists':[artiststr], 'track_title':titlestr, - 'scrobble_time':timestamp + 'scrobble_time':timestamp, + **extrafields },client=client) return 200,{"status":"ok"}