import os from flask import Flask, render_template, request, jsonify from rss_processor import fetch_rss_feeds, process_and_store_articles, vector_db, summarize_article import logging app = Flask(__name__) # Setup logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) @app.route('/', methods=['GET', 'POST']) def index(): logger.info("Starting to fetch RSS feeds") articles = fetch_rss_feeds() logger.info(f"Fetched {len(articles)} articles") process_and_store_articles(articles) # Load without summarization logger.info("Articles processed and stored") stored_docs = vector_db.similarity_search("news", k=len(articles)) enriched_articles = [ { "title": doc.metadata["title"], "link": doc.metadata["link"], "summary": doc.metadata["original_description"], # Use original description initially "category": doc.metadata["category"], "sentiment": doc.metadata["sentiment"], "published": doc.metadata["published"], "image": doc.metadata.get("image", "svg"), } for doc in stored_docs ] logger.info(f"Enriched {len(enriched_articles)} articles for display") if request.method == 'POST' and 'search' in request.form: query = request.form.get('search') if query: logger.info(f"Processing search query: {query}") results = vector_db.similarity_search(query, k=10) enriched_articles = [ { "title": doc.metadata["title"], "link": doc.metadata["link"], "summary": summarize_article(doc.metadata["original_description"]), # Summarize on search "category": doc.metadata["category"], "sentiment": doc.metadata["sentiment"], "published": doc.metadata["published"], "image": doc.metadata.get("image", "svg"), } for doc in results ] logger.info(f"Search returned {len(enriched_articles)} results with summaries") categorized_articles = {} for article in enriched_articles: cat = article["category"] if cat not in categorized_articles: categorized_articles[cat] = [] categorized_articles[cat].append(article) return render_template("index.html", categorized_articles=categorized_articles) @app.route('/summarize', methods=['POST']) def summarize(): data = request.get_json() text = data.get('text') logger.info(f"Received summarize request for text: {text[:50]}...") summary = summarize_article(text) logger.info(f"Generated summary: {summary}") return jsonify({"summary": summary}) if __name__ == "__main__": app.run(debug=True, host="0.0.0.0", port=7860)