mirror of
https://github.com/krateng/maloja.git
synced 2023-08-10 21:12:55 +03:00
Added support for regular tasks and implemented it for medals
This commit is contained in:
parent
c67aced296
commit
4557a208e9
22
database.py
22
database.py
@ -788,26 +788,10 @@ def build_db():
|
|||||||
# load cached images
|
# load cached images
|
||||||
#loadCache()
|
#loadCache()
|
||||||
|
|
||||||
#medals
|
#start regular tasks
|
||||||
global MEDALS
|
startpulse()
|
||||||
firstyear = datetime.datetime.utcfromtimestamp(STAMPS[0]).year
|
|
||||||
currentyear = datetime.datetime.utcnow().year
|
|
||||||
for year in range(firstyear,currentyear):
|
|
||||||
|
|
||||||
charts = get_charts_artists(within=[year])
|
|
||||||
scr = -1
|
|
||||||
rank = 0
|
|
||||||
for a in charts:
|
|
||||||
if a["scrobbles"] != scr: rank = charts.index(a) + 1
|
|
||||||
if rank > 3: break
|
|
||||||
|
|
||||||
artist = a["artist"]
|
|
||||||
if rank == 1: MEDALS.setdefault(artist,{}).setdefault("gold",[]).append(year)
|
|
||||||
if rank == 2: MEDALS.setdefault(artist,{}).setdefault("silver",[]).append(year)
|
|
||||||
if rank == 3: MEDALS.setdefault(artist,{}).setdefault("bronze",[]).append(year)
|
|
||||||
|
|
||||||
|
|
||||||
scr = a["scrobbles"]
|
|
||||||
|
|
||||||
|
|
||||||
log("Database fully built!")
|
log("Database fully built!")
|
||||||
|
124
utilities.py
124
utilities.py
@ -1,7 +1,7 @@
|
|||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
import hashlib
|
import hashlib
|
||||||
from threading import Thread
|
from threading import Thread, Timer
|
||||||
import pickle
|
import pickle
|
||||||
import urllib
|
import urllib
|
||||||
import datetime
|
import datetime
|
||||||
@ -12,6 +12,21 @@ from doreah import caching
|
|||||||
from doreah.logging import log
|
from doreah.logging import log
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#####
|
||||||
|
## RULESTATE VALIDATION
|
||||||
|
#####
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def checksumTSV(folder):
|
def checksumTSV(folder):
|
||||||
|
|
||||||
sums = ""
|
sums = ""
|
||||||
@ -74,7 +89,25 @@ def consistentRulestate(folder,checksums):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Media info
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#####
|
||||||
|
## IMAGES
|
||||||
|
#####
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def apirequest(artists=None,artist=None,title=None):
|
def apirequest(artists=None,artist=None,title=None):
|
||||||
|
|
||||||
@ -421,3 +454,90 @@ def resolveImage(artist=None,track=None):
|
|||||||
return getTrackImage(track["artists"],track["title"])
|
return getTrackImage(track["artists"],track["title"])
|
||||||
elif artist is not None:
|
elif artist is not None:
|
||||||
return getArtistImage(artist)
|
return getArtistImage(artist)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#####
|
||||||
|
## PULSE MAINTENANCE
|
||||||
|
#####
|
||||||
|
|
||||||
|
def startpulse():
|
||||||
|
|
||||||
|
# execute all actions for startup
|
||||||
|
# they will themselves trigger their next pass
|
||||||
|
yearly()
|
||||||
|
monthly()
|
||||||
|
daily()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def yearly():
|
||||||
|
|
||||||
|
#medals
|
||||||
|
from database import MEDALS, STAMPS, get_charts_artists
|
||||||
|
MEDALS.clear()
|
||||||
|
firstyear = datetime.datetime.utcfromtimestamp(STAMPS[0]).year
|
||||||
|
currentyear = datetime.datetime.utcnow().year
|
||||||
|
for year in range(firstyear,currentyear):
|
||||||
|
|
||||||
|
charts = get_charts_artists(within=[year])
|
||||||
|
scr = -1
|
||||||
|
rank = 0
|
||||||
|
for a in charts:
|
||||||
|
if a["scrobbles"] != scr: rank = charts.index(a) + 1
|
||||||
|
if rank > 3: break
|
||||||
|
|
||||||
|
artist = a["artist"]
|
||||||
|
if rank == 1: MEDALS.setdefault(artist,{}).setdefault("gold",[]).append(year)
|
||||||
|
if rank == 2: MEDALS.setdefault(artist,{}).setdefault("silver",[]).append(year)
|
||||||
|
if rank == 3: MEDALS.setdefault(artist,{}).setdefault("bronze",[]).append(year)
|
||||||
|
|
||||||
|
|
||||||
|
scr = a["scrobbles"]
|
||||||
|
|
||||||
|
|
||||||
|
# schedule for next year
|
||||||
|
now = datetime.datetime.utcnow()
|
||||||
|
nextyear = datetime.datetime(now.year+1,1,1)
|
||||||
|
wait = nextyear.timestamp() - now.timestamp()
|
||||||
|
|
||||||
|
Timer(wait,yearly).start()
|
||||||
|
|
||||||
|
def monthly():
|
||||||
|
|
||||||
|
log("New month!",module="debug")
|
||||||
|
|
||||||
|
# schedule for next month
|
||||||
|
now = datetime.datetime.utcnow()
|
||||||
|
nextmonth = datetime.datetime(now.year,now.month + 1,1) if now.month != 12 else datetime.datetime(now.year+1,1,1)
|
||||||
|
wait = nextmonth.timestamp() - now.timestamp()
|
||||||
|
|
||||||
|
Timer(wait,monthly).start()
|
||||||
|
|
||||||
|
def daily():
|
||||||
|
|
||||||
|
log("New day!",module="debug")
|
||||||
|
|
||||||
|
# schedule for tomorrow
|
||||||
|
now = datetime.datetime.utcnow()
|
||||||
|
nextday = datetime.datetime(now.year,now.month,now.day) + datetime.timedelta(days=1)
|
||||||
|
wait = nextday.timestamp() - now.timestamp()
|
||||||
|
|
||||||
|
Timer(wait,daily).start()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user