import os

# NLTK harus tahu lokasi data sebelum service predictor diimpor.
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
os.environ.setdefault("NLTK_DATA", os.path.join(BASE_DIR, "nltk_data"))

from flask import Flask, render_template

from config import Config


def create_app(config_class=Config):
    app = Flask(__name__)
    app.config.from_object(config_class)

    from blueprints.main import main_bp
    from blueprints.demo import demo_bp
    from blueprints.twitter import twitter_bp
    from blueprints.youtube import youtube_bp

    app.register_blueprint(main_bp)
    app.register_blueprint(demo_bp)
    app.register_blueprint(twitter_bp)
    app.register_blueprint(youtube_bp)

    @app.errorhandler(404)
    def not_found(error):
        return render_template("404.html"), 404

    @app.errorhandler(413)
    def too_large(error):
        return render_template("413.html"), 413

    return app


app = create_app()


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