import streamlit as st import requests import xml.etree.ElementTree as ET import time def get_news_from_rss(rss_url): """RSS 피드에서 뉴스를 가져옵니다.""" try: response = requests.get(rss_url) if response.status_code == 200: root = ET.fromstring(response.content) items = root.findall(".//item") news_list = [] for item in items: title = item.find("title").text link = item.find("link").text news_list.append({"title": title, "url": link}) return news_list except Exception as e: print(f"Error fetching RSS feed: {e}") return [] def display_news(news_items): """뉴스를 요약 및 표시합니다.""" if not news_items: st.warning("뉴스를 가져오는데 실패했습니다.") return for item in news_items: original_title = item.get('title', '') if not original_title: continue url = item.get('url', '#') # 기사 URL이 없으면 기본 링크는 '#' st.markdown(f'''
''', unsafe_allow_html=True) def main(): """앱 메인 함수""" st.set_page_config(layout="wide") st.markdown(""" """, unsafe_allow_html=True) # 뉴스 선택 버튼 추가 news_source = st.sidebar.radio("뉴스 선택", ["jtbc 뉴스", "연합뉴스", "SBS 뉴스"]) if news_source == "jtbc 뉴스": rss_url = "https://news-ex.jtbc.co.kr/v1/get/rss/issue" elif news_source == "연합뉴스": rss_url = "http://www.yonhapnewstv.co.kr/category/news/headline/feed/" else: rss_url = "https://news.sbs.co.kr/news/headlineRssFeed.do?plink=RSSREADER" news_items = get_news_from_rss(rss_url) display_news(news_items) # 새로고침 타이머 설정 if 'last_run' not in st.session_state: st.session_state.last_run = time.time() current_time = time.time() if current_time - st.session_state.last_run >= 3600: # 1시간 경과 st.session_state.last_run = current_time st.rerun() # 새로고침 if __name__ == "__main__": main()