Skip to content
Snippets Groups Projects
Commit 091a7cdb authored by ale's avatar ale
Browse files

actually return random songs on /json/random

parent d546788b
No related branches found
No related tags found
No related merge requests found
......@@ -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)
......@@ -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):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment