import requests import json import re from datetime import datetime base_date = datetime.now().strftime('%Y%m%d') # 오늘 날짜 serviceKey = 'mHrZoSnzVc+2S4dpCe3A1CgI9cAu1BRttqRdoEy9RGbnKAKyQT4sqcESDqqY3grgBGQMuLeEgWIS3Qxi8rcDVA==' url = "http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst" params = { 'serviceKey': serviceKey, 'numOfRows': '1000', 'pageNo': '1', 'dataType': 'JSON', 'base_date': base_date, 'base_time': '0800', # 02:00 부터 3시간 단위 발표 'nx': '57', 'ny': '130' } response = requests.get(url, params=params) def parse_precip(value): if value == '강수없음': return 0.0 elif '1mm 미만' in value: return 0.5 else: # 숫자만 추출 (예: '1.0mm' → 1.0) match = re.search(r"[\d.]+", value) if match: return float(match.group()) else: return 0.0 try: data = response.json() total_rainfall = 0.0 print("📅 시간대별 강수량 (단기예보 기준):") for item in data['response']['body']['items']['item']: if item['category'] == 'PCP' and item['fcstDate'] == base_date: time = item['fcstTime'] if 900 < int(time) < 2300: value = item['fcstValue'] mm = parse_precip(value) print(f" {time}시 → {mm}mm") total_rainfall += mm print(f"\n🌧️ 총 예상 강수량: {total_rainfall:.1f}mm") except json.decoder.JSONDecodeError: print("⚠️ 응답이 JSON 형식이 아닙니다.") print(response.text)