본문 바로가기
카테고리 없음

주식 정보

by 이벤트 정보 2025. 2. 1.
반응형
import os import requests from jinja2 import Template from dotenv import load_dotenv import ssl # SSL 컨텍스트 설정 (인증서 검증 우회) ssl._create_default_https_context = ssl._create_unverified_context def fetch_stock_data(api_key, symbol='SPY'): """Alpha Vantage API로 주식 데이터 가져오기""" try: url = f'https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol={symbol}&apikey={api_key}' response = requests.get(url).json() daily_data = response['Time Series (Daily)'] latest_date = list(daily_data.keys())[0] # 최근 거래일 선택 return { 'date': latest_date, 'open': daily_data[latest_date]['1. open'], 'close': daily_data[latest_date]['4. close'], 'volume': daily_data[latest_date]['5. volume'] } except Exception as e: print(f"데이터 수집 오류: {e}") return None def generate_report(stock_data): """Jinja2 템플릿 기반 리포트 생성""" template = Template(''' {{date}} 미국 주식 시장 분석 리포트 📊 주요 지표: - 시가: ${{open}} - 종가: ${{close}} - 거래량: {{volume}} 주 {% if close|float > open|float %} 📈 상승 마감: 전일 대비 {{ ((close|float - open|float)/open|float * 100)|round(2) }}% 상승 {% else %} 📉 하락 마감: 전일 대비 {{ ((open|float - close|float)/open|float * 100)|round(2) }}% 하락 {% endif %} ''') return template.render(**stock_data) def post_to_blog(stock_data, content): """WordPress API로 포스팅""" try: response = requests.post( f'https://{os.getenv("WP_DOMAIN")}/wp-json/wp/v2/posts', auth=(os.getenv('WP_USER'), os.getenv('WP_PASSWORD')), json={ 'title': f"{stock_data['date']} 주식 시장 분석", 'content': content, 'status': 'publish' }, verify=False # SSL 검증 임시 해제 ) return response.status_code == 201 except requests.exceptions.SSLError: print("SSL 인증서 문제 발생: 워드프레스 도메인을 확인하세요") return False if __name__ == "__main__": load_dotenv() # .env 파일 로드 # 데이터 처리 파이프라인 if stock_data := fetch_stock_data(os.getenv('ALPHA_VANTAGE_KEY')): report_content = generate_report(stock_data) if post_to_blog(stock_data, report_content): print("성공적으로 게시되었습니다") else: print("게시 실패 - 서버 설정 확인 필요")
반응형