Spaces:
Running
Running
File size: 2,255 Bytes
ad0f104 18c9d60 ab30506 aa8bc02 68a8b0c ab30506 aa8bc02 68a8b0c aa8bc02 68a8b0c 18c9d60 f42fdaf 68a8b0c f42fdaf 68a8b0c f42fdaf b659602 f42fdaf 68a8b0c b659602 68a8b0c ab30506 68a8b0c b659602 ab30506 b659602 aa8bc02 68a8b0c b659602 68a8b0c b659602 68a8b0c ab30506 ad0f104 b659602 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 |
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"
two_days_ago = (datetime.utcnow() - timedelta(hours=48)).isoformat()
params = {
'apiKey': API_KEY,
'q': keyword,
'from': two_days_ago,
'language': 'en',
'sortBy': 'publishedAt'
}
try:
response = requests.get(base_url, params=params, timeout=10)
response.raise_for_status()
news_data = response.json()
except requests.RequestException as e:
return f"<p style='color: red;'>Error fetching news: {str(e)}</p>"
if news_data['status'] != 'ok':
return f"<p style='color: red;'>API Error: {news_data.get('message', 'Unknown error occurred')}</p>"
articles = news_data['articles']
if not articles:
return (f"<p>No recent news found for the keyword '<strong>{keyword}</strong>' within the last 48 hours.<br>"
f"Try a different keyword or check back later.</p>")
html_output = f"<h2>News results for '{keyword}'</h2>"
for article in articles[:10]: # ์ต๋ 10๊ฐ์ ๊ธฐ์ฌ๋ง ํ์
title = article['title']
link = article['url']
pub_date = datetime.strptime(article['publishedAt'], "%Y-%m-%dT%H:%M:%SZ")
source = article.get('source', {}).get('name', 'Unknown Source')
html_output += f"""
<div style='margin-bottom: 20px; padding: 10px; border: 1px solid #ddd; border-radius: 5px;'>
<h3><a href='{link}' target='_blank' style='text-decoration: none; color: #1a0dab;'>{title}</a></h3>
<p style='color: #006621;'>{source}</p>
<p style='color: #545454;'>{pub_date.strftime('%Y-%m-%d %H:%M:%S')}</p>
</div>
"""
return html_output
iface = gr.Interface(
fn=get_news,
inputs=[
gr.Textbox(label="Enter keyword")
],
outputs=gr.HTML(),
title="Visual News Search",
description="Search for news articles from the last 48 hours using NewsAPI.",
theme=gr.themes.Soft()
)
iface.launch() |