Added Python library for music players / scrobblers

This commit is contained in:
krateng 2021-03-18 18:58:53 +01:00
parent 0cfdc60111
commit 1aeb72fd8f
4 changed files with 55 additions and 1 deletions

View File

@ -134,7 +134,7 @@ These solutions allow you to directly setup scrobbling to your Maloja server:
If you want to implement your own method of scrobbling, it's very simple: You only need one POST request to `/apis/mlj_1/newscrobble` with the keys `artist`, `title` and `key` (and optionally `album`,`duration` (in seconds) and `time`(for cached scrobbles)) - either as form-data or json.
If you're the maintainer of a music player or server and would like to implement native Maloja scrobbling, feel free to reach out - I'll try my best to help.
If you're the maintainer of a music player or server and would like to implement native Maloja scrobbling, feel free to reach out - I'll try my best to help. For Python applications, you can simply use the [`malojalib` package](https://pypi.org/project/maloja-lib/) for a consistent interface even with future updates.
### Standard-compliant API

View File

@ -168,6 +168,11 @@ replacetitle 달라달라 (DALLA DALLA) Dalla Dalla
# K/DA
belongtogether K/DA
# (G)I-DLE
countas Soyeon (G)I-DLE
countas Miyeon (G)I-DLE
# 2NE1
countas CL 2NE1

Can't render this file because it has a wrong number of fields in line 5.

27
malojalib/__init__.py Normal file
View File

@ -0,0 +1,27 @@
import requests
class MalojaInstance:
def __init__(self,base_url,key):
self.base_url = base_url
self.key = key
def test(self):
url = self.base_url + '/apis/mlj_1/test'
response = requests.get(url,{'key':self.key})
return (response.status_code == 200)
def scrobble(self,artists,title,timestamp=None,album=None,duration=None):
payload = {
'key':self.key,
'artists':artists,
'title':title,
'time':timestamp,
'album':album,
'duration':duration
}
url = self.base_url + '/apis/mlj_1/newscrobble'
response = requests.post(url,payload)
return response.json()

22
malojalib/__pkginfo__.py Normal file
View File

@ -0,0 +1,22 @@
name = "maloja-lib"
desc = "Utilities to interact with Maloja servers"
author = {
"name":"Johannes Krattenmacher",
"email":"maloja@dev.krateng.ch",
"github": "krateng"
}
version = 1,0,0
versionstr = ".".join(str(n) for n in version)
links = {
"pypi":"maloja-lib",
"github":"maloja"
}
python_version = ">=3.6"
requires = [
"requests"
]
resources = [
]
commands = {
}