[Python] J'ai créé un robot qui me dit la température actuelle lorsque j'entre un nom de lieu sur LINE

Le produit fini ressemble à ceci. Il prend également en charge les noms de lieux dont vous n'avez jamais entendu parler. S'il n'y a pas de déversement dans le nom du lieu → Geocoder → Dark Sky, il sera affiché. Personnellement, je veux toujours vérifier Vostok Base.

Screenshot_20200417-192323.png

Page Qiita référencée, procédure d'acquisition de compte, etc. Nous ajouterons progressivement des informations telles que le déploiement sur Heroku.

À propos de l'environnement, etc. ・ Windows10 ・ Python 3.7.5 ・ Heroku ・ Git ・ Compte développeur de ligne ・ API Darksky

Créé 4 fichiers Procfile requirements.txt runtime.txt python:main.py

web: python main.py

requirements.txt


Flask==1.1.1
line-bot-sdk==1.16.0
geocoder==1.38.1

runtime.txt


python-3.7.5

main.py



from flask import Flask, request, abort
import os
#Essayez ci-dessous
#import time
import requests
import geocoder
#import tweepy
#Essayez ci-dessus

from linebot import (
    LineBotApi, WebhookHandler
)
from linebot.exceptions import (
    InvalidSignatureError
)
from linebot.models import (
    MessageEvent, TextMessage, TextSendMessage,
)

app = Flask(__name__)

#Obtenir des variables d'environnement
YOUR_CHANNEL_ACCESS_TOKEN = os.environ["YOUR_CHANNEL_ACCESS_TOKEN"]
YOUR_CHANNEL_SECRET = os.environ["YOUR_CHANNEL_SECRET"]

line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(YOUR_CHANNEL_SECRET)

@app.route("/")
def hello_world():
    return "hello world!"

@app.route("/callback", methods=['POST'])
def callback():
    # get X-Line-Signature header value
    signature = request.headers['X-Line-Signature']

    # get request body as text
    body = request.get_data(as_text=True)
    app.logger.info("Request body: " + body)

    # handle webhook body
    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        abort(400)

    return 'OK'

@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
#0327 ajouté
    place = event.message.text
    ret = geocoder.osm(place, timeout=5.0)
#Supprimez les parenthèses inutiles des géodonnées acquises pour les publier dans darksky
    locate = str(ret.latlng)
    locate2 = locate.replace('[','')
    locate3 = locate2.replace(']','')
#Définissez l'emplacement d'acquisition souhaité en degrés Celsius en spécifiant l'unité SI pour post url0
    url0='?units=si'
    url1='https://api.darksky.net/forecast/*API_KEY*/'
    url2=url1 + locate3 + url0
#Obtenez au format JSON
    data=requests.get(url2).json()
    data2=data['currently']['temperature']
    word=str(data2)
    word += "℃ Mort"
#Ajout de l'affichage de la latitude et de la longitude dans les deux lignes suivantes 2020_04_11
    word += "\n\n latitude et longitude\n"
    word = word + locate
#0327

    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=word))
#0327        TextSendMessage(text=event.message.text))

if __name__ == "__main__":
#    app.run()
    port = int(os.getenv("PORT"))
    app.run(host="0.0.0.0", port=port)

Les erreurs, etc. n'ont pas été traitées. Faisons-le bientôt ...

Information en avril 2020 DarkSky a été acquis par Apple et les nouvelles API ne sont plus acceptées. Le service sera jusqu'à la fin de 2021 (pleurs) Il sera nécessaire de vérifier si l'API OpenWetherMap peut être utilisée comme alternative.

Recommended Posts

[Python] J'ai créé un robot qui me dit la température actuelle lorsque j'entre un nom de lieu sur LINE
J'ai fait un bot mou qui m'informe de la température
J'ai créé un bot Discord en Python qui se traduit quand il réagit
Depuis que j'ai commencé à travailler à des moments différents, j'ai créé un Bot qui me dit l'heure de quitter le travail
J'ai créé un LINE BOT qui renvoie une image de riz terroriste en utilisant l'API Flickr
J'ai créé un Line Bot qui utilise Python pour récupérer les e-mails non lus de Gmail!
J'ai créé un robot LINE qui envoie des images recommandées tous les jours à l'heure
[Python] J'ai créé un LINE Bot qui détecte les visages et effectue le traitement de la mosaïque.
[Discode Bot] J'ai essayé de créer un Bot qui me dit la valeur de race de Pokemon
En Python, j'ai créé un LINE Bot qui envoie des informations sur le pollen à partir des informations de localisation.
J'ai essayé de faire LINE BOT avec Python et Heroku
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)
[Python] J'ai essayé de créer un programme simple qui fonctionne sur la ligne de commande en utilisant argparse
Quand Selenium dit que la version du pilote Chrome est différente (Python)
J'ai fait un robot de remplacement de tampon avec une ligne
Un mémo sur lequel je suis tombé par hasard en faisant une citation RT sur Twitter Bot
J'ai créé un Linebot qui m'informe des sites d'évacuation à proximité sur AWS
J'ai créé un Bot LINE avec Serverless Framework!
[Python] Un programme qui calcule la différence entre les valeurs totales diagonales
L'histoire de la création d'un Line Bot qui nous raconte le calendrier de la programmation du concours
Une histoire à laquelle j'étais accro après la communication SFTP avec python
Made Mattermost Bot avec Python (+ Flask)
Je veux un bot Slack qui calcule et me dit le salaire d'un emploi à temps partiel à partir du calendrier de Google Agenda!
Une histoire bloquée lors de la tentative de mise à niveau de la version Python avec GCE
Un modèle personnellement utilisé pour créer Discord BOT en Python (Notes)
Le monde a changé lorsque j'ai ouvert un gros projet Python (Django) sur Sourcetrail (Linux)
[Python / C] J'ai créé un appareil qui fait défiler sans fil l'écran d'un PC à distance.
[AWS] J'ai créé un BOT de rappel avec LINE WORKS
J'ai fait un Twitter BOT avec GAE (python) (avec une référence)
J'ai créé un bot de livre de compte de ménage avec LINE Bot
J'ai créé une VM qui exécute OpenCV pour Python
J'ai créé un environnement Python3 sur Ubuntu avec direnv.
Un mémo que j'ai touché au magasin de données avec python
Une histoire qui a trébuché lorsque j'ai créé un bot de chat avec Transformer
[Python] J'ai essayé de laisser LINE BOT répondre aux prévisions météo
Je souhaite envoyer un message de Python à LINE Bot
J'ai fait un modèle VGG16 en utilisant TensorFlow (en chemin)
Quand j'ai créé un Discord Bot, mes camarades de classe ont détruit mon ordinateur
J'ai créé Chatbot en utilisant l'API LINE Messaging et Python
J'ai fait un générateur de réseau neuronal qui fonctionne sur FPGA
[AWS] J'ai créé un BOT de rappel avec LINE WORKS (implémentation)
Solution de contournement pour sys.argv non transmise lors de l'exécution d'un script Python avec uniquement le nom de fichier sur Python2.7 sous Windows
J'ai fait quelque chose avec python qui NOW LOADING se déplace de gauche à droite sur le terminal
J'ai fait un texte Python
Une histoire qui n'a pas fonctionné lorsque j'ai essayé de me connecter avec le module de requêtes Python
J'ai fait un robot discord
À propos de l'erreur que j'ai rencontrée en essayant d'utiliser Adafruit_DHT à partir de Python sur Raspberry Pi
Jeu de vie avec Python [je l'ai fait] (sur terminal et Tkinter)
J'ai fait un package qui peut comparer des analyseurs morphologiques avec Python
Je veux connaître la météo avec LINE bot avec Heroku + Python
J'ai créé un programme qui résout la recherche d'erreur en quelques secondes
Facile! Implémenter un bot Twitter qui s'exécute sur Heroku en Python
J'ai créé une bibliothèque Python pour appeler l'API de LINE WORKS
J'ai créé un robot Twitter qui marmonne le Pokémon capturé par #PokemonGO
J'ai fait un shuffle qui peut être réinitialisé (inversé) avec Python