"""
app.py
Website sistem rekomendasi manga — Flask + Jinja2 (server-side rendering).

Cara menjalankan:
    pip install -r requirements.txt
    python app.py

Lalu buka: http://127.0.0.1:5000
"""
from flask import Flask, render_template, request, jsonify
from recommender import (
    get_recommendations,
    get_manga_detail,
    search_titles,
    search_manga,
    get_popular,
)

app = Flask(__name__)


@app.route("/")
def index():
    popular = get_popular(limit=12)
    return render_template("index.html", popular=popular)


@app.route("/recommend")
def recommend():
    title = request.args.get("title", "").strip()
    if not title:
        return render_template("results.html", query="", results=None, error=None)

    results = search_manga(title, limit=24)
    error = None
    if results is None:
        error = f"Judul '{title}' tidak ditemukan di database kami."
    return render_template("results.html", query=title, results=results, error=error)


@app.route("/manga/<path:title>")
def manga_detail(title):
    detail = get_manga_detail(title)
    if detail is None:
        return render_template("detail.html", manga=None, title=title, similar=None), 404

    similar = get_recommendations(title, top_n=10)
    return render_template("detail.html", manga=detail, title=title, similar=similar)


# ---- Endpoint JSON kecil untuk fitur autocomplete di search box (dipanggil via fetch di script.js) ----
@app.route("/api/search")
def api_search():
    q = request.args.get("q", "")
    limit = int(request.args.get("limit", 8))
    return jsonify(search_titles(q, limit=limit))


if __name__ == "__main__":
    app.run(debug=True, port=5000)
