import logging.config from typing import Dict, List import yaml from flask import request, url_for from flask_api import FlaskAPI, status, exceptions from similarity import get_similar_artists with open("logging.yaml", "r") as stream: config = yaml.load(stream, Loader=yaml.FullLoader) logging.config.dictConfig(config) logger = logging.getLogger("similarity") # Declare Flask API app = FlaskAPI(__name__) # Create a GET-only endpoint for getting a similarity matrix @app.route("/", methods=["GET"]) def obtain_similarity_matrix(): artist = request.args.get("artist") min_similarity = float(request.args.get("min_similarity", 0.0)) similar_artists = get_similar_artists(artist, min_similarity=min_similarity) results = similar_artists meta = {"query": artist, "min_similarity": min_similarity, "results": len(similar_artists)} if len(similar_artists) > 0: return [{"meta": meta, "results": results}], status.HTTP_200_OK else: return [{"meta": meta, "results": []}], status.HTTP_200_OK @app.route("/_health", methods=["GET"]) def health_check(): return [{"status": "ok"}], status.HTTP_200_OK def run_api(): logger.debug("Started similarity matrix API.") app.run(debug=True) if __name__ == '__main__': run_api()