| |
|
|
| import os |
| from datetime import datetime |
| from typing import Optional |
|
|
| from flask import Flask, render_template |
|
|
| |
| from src.config import AppConfig |
| from src.hn_mood_reader import HnMoodReader, FeedEntry |
|
|
| |
| app = Flask(__name__) |
|
|
| |
| global_reader: Optional[HnMoodReader] = None |
|
|
| def initialize_reader() -> HnMoodReader: |
| """ |
| Initializes the HnMoodReader instance. This function is called once |
| when the application starts. |
| """ |
| print("Attempting to initialize the mood reader model...") |
| model_name = os.environ.get("MOOD_MODEL", AppConfig.DEFAULT_MOOD_READER_MODEL) |
| try: |
| reader = HnMoodReader(model_name=model_name) |
| print("Model loaded successfully.") |
| return reader |
| except Exception as e: |
| |
| print(f"FATAL: Could not initialize model '{model_name}'. Error: {e}", file=sys.stderr) |
| sys.exit(1) |
|
|
| |
| global_reader = initialize_reader() |
|
|
| |
| @app.route('/') |
| def index(): |
| """Main page route.""" |
| try: |
| scored_entries = global_reader.fetch_and_score_feed() |
| |
| return render_template( |
| 'index.html', |
| entries=scored_entries, |
| model_name=global_reader.model_name, |
| last_updated=datetime.now().strftime('%H:%M:%S') |
| ) |
| except Exception as e: |
| |
| return render_template('error.html', error=str(e)), 500 |
|
|
| if __name__ == '__main__': |
| |
| |
| app.run(host='0.0.0.0', port=5000, debug=False, use_reloader=False) |
|
|