Files
fg-auto/data/weather.py
2025-06-24 17:02:50 +09:00

56 lines
1.6 KiB
Python

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)