From d11a1ea9c2b4603b6b189dc0bffad466921a8408 Mon Sep 17 00:00:00 2001 From: Krateng Date: Fri, 6 Dec 2019 18:25:36 +0100 Subject: [PATCH] Some preparations --- maloja/__init__.py | 2 +- maloja/data_files/settings/default.ini | 1 + maloja/database.py | 21 ++++++++++++++++++++- maloja/web/compare.py | 2 ++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/maloja/__init__.py b/maloja/__init__.py index 02e1f7a..8a2c4de 100644 --- a/maloja/__init__.py +++ b/maloja/__init__.py @@ -7,7 +7,7 @@ author = { "email":"maloja@krateng.dev", "github": "krateng" } -version = 2,0,4 +version = 2,0,5 versionstr = ".".join(str(n) for n in version) diff --git a/maloja/data_files/settings/default.ini b/maloja/data_files/settings/default.ini index bd3cdc6..f232f06 100644 --- a/maloja/data_files/settings/default.ini +++ b/maloja/data_files/settings/default.ini @@ -57,3 +57,4 @@ NAME = None EXPERIMENTAL_FEATURES = no USE_PYHP = no +FEDERATION = yes diff --git a/maloja/database.py b/maloja/database.py index 646caa4..b236463 100644 --- a/maloja/database.py +++ b/maloja/database.py @@ -27,6 +27,7 @@ import sys import unicodedata from collections import namedtuple from threading import Lock +import yaml # url handling from importlib.machinery import SourceFileLoader import urllib @@ -66,6 +67,18 @@ lastsync = 0 # rulestate that the entire current database was built with, or False if the database was built from inconsistent scrobble files db_rulestate = False +try: + with open("known_servers.yml","r") as f: + KNOWN_SERVERS = set(yaml.safe_load(f)) +except: + KNOWN_SERVERS = set() + + +def add_known_server(url): + KNOWN_SERVERS.add(url) + with open("known_servers.yml","w") as f: + f.write(yaml.dump(list(KNOWN_SERVERS))) + ### symmetric keys are fine for now since we hopefully use HTTPS @@ -264,6 +277,10 @@ def get_scrobbles(**keys): # info for comparison @dbserver.get("info") def info_external(**keys): + + response.set_header("Access-Control-Allow-Origin","*") + response.set_header("Content-Type","application/json") + result = info() return result @@ -275,7 +292,9 @@ def info(): "name":settings.get_settings("NAME"), "artists":{ chartentry["artist"]:round(chartentry["scrobbles"] * 100 / totalscrobbles,3) - for chartentry in get_charts_artists() if chartentry["scrobbles"]/totalscrobbles >= 0} + for chartentry in get_charts_artists() if chartentry["scrobbles"]/totalscrobbles >= 0 + }, + "known_servers":list(KNOWN_SERVERS) } diff --git a/maloja/web/compare.py b/maloja/web/compare.py index 5edd54c..8a08a70 100644 --- a/maloja/web/compare.py +++ b/maloja/web/compare.py @@ -15,6 +15,8 @@ def instructions(keys): owninfo = database.info() + database.add_known_server(compareto) + artists = {} for a in owninfo["artists"]: