Comme le dit le titre. Je vais résumer ce à quoi vous devez faire attention lorsque vous traitez avec json principalement en python.
① Obtenez un membre de slack (member_list.py) (2) Envoyez un message avec l'API en fonction de la fréquentation au départ prévu. (postMessage.py) ③ Les membres réagissent. ④ Obtenez la personne qui a réagi à ② ci-dessus avec l'API. (Reac_result.py) ⑤ Créez une liste sans appuyer sur la réaction. ⑥ Mentionnez la liste créée en ⑤ ci-dessus avec l'API. (PostMessage_re.py)
■ La valeur du dictionnaire (objet de type dict) peut être sélectionnée et extraite avec la clé. Le code ci-dessous tente d'extraire le nom de la réponse reçue.
def_member_list.py
r = requests.get(url, params=payload)
result_mem = [] #Préparez une liste pour mettre les résultats
json_data = r.json()
members = json_data["members"]
for i in members:
result_mem.append(i["real_name"])#Ajouter des résultats
ppront.pprint(result_mem)#['Slackbot']
json_data.
#json_Les données suivantes sont stockées dans les données.
{"ok": true,
"members": [ {"id": "USLACKBOT","team_id": "T012YMJ67V1","real_name": "Slackbot"
d = {'key1': 'aaa', 'key2': 'bbb', 'key3': 'ccc'} value = d['key1'] print(value) #aaa Autrement dit, {"key": value,}
** Donc, si vous voulez obtenir la valeur ("Slackbot"), spécifiez la clé ("real_name"). ** **
■ Si vous souhaitez renvoyer une valeur arbitraire de la fonction à l'appelant de la fonction, vous pouvez utiliser return. Le code ci-dessous tente d'extraire l'horodatage de la réponse reçue.
def_postMessage.py
def postMessage():
r = requests.post(url, params=payload)
result_text = [] #Préparez une liste pour mettre les résultats
json_data = r.json()
ts = json_data['ts']
return (ts)
postMessage.py
import datetime
import def_postMessage
a = def_postMessage.postMessage()
with open(str(datetime.date.today())+'_ts.txt', mode='a') as f:
print(a,file=f)
Le ts (horodatage) obtenu par def_postMessage.py est la valeur de retour et postMessage.py l'utilise. Puisque ts est unique dans slack, le message peut être identifié.
■ Si vous souhaitez obtenir la valeur lors de l'imbrication, vous devez comprendre la structure de JSON ■ La référence est site here ■ Une variable peut être spécifiée pour la valeur de retour de return. Le code ci-dessous tente d'extraire la personne qui a réagi de la réponse reçue.
def_reaction.py
def reaction():
r = requests.get(url, params=payload)
json_data = r.json()
reac_tmp1 = json_data['messages'][0]['reactions'][0]['users']
reac_tmp2 = json_data['messages'][0]['reactions'][1]['users']
reac_tmp3 = json_data['messages'][0]['reactions'][2]['users']
return(reac_tmp1,reac_tmp2,reac_tmp3)
json_data.
{'channel_actions_count': 0,
'channel_actions_ts': None,
'messages': [{'bot_id': 'B012YMHEVJN',
'bot_profile': {'app_id': 'A0134SP1ZA8',
'id': 'B012YMHEVJN',
'name': 'test',
'team_id': 'T012YMJ67V1',
'reactions': [{'count': 3,
'name': 'syukkin',
'users': ['U012JDYRD2T',
'U013BQDLK6V',
'U012ZC8AQ8K']},
{'count': 2,
'name': 'tikoku',
'users': ['U012XQBE63X', 'U012JDYSN07']},
{'count': 1,
'name': 'kekkin',
'users': ['U012JDYSN07']}]
■ Ce que vous faites (quand reac_tmp1 = json_data ['messages'] [0] ['réactions'] [0] ['utilisateurs']
)
(1) Spécifiez le nom de la variable json_data
(2) Spécifiez [" messages "]
parce que vous voulez accéder à la propriété'messages '.
(3) Un tableau d'objets est stocké dans les messages. Ici, nous allons accéder au premier objet du tableau, alors spécifiez [0]
. (Accédez à tous les ['messages': [{'bot_id'] et ainsi de suite)
④ Spécifiez [" réactions "]
pour accéder à la propriété "réactions" de l'objet.
⑤ Je veux le premier d'entre eux, alors écrivez «[0]». ([1] si vous en voulez une seconde, [2] si vous en voulez une troisième)
⑥ Spécifiez [" users "]
pour accéder à la propriété "utilisateurs" de l'objet.
En d'autres termes ** Les membres (utilisateurs) qui ont réagi au message envoyé sont stockés dans reac_tmp. ** ** (Il y a 3 reac_tmp1-3, [Présence], [En retard] et [Absence], et je veux savoir qui a fait ces 3 réactions.)
Publié dans un autre article. https://qiita.com/nonono_kita/items/588ad61431e97724deab
Publié dans un autre article. https://qiita.com/nonono_kita/items/e83a3b918aa572b69adf
-Branchement conditionnel pour les erreurs. -Processus pour préparer un DB et le mettre à jour en fonction des informations du membre qui a appuyé sur la réaction. -Traitement pour mentionner la personne qui n'a pas appuyé sur la réaction après le processus de mise à jour.
■ Aucune branche conditionnelle n'est préparée. pour cette raison ・ Erreur s'il n'y a pas de réaction dans le message ・ Erreur s'il y a peu de réactions dans le message -Erreur si le fichier de sortie n'existe pas -Erreur si le nom du fichier de sortie est différent
-Lors de l'acquisition de données avec json, il semble préférable de les sortir une fois dans les données plutôt que de traiter les données dans la fonction ou le processus. Sortez et traitez les données nécessaires après cela. C'est plus susceptible d'utiliser la fonction. ・ Étant donné que l'article sera plus long, il peut être préférable d'écrire un article pour chaque élément.
Recommended Posts