diff --git a/server/djrandom/frontend/api_views.py b/server/djrandom/frontend/api_views.py index 96f421a4f1f9d57e680f587e26fcf9178d125861..893a9526b107c61954b46e7bbf7479da50c2f64f 100644 --- a/server/djrandom/frontend/api_views.py +++ b/server/djrandom/frontend/api_views.py @@ -151,7 +151,16 @@ def more_like_these_json(): @app.route('/json/most_played', methods=['GET']) @require_auth def most_played_json(): + n = int(request.args.get('n', 20)) most_played = [{'sha1': sha1, 'count': count} - for sha1, count in PlayLog.most_played(20)] + for sha1, count in PlayLog.most_played(n)] return jsonify(results=most_played) + +@app.route('/json/last_uploaded', methods=['GET']) +@require_auth +def last_uploaded_json(): + n = int(request.args.get('n', 20)) + last_uploaded = [x.to_dict() for x in MP3.last_uploaded(n)] + return jsonify(results=last_uploaded) + diff --git a/server/djrandom/model/mp3.py b/server/djrandom/model/mp3.py index 12a5b539d3364c812c325c54aecf73aba93d50fa..6a7f10ce3c923d7206cce714cdef00d9e62b07af 100644 --- a/server/djrandom/model/mp3.py +++ b/server/djrandom/model/mp3.py @@ -36,6 +36,11 @@ class MP3(Base): 'size': self.size, 'uploaded_at': self.uploaded_at} + @classmethod + def last_uploaded(cls, n=10): + """Return the N last uploaded songs.""" + return cls.query.filter_by(ready=True).order_by('desc uploaded_at').limit(n) + class PlayLog(Base):