File size: 1,396 Bytes
0ecdf18 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | from flask import Blueprint, jsonify, request
from app.services.recommendation import RecommendationService
import logging
bp = Blueprint('recommendation', __name__)
logger = logging.getLogger(__name__)
@bp.route('/recommend', methods=['POST'])
def recommend():
try:
data = request.get_json()
song_input = data.get('song', '').strip()
artist_input = data.get('artist', '').strip()
genre_input = data.get('genre', '').strip()
recommendation_service = RecommendationService()
if song_input:
recommendations = recommendation_service.get_recommendations_by_song(song_input)
elif artist_input and genre_input:
recommendations = recommendation_service.get_recommendations_by_artist_and_genre(artist_input, genre_input)
else:
return jsonify({'error': 'Invalid input. Please provide either a song or both artist and genre.'}), 400
if isinstance(recommendations, dict) and 'error' in recommendations:
return jsonify(recommendations), 400
return jsonify(recommendations)
except Exception as e:
logger.error(f"An error occurred: {str(e)}", exc_info=True)
return jsonify({'error': str(e)}), 500
@bp.route('/health', methods=['GET'])
def health_check():
return jsonify({'status': 'healthy'}), 200
|