From 817d98e467ae4378c76f7626c95a045c854eeb10 Mon Sep 17 00:00:00 2001 From: krateng Date: Sun, 14 Nov 2021 18:08:09 +0100 Subject: [PATCH] Added new scrobble generation for testing --- maloja/database.py | 21 --------- maloja/proccontrol/control.py | 4 +- maloja/proccontrol/tasks/__init__.py | 6 +++ maloja/proccontrol/tasks/generate.py | 67 ++++++++++++++++++++++++++++ 4 files changed, 75 insertions(+), 23 deletions(-) create mode 100644 maloja/proccontrol/tasks/generate.py diff --git a/maloja/database.py b/maloja/database.py index 49ee3e8..1052d86 100644 --- a/maloja/database.py +++ b/maloja/database.py @@ -1194,24 +1194,3 @@ def scrobbles_in_range(start,end,reverse=False): if stamp < start: continue if stamp > end: return yield SCROBBLESDICT[stamp] - - -# for performance testing -def generateStuff(num=0,pertrack=0,mult=0): - import random - for _ in range(num): - track = random.choice(TRACKS) - t = get_track_dict(track) - time = random.randint(STAMPS[0],STAMPS[-1]) - createScrobble(t["artists"],t["title"],time,volatile=True) - - for track in TRACKS: - t = get_track_dict(track) - for _ in range(pertrack): - time = random.randint(STAMPS[0],STAMPS[-1]) - createScrobble(t["artists"],t["title"],time,volatile=True) - - for scrobble in SCROBBLES: - s = get_scrobble_dict(scrobble) - for i in range(mult): - createScrobble(s["artists"],s["title"],s["time"] - i*500,volatile=True) diff --git a/maloja/proccontrol/control.py b/maloja/proccontrol/control.py index aac9cf7..45c96e4 100644 --- a/maloja/proccontrol/control.py +++ b/maloja/proccontrol/control.py @@ -71,7 +71,6 @@ def direct(): from .. import server - @mainfunction({"l":"level"},shield=True) def main(action,*args,**kwargs): actions = { @@ -84,7 +83,8 @@ def main(action,*args,**kwargs): "import":tasks.loadlastfm, "backup":tasks.backuphere, # "update":update, - "fix":tasks.fixdb + "fix":tasks.fixdb, + "generate":tasks.generate_scrobbles } if action in actions: actions[action](*args,**kwargs) else: print("Valid commands: " + " ".join(a for a in actions)) diff --git a/maloja/proccontrol/tasks/__init__.py b/maloja/proccontrol/tasks/__init__.py index 82c00cd..a165341 100644 --- a/maloja/proccontrol/tasks/__init__.py +++ b/maloja/proccontrol/tasks/__init__.py @@ -34,3 +34,9 @@ def update(): def fixdb(): from .fixexisting import fix fix() + +def generate_scrobbles(): + targetfile = data_dir['scrobbles']("randomgenerated.tsv") + + from .generate import generate + generate(targetfile) diff --git a/maloja/proccontrol/tasks/generate.py b/maloja/proccontrol/tasks/generate.py new file mode 100644 index 0000000..1052f50 --- /dev/null +++ b/maloja/proccontrol/tasks/generate.py @@ -0,0 +1,67 @@ +import random +import datetime + +artists = [ + "Chou Tzuyu","Jennie Kim","Kim Seolhyun","Nancy McDonie","Park Junghwa","Hirai Momo","Rosé Park","Laura Brehm","HyunA", + "Jeremy Soule","Jerry Goldsmith","Howard Shore","Tilman Sillescu","James Newton Howard","Bear McCreary","David Newman", + "Approaching Nirvana","7 Minutes Dead","Tut Tut Child","Mr FijiWiji","Tut Tut Child" +] + +adjectives = [ + "Black","Pink","Yellow","Scarlet","Purple","Burgundy","Orange","Golden","Green","Vermilion", + "Misty","Foggy","Cloudy","Hazy","Cold","Hot","Warm","Dark","Bright", + "Long","Short","Last","First","Final","Huge","Tiny","Important" +] +nouns = [ + "Ship","Princess","Castle","Monastery","Sword","War","Battle","Temple","Army", + "Valley","River","Waterfall","Mountain","Tree","Forest","Sea","Desert","Montains","Clouds","Glacier", + "Penguin","Tiger","Phoenix","Qilin","Dragon","Tortoise","Bird","Toucan" +] +prepositions = ["in","of","over","under","about","across","inside","toward","on","within","with"] +verbs = ["Lifting","Stealing","Dancing","Running","Jumping","Singing"] + +patterns = [ + "{n1} {p1} the {a1} {n2}", + "The {a1} {n1}", + "{p1} the {a1} {n1}", + "{a1} {n1} {p1} the {a2} {n2}", + "{v1} the {a1} {n1}", + "{v1} {p1} the {a1} {n1}", + "{v1} and {v2}", + "{a1} {n1} {p1} the {n2} {n3}", + "{a1} {n1} and the {n2} {n3}" +] + +def generate_track(): + + title = random.choice(patterns).format( + n1=random.choice(nouns), + n2=random.choice(nouns), + n3=random.choice(nouns), + a1=random.choice(adjectives), + a2=random.choice(adjectives), + p1=random.choice(prepositions), + p2=random.choice(prepositions), + v1=random.choice(verbs), + v2=random.choice(verbs) + ) + title = "".join([title[0].upper(),title[1:]]) + trackartists = [random.choice(artists) for _ in range(random.randint(1, 3))] + + return { + "artists":trackartists, + "title":title + } + + + +def generate(targetfile): + with open(targetfile,"a") as fd: + for _ in range(200): + track = generate_track() + for _ in range(random.randint(1, 50)): + timestamp = random.randint(1, int(datetime.datetime.now().timestamp())) + + entry = "\t".join([str(timestamp),"␟".join(track['artists']),track['title'],"-"]) + fd.write(entry) + fd.write("\n")