[PYTHON] J'ai fait un bot mou qui m'informe de la température

Obtenez un jeton pour Open Weather Map

Créez un compte sur http://openweathermap.org/ et obtenez API_KEY sur l'écran api_keys.

Obtenez le dernier jeton Slack

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

Exemple de programme

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.

Structure du répertoire

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

Dépôt GIT

https://bitbucket.org/ponsuke/norths_weather_bot

Recommended Posts

J'ai fait un bot mou qui m'informe de la température
J'ai créé un SlackBot qui m'informe chaque semaine des informations sur le concours AtCoder
J'ai créé un Linebot qui m'informe des sites d'évacuation à proximité sur AWS
[Discode Bot] J'ai essayé de créer un Bot qui me dit la valeur de race de Pokemon
[Python] J'ai créé un robot qui me dit la température actuelle lorsque j'entre un nom de lieu sur LINE
Création d'un bot Slack qui confirme et notifie à AWS Lambda la date d'expiration d'un certificat SSL
Je veux un bot Slack qui calcule et me dit le salaire d'un emploi à temps partiel à partir du calendrier de Google Agenda!
J'ai fait un calendrier qui met à jour automatiquement le calendrier de distribution de Vtuber
J'ai écrit un bot Slack qui notifie les informations de retard avec AWS Lambda
J'ai créé un robot Line qui devine le sexe et l'âge d'une personne à partir de l'image
Depuis que j'ai commencé à travailler à des moments différents, j'ai créé un Bot qui me dit l'heure de quitter le travail
Créez un BOT qui raccourcit l'URL Discord
Avec LINEBot, j'ai fait une application qui m'informe de "l'heure du bus"
LINE Bot qui vous informe des stocks d'intérêt
J'ai fait un robot discord
J'ai créé un bot LINE qui me dit le type et la force de Pokémon dans la région de Garal avec Heroku + Flask + PostgreSQL (Heroku Postgres)
J'ai créé une application Twitter qui décrypte les caractères de pré-connexion avec heroku (échec)
Un programme qui notifie l'état de fonctionnement des équipements de photographie d'usine entièrement automatiques
[Python / C] J'ai créé un appareil qui fait défiler sans fil l'écran d'un PC à distance.
J'ai fait un calendrier qui met à jour automatiquement le calendrier de distribution de Vtuber (édition Google Calendar)
Ajouter une fonction pour indiquer la météo d'aujourd'hui au bot slack (fabriqué par python)
J'ai fait une image ponctuelle de l'image d'Irasutoya. (partie 1)
J'ai fait une image ponctuelle de l'image d'Irasutoya. (partie 2)
J'ai créé un programme qui résout la recherche d'erreur en quelques secondes
J'ai créé un robot Twitter qui marmonne le Pokémon capturé par #PokemonGO
J'ai créé un bot de lecture de chat Discord en imitant l'apparence
J'ai fait un programme qui calcule automatiquement le zodiaque avec tkinter
[Kaggle] J'ai fait une collection de problèmes en utilisant le didacticiel Titanic
L'histoire de la création d'un Bot qui affiche les membres actifs dans un canal spécifique de Slack avec Python
J'ai créé un bot Discord en Python qui se traduit quand il réagit
J'ai écrit un lecteur de corpus qui lit les résultats de l'analyse MeCab
J'ai fait une simple minuterie qui peut être démarrée depuis le terminal
J'ai fait GAN avec Keras, donc j'ai fait une vidéo du processus d'apprentissage.
J'ai créé un konoha de bibliothèque qui fait passer le tokenizer à une belle sensation
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
J'ai fait une erreur en récupérant la hiérarchie avec MultiIndex of pandas
J'ai créé une fonction pour voir le mouvement d'un tableau à deux dimensions (Python)
(Python) J'ai créé une application de Trello qui notifie périodiquement le relâchement des tâches sur le point d'expirer.
Créez un bot qui publie sur Slack le nombre de personnes positives pour le nouveau virus corona à Tokyo
J'ai fait un robot de remplacement de tampon avec une ligne
J'ai créé un Bot LINE avec Serverless Framework!
Made Mattermost Bot avec Python (+ Flask)
J'ai fait un outil pour estimer le temps d'exécution de cron (+ débuts de PyPI)
L'histoire de l'adresse IPv6 que je souhaite conserver au minimum
J'ai créé un Line Bot qui utilise Python pour récupérer les e-mails non lus de Gmail!
J'ai créé un outil pour informer Slack des événements Connpass et en ai fait Terraform
J'ai créé un robot LINE qui envoie des images recommandées tous les jours à l'heure
J'ai créé une commande appdo pour exécuter des commandes dans le contexte de l'application
J'ai créé un outil pour sauvegarder automatiquement les métadonnées de l'organisation Salesforce
L'histoire de la création d'un Line Bot qui nous raconte le calendrier de la programmation du concours
En Python, j'ai créé un LINE Bot qui envoie des informations sur le pollen à partir des informations de localisation.
J'ai fait un script pour enregistrer la fenêtre active en utilisant win32gui de Python
[Python] J'ai créé un code de scraping web qui acquiert automatiquement le titre de l'actualité et l'URL de Nihon Keizai Shimbun.
[AWS] J'ai créé un BOT de rappel avec LINE WORKS
Une histoire qui réduit l'effort de fonctionnement / maintenance
J'ai fait un Twitter BOT avec GAE (python) (avec une référence)
[Python] Un programme qui compte le nombre de vallées
J'ai créé un bot de livre de compte de ménage avec LINE Bot
〇✕ J'ai fait un jeu