File size: 2,336 Bytes
aa8bc02
 
ad0f104
18c9d60
ab30506
aa8bc02
68a8b0c
 
 
ab30506
aa8bc02
 
68a8b0c
 
 
 
 
 
 
 
aa8bc02
 
68a8b0c
18c9d60
aa8bc02
 
 
f42fdaf
68a8b0c
f42fdaf
68a8b0c
aa8bc02
 
 
 
 
f42fdaf
aa8bc02
f42fdaf
68a8b0c
aa8bc02
68a8b0c
 
ab30506
68a8b0c
aa8bc02
 
ab30506
68a8b0c
aa8bc02
68a8b0c
 
 
 
 
aa8bc02
 
68a8b0c
ab30506
 
 
 
ad0f104
ab30506
aa8bc02
 
ad0f104
 
ab30506
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


import gradio as gr
import requests
from datetime import datetime, timedelta
import json

# NewsAPI key (์ด๊ฒƒ์„ ์‹ค์ œ API ํ‚ค๋กœ ๋Œ€์ฒดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค)
API_KEY = "37d83e266422487b8b2e4cb6e1ff0aa6"

def get_news(keyword):
    base_url = "https://newsapi.org/v2/everything"
    
    # 48์‹œ๊ฐ„ ์ „์˜ ๋‚ ์งœ๋ฅผ ISO ํ˜•์‹์œผ๋กœ ์–ป๊ธฐ
    two_days_ago = (datetime.utcnow() - timedelta(hours=48)).isoformat()

    params = {
        'apiKey': API_KEY,
        'q': keyword,
        'from': two_days_ago,
        'language': 'en',
        'sortBy': 'publishedAt'
    }
    
    debug_info = f"API Request URL: {base_url}\n"
    debug_info += f"Parameters: {json.dumps(params, indent=2)}\n\n"

    try:
        response = requests.get(base_url, params=params, timeout=10)
        response.raise_for_status()
        news_data = response.json()

        debug_info += f"API Response Status: {response.status_code}\n"
        debug_info += f"API Response Headers: {json.dumps(dict(response.headers), indent=2)}\n\n"
        debug_info += f"API Response Body: {json.dumps(news_data, indent=2)}\n\n"

    except requests.RequestException as e:
        return f"Error fetching news: {str(e)}\n\nDebug Info:\n{debug_info}"

    if news_data['status'] != 'ok':
        return f"API Error: {news_data.get('message', 'Unknown error occurred')}\n\nDebug Info:\n{debug_info}"

    articles = news_data['articles']
    
    if not articles:
        return (f"No recent news found for the keyword '{keyword}' within the last 48 hours.\n"
                f"Try a different keyword or check back later.\n\nDebug Info:\n{debug_info}")

    filtered_news = []
    for article in articles[:10]:  # ์ตœ๋Œ€ 10๊ฐœ์˜ ๊ธฐ์‚ฌ๋งŒ ํ‘œ์‹œ
        title = article['title']
        link = article['url']
        pub_date = datetime.strptime(article['publishedAt'], "%Y-%m-%dT%H:%M:%SZ")
        filtered_news.append(f"Title: {title}\nLink: {link}\nDate: {pub_date}\n")

    result = "\n".join(filtered_news)
    return f"{result}\n\nDebug Info:\n{debug_info}"

iface = gr.Interface(
    fn=get_news,
    inputs=[
        gr.Textbox(label="Enter keyword")
    ],
    outputs="text",
    title="News Search (Debug Version)",
    description="Search for news articles from the last 48 hours using NewsAPI. This version includes debug information."
)

iface.launch()