import sys
from datetime import datetime, timedelta, timezone

import requests
from lxml import html

HEADERS = {'User-Agent': 'Mozilla/5.0'}
KST = timezone(timedelta(hours=9))

# 기상청 AWS(방재기상관측) 구로 관측소 실황
AWS_URL = 'https://www.weather.go.kr/w/observation/land/aws-obs-data.do'
# 기상청 ASOS(종관기상관측) 도시별관측 - 운량은 여기에만 있음
CITY_URL = 'https://www.weather.go.kr/w/observation/land/city-obs.do'

r = requests.get(AWS_URL, headers=HEADERS, timeout=20, params={
    'db': 'MINDB_01M',
    'tm': datetime.now(KST).strftime('%Y.%m.%d %H:%M'),
    'stnId': '423',
    'sidoCode': 'asos',
    'sort': '',
    'config': '',
})
r.raise_for_status()
item = r.json()['items'][0]  # 가장 최근 관측값

temperature = item['awsTmp']
latitude = '37.493423'
longitude = '126.834054'

# 현재일기(맑음 등)와 운량(1/10 -> %): 도시별관측 표의 서울 행 (구로는 ASOS가 아니라 서울 값 사용)
r = requests.get(CITY_URL, headers=HEADERS, timeout=20, params={
    'type': 't99', 'mode': '0', 'reg': '100', 'auto_man': 'm', 'stn': '108',
})
r.raise_for_status()
t = html.fromstring(r.content.decode('utf8'))
forecast = '-'
cloud = '-'
for tr in t.xpath('//table//tr'):
    td = [' '.join(x.text_content().split()) for x in tr.xpath('./td')]
    if len(td) > 3 and td[0] == '서울':
        # td: 이름, 현재일기, 시정, 운량, ...
        forecast = td[1] or '-'
        if td[3].isdigit():
            cloud = str(int(td[3]) * 10) + '%'
        break

if cloud != '-':
    forecast += '(' + cloud + ')'

sys.stdout.write(temperature + ' ' + forecast + ' ' + latitude + ' ' + longitude)
