[Python] Ich habe einen Bot erstellt, der mir die aktuelle Temperatur anzeigt, wenn ich einen Ortsnamen in LINE eingebe

Das fertige Produkt sieht so aus. Es werden auch Ortsnamen unterstützt, von denen Sie noch nie gehört haben. Wenn der Ortsname → Geocoder → Dunkler Himmel nicht verschüttet wird, wird er angezeigt. Persönlich möchte ich immer die Vostok Base besuchen.

Screenshot_20200417-192323.png

Referenzierte Qiita-Seite, Erwerbsverfahren des Kontos usw. Wir werden nach und nach Informationen wie die Bereitstellung in Heroku hinzufügen.

Über die Umwelt usw. ・ Windows10 ・ Python 3.7.5 ・ Heroku ・ Git ・ Leitungsentwicklerkonto ・ Darksky API

4 Dateien erstellt 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
#Versuchen Sie es unten
#import time
import requests
import geocoder
#import tweepy
#Versuchen Sie es oben

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

app = Flask(__name__)

#Umgebungsvariablen abrufen
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 hinzugefügt
    place = event.message.text
    ret = geocoder.osm(place, timeout=5.0)
#Entfernen Sie unnötige Klammern aus den erfassten Geodaten, um sie in darksky zu veröffentlichen
    locate = str(ret.latlng)
    locate2 = locate.replace('[','')
    locate3 = locate2.replace(']','')
#Stellen Sie den gewünschten Erfassungsort in Grad Celsius ein, indem Sie die SI-Einheit für post url0 angeben
    url0='?units=si'
    url1='https://api.darksky.net/forecast/*API_KEY*/'
    url2=url1 + locate3 + url0
#Holen Sie sich im JSON-Format
    data=requests.get(url2).json()
    data2=data['currently']['temperature']
    word=str(data2)
    word += "℃ Tod"
#Anzeige von Längen- und Breitengraden in den folgenden beiden Zeilen 2020 hinzugefügt_04_11
    word += "\n\n Breiten- und Längengrad\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)

Fehler etc. wurden nicht verarbeitet. Lass es uns bald tun ...

Informationen ab April 2020 DarkSky wurde von Apple übernommen und neue APIs werden nicht mehr akzeptiert. Der Gottesdienst wird bis Ende 2021 dauern (Weinen) Es muss überprüft werden, ob die OpenWetherMap-API als Alternative verwendet werden kann.

Recommended Posts

[Python] Ich habe einen Bot erstellt, der mir die aktuelle Temperatur anzeigt, wenn ich einen Ortsnamen in LINE eingebe
Ich habe einen schlaffen Bot gemacht, der mich über die Temperatur informiert
[Python] Ich habe einen Line-Bot erstellt, der zufällig nach englischen Wörtern fragt
Ich habe in Python einen Discord-Bot erstellt, der übersetzt, wenn er reagiert
Da ich zu verschiedenen Zeiten anfing zu arbeiten, machte ich einen Bot, der mir die Zeit sagt, die Arbeit zu verlassen
Ich habe einen LINE BOT erstellt, der mithilfe der Flickr-API ein Bild von Reis-Terroristen zurückgibt
Ich habe einen Zeilenbot erstellt, der Python verwendet, um ungelesene E-Mails aus Google Mail abzurufen!
Ich habe einen LINE-Bot erstellt, der jeden Tag pünktlich empfohlene Bilder sendet
[Python] Ich habe einen LINE-Bot erstellt, der Gesichter erkennt und Mosaikverarbeitungen durchführt.
[Bot dekodieren] Ich habe versucht, einen Bot zu erstellen, der mir den Rassenwert von Pokemon angibt
In Python habe ich einen LINE-Bot erstellt, der Polleninformationen aus Standortinformationen sendet.
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Ich habe mit Heroku + Flask + PostgreSQL (Heroku Postgres) einen LINE-Bot erstellt, der mir den Typ und die Stärke von Pokemon in der Garal-Region angibt.
[Python] Ich habe versucht, mit argparse ein einfaches Programm zu erstellen, das in der Befehlszeile funktioniert
Wenn Selenium sagt, dass die Chrome-Treiberversion anders ist (Python)
Ich habe einen Stempelersatzbot mit Linie gemacht
Ein Memo, auf das ich gestoßen bin, als ich ein Zitat RT auf Twitter Bot gemacht habe
Ich habe einen Linebot erstellt, der mich über nahegelegene Evakuierungsstellen auf AWS informiert
Ich habe einen LINE Bot mit Serverless Framework erstellt!
[Python] Ein Programm, das die Differenz zwischen diagonalen Gesamtwerten berechnet
Die Geschichte, einen Line Bot zu erstellen, der uns den Zeitplan für die Wettbewerbsprogrammierung erzählt
Eine Geschichte, der ich nach der SFTP-Kommunikation mit Python verfallen war
Mattermost Bot mit Python gemacht (+ Flask)
Ich möchte einen Slack-Bot, der das Gehalt eines Teilzeitjobs aus dem Zeitplan von Google Kalender berechnet und anzeigt!
Eine Geschichte, die beim Versuch, die Python-Version mit GCE zu aktualisieren, hängen blieb
Eine persönlich verwendete Vorlage zum Erstellen von Discord BOT in Python (Notizen)
Die Welt veränderte sich, als ich ein großes Python-Projekt (Django) auf Sourcetrail (Linux) eröffnete.
[Python / C] Ich habe versucht, ein Gerät zu erstellen, das den Bildschirm eines PCs drahtlos aus der Ferne scrollt.
[AWS] Ich habe BOT mit LINE WORKS daran erinnert
Ich habe einen Twitter BOT mit GAE (Python) gemacht (mit einer Referenz)
Ich habe mit LINE Bot ein Haushaltsbuch für Bot erstellt
Ich habe eine VM erstellt, auf der OpenCV für Python ausgeführt wird
Ich habe eine Python3-Umgebung unter Ubuntu mit direnv erstellt.
Ein Memo, dass ich den Datenspeicher mit Python berührt habe
Eine Geschichte, die stolperte, als ich mit Transformer einen Chat-Chat-Bot erstellte
[Python] Ich habe versucht, LINE BOT die Wettervorhersage beantworten zu lassen
Ich möchte eine Nachricht von Python an LINE Bot senden
Ich habe ein VGG16-Modell mit TensorFlow gemacht (unterwegs)
Als ich einen Discord Bot gemacht habe, haben meine Klassenkameraden meinen Computer zerstört
Ich habe Chatbot mit LINE Messaging API und Python erstellt
Ich habe einen neuronalen Netzwerkgenerator erstellt, der auf FPGA läuft
[AWS] Ich habe BOT mit LINE WORKS (Implementierung) in Erinnerung gerufen.
Problemumgehung für sys.argv wird nicht übergeben, wenn ein Python-Skript mit nur dem Dateinamen unter Python2.7 unter Windows ausgeführt wird
Ich habe etwas mit Python gemacht, das sich JETZT LADEN auf dem Terminal von links nach rechts bewegt
Ich habe einen Python-Text gemacht
Eine Geschichte, die nicht funktioniert hat, als ich versucht habe, mich mit dem Python-Anforderungsmodul anzumelden
Ich habe einen Zwietrachtbot gemacht
Über den Fehler, den ich beim Versuch, Adafruit_DHT von Python auf Raspberry Pi zu verwenden, festgestellt habe
Lebensspiel mit Python [ich habe es geschafft] (auf Terminal & Tkinter)
Ich habe ein Paket erstellt, das morphologische Analysegeräte mit Python vergleichen kann
Ich möchte das Wetter mit LINE bot feat.Heroku + Python wissen
Ich habe ein Programm erstellt, das die Fehlersuche in Sekunden löst
Einfach! Implementieren Sie einen Twitter-Bot, der auf Heroku in Python ausgeführt wird
Ich habe eine Python-Bibliothek erstellt, um die API von LINE WORKS aufzurufen
Ich habe einen Twitter-Bot erstellt, der das von #PokemonGO gefangene Pokemon murmelt
Ich habe ein Shuffle gemacht, das mit Python zurückgesetzt (zurückgesetzt) werden kann