from flask import Blueprint from flask_apispec import doc, marshal_with, use_kwargs from http import HTTPStatus from src.legacy.core.pagination import paginate from src.legacy.redis_db import keys from src.legacy.spotify.vendor.nmf import SpotifyNewMusicFriday from src.schemas.playlists import nmf as serializers blueprint = Blueprint("playlists_nmf", __name__) @blueprint.route("/playlists/nmf/", methods=["GET"]) @doc("New music friday playlists.") @marshal_with( serializers.PlaylistsNMF.Response(many=True), code=HTTPStatus.OK, description="NMF playlists.", apply=True ) @marshal_with(None, code=HTTPStatus.UNAUTHORIZED, description="Authentication failed.") def get_playlists_nmf(): return SpotifyNewMusicFriday().get_playlists(with_name=False) @blueprint.route("/playlists/nmf/tracks/", methods=["GET"]) @doc("New music friday tracklist.") @use_kwargs(serializers.PlaylistsNMFTracks.Request, location="query") @marshal_with(serializers.PlaylistsNMFTracks.Response, code=HTTPStatus.OK, description="NMF tracks.", apply=False) @marshal_with(None, code=HTTPStatus.UNAUTHORIZED, description="Authentication failed") @paginate(cache_key_template=keys.PLAYLISTS_NMF_TRACKS, cache_ttl=keys.PLAYLISTS_NMF_TRACKS_TTL, full_data=True) def get_playlists_nmf_tracks(**data): return SpotifyNewMusicFriday().get_tracklist(data["nmf_date"], with_image=False)