diff --git a/api/funkwhale_api/contrib/maloja/funkwhale_ready.py b/api/funkwhale_api/contrib/maloja/funkwhale_ready.py index 7ac9057a6..45db7f70a 100644 --- a/api/funkwhale_api/contrib/maloja/funkwhale_ready.py +++ b/api/funkwhale_api/contrib/maloja/funkwhale_ready.py @@ -17,31 +17,40 @@ def submit_listen(listening, conf, **kwargs): return logger = PLUGIN["logger"] - logger.info("Submitting listening to Majola at %s", server_url) - payload = get_payload(listening, api_key) - logger.debug("Majola payload: %r", payload) + logger.info("Submitting listening to Maloja at %s", server_url) + payload = get_payload(listening, api_key, conf) + logger.debug("Maloja payload: %r", payload) url = server_url.rstrip("/") + "/apis/mlj_1/newscrobble" session = plugins.get_session() response = session.post(url, json=payload) response.raise_for_status() details = json.loads(response.text) if details["status"] == "success": - logger.info("Majola listening submitted successfully") + logger.info("Maloja listening submitted successfully") else: raise MalojaException(response.text) -def get_payload(listening, api_key): +def get_payload(listening, api_key, conf): track = listening.track + + # See https://github.com/krateng/maloja/blob/master/API.md payload = { "key": api_key, "artists": [track.artist.name], "title": track.title, "time": int(listening.creation_date.timestamp()), + "nofix": bool(conf.get("nofix")), } if track.album: if track.album.title: payload["album"] = track.album.title + if track.album.artist: + payload["albumartists"] = [track.album.artist.name] + + upload = track.uploads.filter(duration__gte=0).first() + if upload: + payload["length"] = upload.duration return payload diff --git a/api/funkwhale_api/contrib/maloja/funkwhale_startup.py b/api/funkwhale_api/contrib/maloja/funkwhale_startup.py index 69e5c85b2..266ab32b3 100644 --- a/api/funkwhale_api/contrib/maloja/funkwhale_startup.py +++ b/api/funkwhale_api/contrib/maloja/funkwhale_startup.py @@ -5,10 +5,16 @@ PLUGIN = plugins.get_plugin_config( label="Maloja", description="A plugin that allows you to submit your listens to your Maloja server.", homepage="https://docs.funkwhale.audio/users/builtinplugins.html#maloja-plugin", - version="0.1.1", + version="0.2", user=True, conf=[ {"name": "server_url", "type": "text", "label": "Maloja server URL"}, {"name": "api_key", "type": "text", "label": "Your Maloja API key"}, + { + "name": "nofix", + "type": "boolean", + "label": "Skip server-side metadata fixing", + "default": False, + }, ], ) diff --git a/changes/changelog.d/maloja-extend-submission.enhancement b/changes/changelog.d/maloja-extend-submission.enhancement new file mode 100644 index 000000000..52fe7cd7b --- /dev/null +++ b/changes/changelog.d/maloja-extend-submission.enhancement @@ -0,0 +1 @@ +Maloja: Submit album artists and duration and allow to disable server side metadata fixing