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.
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