Domo, bonsoir!
Ceci est l'article du 5ème jour du Calendrier de l'Avent Zapier 2019.
Cette fois,
――Je veux détecter l'avertissement météorologique dans le 23e arrondissement dès que possible! ――Je veux faire référence à des informations plus probables, pas à une API tierce!
Sur la base de la demande, j'ai fait un petit Zap, donc je vais le présenter.
J'envoie ceci à Slack: point_down:
Les données fournies par l'Agence météorologique sont utilisées pour obtenir des informations météorologiques, et Slack est notifié en filtrant et en analysant correctement avec Python.
Cette fois, le flux mis à jour de temps en temps http://www.data.jma.go.jp/developer/xml/feed/extra.xml Est utilisé.
Cependant, tel quel, il contient diverses informations autres que des informations sur les catastrophes, je vais donc les filtrer. Ici, seulement lorsque le titre est "Avertissement météorologique spécial / Avertissement / Avertissement", l'étape suivante est exécutée.
Zapier peut exécuter du code JavaScript ou Python, mais il semblait préférable d'utiliser Python pour analyser xml (ou plutôt, cela semble être strict avec JavaScript), alors je l'ai écrit pour la première fois.
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 'alarme' 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"
Que fais tu
texte
est. J'ai eu du mal avec l'espace de noms xml plutôt qu'avec Python. ..
Filtrer par "si le" texte "existe".
(Parce que text
est vide s'il n'y a pas d'informations correspondantes)
Tout ce que vous avez à faire est de publier le texte
sur le canal spécifié.
Voilà: étreindre:
Recommended Posts