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:
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.
Diesmal der Feed, der von Zeit zu Zeit aktualisiert wird http://www.data.jma.go.jp/developer/xml/feed/extra.xml Wird genutzt.
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.
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.
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. ..
Filtern Sie nach "ob" Text "existiert". (Weil "Text" leer ist, wenn keine entsprechenden Informationen vorhanden sind)
Alles was Sie tun müssen, ist den "Text" auf dem angegebenen Kanal zu posten.
Das war's: Umarmen: