mirror of
https://code.eliotberriot.com/funkwhale/funkwhale.git
synced 2025-10-05 10:19:26 +02:00
See #574: Implemented getRandomSongs endpoint
This commit is contained in:
parent
82f2f606c1
commit
ccd600ecca
2 changed files with 42 additions and 0 deletions
|
@ -219,6 +219,27 @@ class SubsonicViewSet(viewsets.GenericViewSet):
|
|||
data = {"starred2": {"song": serializers.get_starred_tracks_data(favorites)}}
|
||||
return response.Response(data)
|
||||
|
||||
@list_route(
|
||||
methods=["get", "post"], url_name="get_random_songs", url_path="getRandomSongs"
|
||||
)
|
||||
def get_random_songs(self, request, *args, **kwargs):
|
||||
data = request.GET or request.POST
|
||||
actor = utils.get_actor_from_request(request)
|
||||
queryset = music_models.Track.objects.all()
|
||||
queryset = queryset.playable_by(actor)
|
||||
try:
|
||||
size = int(data["size"])
|
||||
except (TypeError, KeyError, ValueError):
|
||||
size = 50
|
||||
|
||||
queryset = queryset.playable_by(actor).prefetch_related('uploads').order_by("?")[:size]
|
||||
data = {
|
||||
"randomSongs": {
|
||||
"song": serializers.GetSongSerializer(queryset, many=True).data
|
||||
}
|
||||
}
|
||||
return response.Response(data)
|
||||
|
||||
@list_route(methods=["get", "post"], url_name="get_starred", url_path="getStarred")
|
||||
def get_starred(self, request, *args, **kwargs):
|
||||
favorites = request.user.track_favorites.all()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue