[PYTHON] Holen Sie sich Informationen von der Meteorological Agency und benachrichtigen Sie Slack über Wetterwarnungen in den 23 Bezirken von Tokio

Domo, guten Abend!

Dies ist der Artikel zum 5. Tag von Zapier Adventskalender 2019.

Diesmal,

――Ich möchte die Wetterwarnung auf der 23. Station so schnell wie möglich erkennen! ――Ich möchte auf wahrscheinlichere Informationen verweisen, nicht auf eine API eines Drittanbieters!

Aufgrund der Anfrage habe ich ein kleines Zap gemacht, also werde ich es vorstellen.

Ich sende dies an Slack: point_down: image.png

Das große Bild von Zap

Die von der Meteorological Agency bereitgestellten Daten werden verwendet, um Wetterinformationen zu erhalten, und Slack wird benachrichtigt, indem gut mit Python gefiltert und analysiert wird.

image.png

Zap Details

Feeds abrufen und filtern

Diesmal der Feed, der von Zeit zu Zeit aktualisiert wird http://www.data.jma.go.jp/developer/xml/feed/extra.xml Wird genutzt.

Referenz: Meteorological Agency \ | Meteorological Agency Informationen zur Katastrophenverhütung XML-Format Format Telegramm (PULL-Typ)

image.png

Da es jedoch andere Informationen als Katastropheninformationen enthält, werde ich es filtern. Hier wird nur der nächste Schritt ausgeführt, wenn der Titel "Spezielle meteorologische Warnung / Warnung / Warnung" lautet. image.png

Verarbeiten Sie Daten mit Python

Zapier kann JavaScript- oder Python-Code ausführen, aber es schien besser, Python zum Parsen von XML zu verwenden (oder besser gesagt, es scheint streng mit JavaScript zu sein), also habe ich es zum ersten Mal geschrieben.

image.png

from xml.etree import ElementTree
response = requests.get(input_data['url'])
response.encoding = 'utf-8'
root = ElementTree.fromstring(response.text)

output = {'text': ''}
for item in root.findall('./{http://xml.kishou.go.jp/jmaxml1/body/meteorology1/}Body/{http://xml.kishou.go.jp/jmaxml1/body/meteorology1/}Warning/{http://xml.kishou.go.jp/jmaxml1/body/meteorology1/}Item'):
  code = item.find('./{http://xml.kishou.go.jp/jmaxml1/body/meteorology1/}Area/{http://xml.kishou.go.jp/jmaxml1/body/meteorology1/}Code')
  if code.text == '130011' or code.text == '130012':
    area_name = item.find('./{http://xml.kishou.go.jp/jmaxml1/body/meteorology1/}Area/{http://xml.kishou.go.jp/jmaxml1/body/meteorology1/}Name')
    list = []
    for kind in item.findall('./{http://xml.kishou.go.jp/jmaxml1/body/meteorology1/}Kind'):
      kind_text = ''
      kind_name = kind.find('./{http://xml.kishou.go.jp/jmaxml1/body/meteorology1/}Name')
      if kind_name is None:
        continue
      if not 'Alarm' in kind_name.text:
        continue
      kind_text += kind_name.text + ':'
      kind_status = kind.find('./{http://xml.kishou.go.jp/jmaxml1/body/meteorology1/}Status')
      kind_text += kind_status.text
      list.append(kind_text)
    if not list:
      continue
    text = '【' + area_name.text + '】' + '、'.join(list)
    print(text)
    output['text'] = output['text'] + text + "\n"

Was machst du

ist. Ich hatte eher mit dem XML-Namespace als mit Python zu kämpfen. ..

Weitere Filterung

Filtern Sie nach "ob" Text "existiert". (Weil "Text" leer ist, wenn keine entsprechenden Informationen vorhanden sind) image.png

Post an Slack

Alles was Sie tun müssen, ist den "Text" auf dem angegebenen Kanal zu posten. image.png

Das war's: Umarmen:

Referenz

Recommended Posts

Holen Sie sich Informationen von der Meteorological Agency und benachrichtigen Sie Slack über Wetterwarnungen in den 23 Bezirken von Tokio
Laden Sie die Winddaten der Meteorological Agency herunter
Die Niederschlagsdaten der Meteorologischen Agentur kratzen und auf M5Stack anzeigen
Lassen Sie uns über das Wetter in Ihrer Lieblingsgegend von Yahoo Wetter auf LINE informiert werden!
Erhalten Sie 1000 Beiträge in der Reihenfolge ihrer Veröffentlichung von allen Slack-Kanälen und bewerten Sie die Piktogrammreaktionen
Ich möchte Importwarnungen von Pyright und pylint in VSCode entfernen
Lassen Sie uns über das Wetter in Ihrer Lieblingsgegend von Yahoo Wetter auf LINE informiert werden! ~ TEIL2 ~
Lesen Sie die GRIB2-Datei der Meteorological Agency auf pygrib
[Python x Zapier] Erhalten Sie Warninformationen und benachrichtigen Sie mit Slack
Benachrichtigen Sie den Inhalt der Aufgabe vor und nach der Ausführung der Aufgabe mit Fabric
Holen Sie sich den Titel und das Lieferdatum von Yahoo! News in Python
Erläuterung und Implementierung des in Slack, HipChat und IRC verwendeten XMPP-Protokolls
Öffnen Sie eine Excel-Datei in Python und färben Sie die Karte von Japan
Schlaffe Benachrichtigung über Wetterinformationen mit Open Whisk
Holen Sie sich die Adresse von Längen- und Breitengrad
Holen Sie sich das letzte Element des Arrays, indem Sie Zeichenfolgen in Python und PHP aufteilen
Eine Geschichte darüber, wie man das Atomfeld (XML-Telegramm) der Meteorologischen Agentur mit einem Raspeltorte bekommt und twittert