From 091a7cdb3eba126a1e41f5cc9d9ef4e6396ae439 Mon Sep 17 00:00:00 2001 From: ale <ale@incal.net> Date: Sat, 24 Sep 2011 20:17:23 +0100 Subject: [PATCH] actually return random songs on /json/random --- server/djrandom/frontend/api_views.py | 12 ++++++++++-- server/djrandom/model/mp3.py | 11 +++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/server/djrandom/frontend/api_views.py b/server/djrandom/frontend/api_views.py index b8a8dbb..4604274 100644 --- a/server/djrandom/frontend/api_views.py +++ b/server/djrandom/frontend/api_views.py @@ -165,11 +165,19 @@ def last_uploaded_json(): return jsonify(results=last_uploaded) -@app.route('/json/random', methods=['POST']) +@app.route('/json/markov', methods=['POST']) @require_auth -def random_json(): +def markov_json(): n = int(request.form.get('n', 10)) hashes = request.form.get('h', '').split(',') last_song = hashes[-1] sequence = svcs['markov'].generate_sequence(last_song, 2, n) return jsonify(results=sequence) + + +@app.route('/json/random', methods=['GET']) +@require_auth +def random_json(): + n = int(request.form.get('n', 10)) + random_songs = [x.sha1 for x in MP3.get_random_songs(n)] + return jsonify(results=random_songs) diff --git a/server/djrandom/model/mp3.py b/server/djrandom/model/mp3.py index cb2c220..662614e 100644 --- a/server/djrandom/model/mp3.py +++ b/server/djrandom/model/mp3.py @@ -42,6 +42,17 @@ class MP3(Base): return cls.query.filter_by(ready=True).order_by( desc(cls.uploaded_at)).limit(n) + @classmethod + def get_random_songs(cls, n=10): + """Return N completely random songs.""" + results = [] + num_songs = cls.query.filter_by(ready=True).count() + for idx in xrange(n): + song = cls.query.filter_by(ready=True).limit(1).offset( + random.randint(num_songs)).one() + results.append(song) + return results + class PlayLog(Base): -- GitLab