Créez un compte sur http://openweathermap.org/ et obtenez API_KEY sur l'écran api_keys.
L'explication de la façon d'obtenir le token de bot est donnée dans le manuel api de slack.
URL de référence: https://api.slack.com/bot-users
Dans ce programme, la température de la zone correspondante est acquise en spécifiant la latitude et la longitude.
Dans bot.py, le processus d'obtention de la température et de tweet sur le canal mou est décrit. Open Weather Map, slack token, etc. sont définis dans settings.py.
norths_weather_bot
├── bot.py
└── settings.py
bot.py
#/usr/bin/env python2.7
#-*- coding: utf-8 -*-
import json
import urllib
import urllib2
import settings
class Weather(object):
"""
"""
def __init__(self):
"""
"""
params = {'appid' : settings.OPEN_WETHER_APP_ID,
'lat' : settings.OPEN_WETHER_LAT,
'lon' : settings.OPEN_WETHER_LON,
'units' : settings.OPEN_WETHER_UNITS,
}
params = urllib.urlencode(params)
response = urllib2.urlopen(settings.OPEN_WETHER_URL + '?' + params)
self.json = json.loads(response.read())
def get_temp(self):
"""
"""
return {'max' : self.json['main']['temp_max'],
'min' : self.json['main']['temp_min'],
'now' : self.json['main']['temp'], }
class Bot(object):
"""
"""
def __init__(self):
"""
"""
self.set_serif()
def set_serif(self, serif=''):
"""
"""
self.serif = serif
def speak(self):
"""
"""
params = {'token' : settings.SLACK_TOKEN,
'channel': settings.SLACK_CHANNEL,
'text' : self.serif,}
params = urllib.urlencode(params)
req = urllib2.Request(settings.SLACK_URL)
req.add_header('Content-Type', 'application/x-www-form-urlencoded')
req.add_data(params)
res = urllib2.urlopen(req)
body = res.read()
if __name__ == "__main__":
"""
entry point
"""
temp = Weather().get_temp()
bot = Bot()
bot.set_serif('Température actuelle: {0}℃ ,Température la plus élevée: {1}℃ ,Température la plus basse: {2}℃'.format(temp['now'], temp['max'], temp['min']))
bot.speak()
settings.py
#-*- coding: utf-8 -*-
OPEN_WETHER_URL = "" # API URL
OPEN_WETHER_APP_ID = "" # API KEY
OPEN_WETHER_LAT = "" #latitude
OPEN_WETHER_LON = "" #longitude
OPEN_WETHER_UNITS = "" #Indiquez si elle est exprimée en degrés Celsius ou en température absolue. Dans le cas de la métrique, il est en degrés Celsius.
SLACK_URL = "" # URL
SLACK_TOKEN = "" #jeton
SLACK_CHANNEL = "" #Chaîne que vous souhaitez publier
https://bitbucket.org/ponsuke/norths_weather_bot
Recommended Posts