File size: 2,867 Bytes
3a7387c
1f5e987
 
cb518f2
3a7387c
 
 
cb518f2
 
 
 
ce02056
3a7387c
cb518f2
3a7387c
cb518f2
35d88fe
cb518f2
3a7387c
ce02056
 
3a7387c
 
35d88fe
3a7387c
ce02056
3a7387c
1f5e987
ce02056
 
 
cb518f2
ce02056
1f5e987
ce02056
 
cb518f2
ce02056
 
 
 
 
35d88fe
ce02056
 
 
cb518f2
ce02056
 
 
35d88fe
3a7387c
ce02056
 
 
 
 
 
 
 
 
1f5e987
 
 
 
 
 
 
 
 
3a7387c
35d88fe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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)