diff --git a/maloja/apis/native_v1.py b/maloja/apis/native_v1.py
index eb4eba5..b90ea37 100644
--- a/maloja/apis/native_v1.py
+++ b/maloja/apis/native_v1.py
@@ -337,6 +337,12 @@ def set_settings(**keys):
def set_apikeys(**keys):
apikeystore.update(keys)
+@api.post("import")
+@authenticated_api
+def import_scrobbles(identifier):
+ from ..thirdparty import import_scrobbles
+ import_scrobbles(identifier)
+
@api.get("backup")
@authenticated_api
def get_backup(**keys):
diff --git a/maloja/jinjaenv/context.py b/maloja/jinjaenv/context.py
index 323d669..f39755b 100644
--- a/maloja/jinjaenv/context.py
+++ b/maloja/jinjaenv/context.py
@@ -2,7 +2,7 @@ from .. import database_packed
from . import filters
from ..globalconf import malojaconfig
-from .. import database, database_packed, malojatime, utilities, malojauri
+from .. import database, database_packed, malojatime, utilities, malojauri, thirdparty
from doreah.regular import repeatdaily
import urllib
@@ -31,6 +31,7 @@ def update_jinja_environment():
"utilities": utilities,
"mlj_uri": malojauri,
"settings": malojaconfig,
+ "thirdparty": thirdparty,
# external
"urllib": urllib,
"math":math,
diff --git a/maloja/thirdparty/__init__.py b/maloja/thirdparty/__init__.py
index 9cc2647..3b6e515 100644
--- a/maloja/thirdparty/__init__.py
+++ b/maloja/thirdparty/__init__.py
@@ -13,6 +13,7 @@ import base64
from doreah.logging import log
from ..globalconf import malojaconfig
+from .. import database
services = {
@@ -22,6 +23,12 @@ services = {
}
+def import_scrobbles(identifier):
+ for service in services['import']:
+ if service.identifier == identifier:
+ return service.import_scrobbles()
+ return False
+
def proxy_scrobble_all(artists,title,timestamp):
for service in services["proxyscrobble"]:
service.scrobble(artists,title,timestamp)
@@ -140,10 +147,15 @@ class ImportInterface(GenericInterface,abstract=True):
# necessary auth settings exist
def active_import(self):
return (
- all(self.settings[key] not in [None,"ASK",False] for key in self.scrobbleimport["required_settings"]) and
- malojaconfig[self.scrobbleimport["activated_setting"]]
+ all(self.settings[key] not in [None,"ASK",False] for key in self.scrobbleimport["required_settings"])
+ #and malojaconfig[self.scrobbleimport["activated_setting"]]
+ # registering as import source doesnt do anything on its own, so no need for a setting
)
+ # wrapper so that all the inheriting classes can scrobble
+ def self_scrobble(self,artists,title,timestamp):
+ database.createScrobble(artists=artists,title=title,time=timestamp)
+
# metadata
class MetadataInterface(GenericInterface,abstract=True):
diff --git a/maloja/web/jinja/abstracts/admin.jinja b/maloja/web/jinja/abstracts/admin.jinja
index 3fd6180..060c169 100644
--- a/maloja/web/jinja/abstracts/admin.jinja
+++ b/maloja/web/jinja/abstracts/admin.jinja
@@ -22,7 +22,8 @@
['settings','Settings'],
['apikeys','API Keys'],
['manual','Manual Scrobbling'],
- ['issues','Database Maintenance']
+ ['issues','Database Maintenance'],
+ ['import','Scrobble Import']
] %}
{% if page=='admin_' + tab_url %}
{{ tab_name }}
diff --git a/maloja/web/jinja/admin_import.jinja b/maloja/web/jinja/admin_import.jinja
new file mode 100644
index 0000000..7bd15dd
--- /dev/null
+++ b/maloja/web/jinja/admin_import.jinja
@@ -0,0 +1,28 @@
+{% set page ='admin_import' %}
+{% extends "abstracts/admin.jinja" %}
+{% block title %}Maloja - Import Scrobbles{% endblock %}
+
+
+{% block scripts %}
+
+{% endblock %}
+
+
+{% block maincontent %}
+You can import your scrobbles from other platforms. This will not overwrite scrobbles you've already made,
+unless they are deemed to be equivalent (exact same timestamp). Importing multiple times from the same
+source should also not lead to any duplicates.
+
+{% for importsource in thirdparty.services.import %}
+