From 091c86a7cea92021da1c89521bf15ed4cfc868a1 Mon Sep 17 00:00:00 2001 From: Krateng Date: Thu, 12 Dec 2019 16:46:55 +0100 Subject: [PATCH] Added optional stat report --- maloja/__init__.py | 2 +- maloja/controller.py | 9 +++++++++ maloja/database.py | 1 + maloja/utilities.py | 27 +++++++++++++++++++++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/maloja/__init__.py b/maloja/__init__.py index dee2ee8..bc4eedc 100644 --- a/maloja/__init__.py +++ b/maloja/__init__.py @@ -7,7 +7,7 @@ author = { "email":"maloja@krateng.dev", "github": "krateng" } -version = 2,1,2 +version = 2,1,3 versionstr = ".".join(str(n) for n in version) diff --git a/maloja/controller.py b/maloja/controller.py index 2166b2c..f6b28e9 100755 --- a/maloja/controller.py +++ b/maloja/controller.py @@ -84,6 +84,15 @@ def setup(): if name == "": name = "Generic Maloja User" settings.update_settings("settings/settings.ini",{"NAME":name},create_new=True) + if settings.get_settings("SEND_STATS") is None: + print("I would like to know how many people use Maloja. Would it be okay to send a daily ping to my server (this contains no data that isn't accessible via your web interface already)? [Y/n]") + answer = input() + if answer.lower() in ["y","yes","yea","1","positive","true",""]: + settings.update_settings("settings/settings.ini",{"SEND_STATS":True},create_new=True) + settings.update_settings("settings/settings.ini",{"PUBLIC_URL":None},create_new=True) + else: + settings.update_settings("settings/settings.ini",{"SEND_STATS":False},create_new=True) + def getInstance(): try: diff --git a/maloja/database.py b/maloja/database.py index c292013..99682e0 100644 --- a/maloja/database.py +++ b/maloja/database.py @@ -982,6 +982,7 @@ def build_db(): #start regular tasks utilities.update_medals() utilities.update_weekly() + utilities.send_stats() global db_rulestate db_rulestate = utilities.consistentRulestate("scrobbles",cla.checksums) diff --git a/maloja/utilities.py b/maloja/utilities.py index af77c1b..86f6e07 100644 --- a/maloja/utilities.py +++ b/maloja/utilities.py @@ -15,6 +15,7 @@ from doreah.logging import log from doreah.regular import yearly, daily from .external import api_request_track, api_request_artist +from .__init__ import version @@ -484,3 +485,29 @@ def update_weekly(): for t in get_charts_tracks(timerange=week): track = (frozenset(t["track"]["artists"]),t["track"]["title"]) if t["rank"] == 1: WEEKLY_TOPTRACKS[track] = WEEKLY_TOPTRACKS.setdefault(track,0) + 1 + + +@daily +def send_stats(): + if settings.get_settings("SEND_STATS"): + + log("Sending daily stats report...") + + from .database import ARTISTS, TRACKS, SCROBBLES + + keys = { + "url":"https://myrcella.krateng.ch/malojastats", + "method":"POST", + "headers":{"Content-Type": "application/json"}, + "data":json.dumps({ + "name":settings.get_settings("NAME"), + "url":settings.get_settings("PUBLIC_URL"), + "version":".".join(str(d) for d in version), + "artists":len(ARTISTS), + "tracks":len(TRACKS), + "scrobbles":len(SCROBBLES) + }).encode("utf-8") + } + req = urllib.request.Request(**keys) + response = urllib.request.urlopen(req) + log("Sent daily report!")