파이썬으로 일기 예보를 LINE 알림
개요
사용한 서비스 등
날씨 예보
ぇ tp // 우아아테 r. 아오오오 r. 코 m/후우레카 st/우ぇb세 rゔぃ세/j 그런/v1 에 도시 코드를 쿼리하여 날씨 예보를 얻을 수 있습니다.
WEATHER_URL="http://weather.livedoor.com/forecast/webservice/json/v1?city=%s"
CITY_CODE="130010" # TOKYO
def get_weather_info():
try:
url = WEATHER_URL % CITY_CODE
html = urllib.request.urlopen(url)
html_json = json.loads(html.read().decode('utf-8'))
except Exception as e:
print ("Exception Error: ", e)
sys.exit(1)
return html_json
def set_weather_info(weather_json, day):
max_temperature = None
min_temperature = None
try:
date = weather_json['forecasts'][day]['date']
weather = weather_json['forecasts'][day]['telop']
max_temperature = weather_json['forecasts'][day]['temperature']['max']['celsius']
min_temperature = weather_json['forecasts'][day]['temperature']['min']['celsius']
except TypeError:
# temperature data is None etc...
pass
msg = "%s\nweather: %s\nmin: %s\nmax: %s" % \
(date, weather, min_temperature, max_temperature)
return msg
LINE 알림
htps : // 후 fy 보 t. 네. 메/그럼/ 에서 등록하여 알림을 위한 토큰을 가져옵니다.
htps : // 나중에 fy-ap. 네. 메 / 아피 / 후 fy 에 토큰 및 알림 메시지를 POST합니다.
LINE_TOKEN="xxxxxxxxxxxxxxxxxxxxx"
LINE_NOTIFY_URL="https://notify-api.line.me/api/notify"
def send_weather_info(msg):
method = "POST"
headers = {"Authorization": "Bearer %s" % LINE_TOKEN}
payload = {"message": msg}
try:
payload = urllib.parse.urlencode(payload).encode("utf-8")
req = urllib.request.Request(
url=LINE_NOTIFY_URL, data=payload, method=method, headers=headers)
urllib.request.urlopen(req)
except Exception as e:
print ("Exception Error: ", e)
sys.exit(1)
요약
상기 내용을 정리한 코드는 하기
weather.py#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json
import sys
import urllib.parse
import urllib.request
# weather's API
WEATHER_URL="http://weather.livedoor.com/forecast/webservice/json/v1?city=%s"
CITY_CODE="130010" # TOKYO
TODAY=0
TOMMOROW=1
# LINE notify's API
LINE_TOKEN="xxxxxxxxxxxxxxxxxxxxx"
LINE_NOTIFY_URL="https://notify-api.line.me/api/notify"
def get_weather_info():
try:
url = WEATHER_URL % CITY_CODE
html = urllib.request.urlopen(url)
html_json = json.loads(html.read().decode('utf-8'))
except Exception as e:
print ("Exception Error: ", e)
sys.exit(1)
return html_json
def set_weather_info(weather_json, day):
min_temperature = None
max_temperature = None
try:
date = weather_json['forecasts'][day]['date']
weather = weather_json['forecasts'][day]['telop']
max_temperature = weather_json['forecasts'][day]['temperature']['max']['celsius']
min_temperature = weather_json['forecasts'][day]['temperature']['min']['celsius']
except TypeError:
# temperature data is None etc...
pass
msg = "%s\nweather: %s\nmin: %s\nmax: %s" % \
(date, weather, min_temperature, max_temperature)
return msg
def send_weather_info(msg):
method = "POST"
headers = {"Authorization": "Bearer %s" % LINE_TOKEN}
payload = {"message": msg}
try:
payload = urllib.parse.urlencode(payload).encode("utf-8")
req = urllib.request.Request(
url=LINE_NOTIFY_URL, data=payload, method=method, headers=headers)
urllib.request.urlopen(req)
except Exception as e:
print ("Exception Error: ", e)
sys.exit(1)
def main():
weather_json = get_weather_info()
for day in [TODAY, TOMMOROW]:
msg = set_weather_info(weather_json, day)
send_weather_info(msg)
if __name__ == '__main__':
main()
실행 결과
위의 코드를 실행하면 LINE Notify에서 아래와 같이 알림을 받을 수 있습니다.
Reference
이 문제에 관하여(파이썬으로 일기 예보를 LINE 알림), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kutsurogi194/items/6b9c8d37b2b83fc2ce87
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json
import sys
import urllib.parse
import urllib.request
# weather's API
WEATHER_URL="http://weather.livedoor.com/forecast/webservice/json/v1?city=%s"
CITY_CODE="130010" # TOKYO
TODAY=0
TOMMOROW=1
# LINE notify's API
LINE_TOKEN="xxxxxxxxxxxxxxxxxxxxx"
LINE_NOTIFY_URL="https://notify-api.line.me/api/notify"
def get_weather_info():
try:
url = WEATHER_URL % CITY_CODE
html = urllib.request.urlopen(url)
html_json = json.loads(html.read().decode('utf-8'))
except Exception as e:
print ("Exception Error: ", e)
sys.exit(1)
return html_json
def set_weather_info(weather_json, day):
min_temperature = None
max_temperature = None
try:
date = weather_json['forecasts'][day]['date']
weather = weather_json['forecasts'][day]['telop']
max_temperature = weather_json['forecasts'][day]['temperature']['max']['celsius']
min_temperature = weather_json['forecasts'][day]['temperature']['min']['celsius']
except TypeError:
# temperature data is None etc...
pass
msg = "%s\nweather: %s\nmin: %s\nmax: %s" % \
(date, weather, min_temperature, max_temperature)
return msg
def send_weather_info(msg):
method = "POST"
headers = {"Authorization": "Bearer %s" % LINE_TOKEN}
payload = {"message": msg}
try:
payload = urllib.parse.urlencode(payload).encode("utf-8")
req = urllib.request.Request(
url=LINE_NOTIFY_URL, data=payload, method=method, headers=headers)
urllib.request.urlopen(req)
except Exception as e:
print ("Exception Error: ", e)
sys.exit(1)
def main():
weather_json = get_weather_info()
for day in [TODAY, TOMMOROW]:
msg = set_weather_info(weather_json, day)
send_weather_info(msg)
if __name__ == '__main__':
main()
위의 코드를 실행하면 LINE Notify에서 아래와 같이 알림을 받을 수 있습니다.
Reference
이 문제에 관하여(파이썬으로 일기 예보를 LINE 알림), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kutsurogi194/items/6b9c8d37b2b83fc2ce87텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)