Skip to content
Extraits de code Groupes Projets
Valider 4aeae127 rédigé par Bastien Le Querrec's avatar Bastien Le Querrec
Parcourir les fichiers

Attrap_bot: respecte la configuration send_on_new_queries=False

parent 3a23b30f
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline #8470 réussi
......@@ -160,10 +160,10 @@ class Attrap_bot:
else:
logger.info('Requête lancée pour la première fois, les résultats ne seront pas envoyés')
status = '0000000000000000000000000000000000000000000000000000000000000000'
if self.config['do_not_send_on_new_queries']:
send_results = False
else:
if self.config['send_on_new_queries']:
send_results = True
else:
send_results = False
# On interroge l'API d'Attrap
response = json.loads(requests.get(request_url, timeout=(10, 120)).content)
......@@ -228,65 +228,66 @@ class Attrap_bot:
status_file.write(status)
status_file.close()
# On envoie un toot par RAA
if len(raa_to_publish_mastodon) > 0:
logger.info('Envoi des toots')
for sender_id in raa_to_publish_mastodon:
sender = self.get_mastodon_sender(sender_id)
if sender:
for raa_id in raa_to_publish_mastodon[sender_id]:
raa = raa_to_publish_mastodon[sender_id][raa_id]
raa['hashtags'] = list(dict.fromkeys(raa['hashtags'])) # On supprime les doublons
raa['hashtags_str'] = ''
for hashtag in raa['hashtags']:
if raa['hashtags_str'] == '':
raa['hashtags_str'] = f'#{hashtag}'
else:
raa['hashtags_str'] = f"{raa['hashtags_str']} #{hashtag}"
# On construit le texte du toot
toot = sender.toot
toot = toot.replace('{administration}', raa['administration'])
toot = toot.replace('{administration_name}', raa['administration_name'])
toot = toot.replace('{date}', raa['date'])
toot = toot.replace('{id}', raa['id'])
toot = toot.replace('{name}', raa['name'])
toot = toot.replace('{url}', raa['url'])
toot = toot.replace('{hashtags}', raa['hashtags_str'])
sender.send(toot)
# On envoie un mail par administration
if len(raa_to_publish_email) > 0:
logger.info('Envoi des mails')
for sender_id in raa_to_publish_email:
sender = self.get_email_sender(sender_id)
if sender:
for administration_id in raa_to_publish_email[sender_id]:
# On construit le début du mail (on prend le pr)
message_header = f'Attrap : {administration_id}'
queries = []
message_raa_list = 'RAA trouvés :'
# On ajoute chaque RAA au contenu du mail
for raa_id in raa_to_publish_email[sender_id][administration_id]:
raa = raa_to_publish_email[sender_id][administration_id][raa_id]
for query in raa['queries']:
queries.append(query) # On renseigne la liste des requêtes qui ont retourné un résultat pour les afficher plus bas
if not raa.get('queries_str'):
raa['queries_str'] = f'{query}'
if send_results:
# On envoie un toot par RAA
if len(raa_to_publish_mastodon) > 0:
logger.info('Envoi des toots')
for sender_id in raa_to_publish_mastodon:
sender = self.get_mastodon_sender(sender_id)
if sender:
for raa_id in raa_to_publish_mastodon[sender_id]:
raa = raa_to_publish_mastodon[sender_id][raa_id]
raa['hashtags'] = list(dict.fromkeys(raa['hashtags'])) # On supprime les doublons
raa['hashtags_str'] = ''
for hashtag in raa['hashtags']:
if raa['hashtags_str'] == '':
raa['hashtags_str'] = f'#{hashtag}'
else:
raa['queries_str'] = f"{raa['queries_str']}, {query}"
message_raa_list = f"{message_raa_list}\n - {raa['name']}\n URL : {raa['url']}\n Date : {raa['date']}\n Trouvé dans les requêtes : {raa['queries_str']}"
# On construit la liste des requêtes
message_queries_overview = 'Requêtes :'
for query in queries:
message_queries_overview = f"{message_queries_overview}\n - {query} : {self.config['queries'][query]['search']}"
# On construit le message et on l'envoie
message = f"{message_header}\n\n{message_queries_overview}\n\n{message_raa_list}"
subject = f'[Attrap][{administration_id}] Nouveaux éléments trouvés'
sender.send(subject, message)
raa['hashtags_str'] = f"{raa['hashtags_str']} #{hashtag}"
# On construit le texte du toot
toot = sender.toot
toot = toot.replace('{administration}', raa['administration'])
toot = toot.replace('{administration_name}', raa['administration_name'])
toot = toot.replace('{date}', raa['date'])
toot = toot.replace('{id}', raa['id'])
toot = toot.replace('{name}', raa['name'])
toot = toot.replace('{url}', raa['url'])
toot = toot.replace('{hashtags}', raa['hashtags_str'])
sender.send(toot)
# On envoie un mail par administration
if len(raa_to_publish_email) > 0:
logger.info('Envoi des mails')
for sender_id in raa_to_publish_email:
sender = self.get_email_sender(sender_id)
if sender:
for administration_id in raa_to_publish_email[sender_id]:
# On construit le début du mail (on prend le pr)
message_header = f'Attrap : {administration_id}'
queries = []
message_raa_list = 'RAA trouvés :'
# On ajoute chaque RAA au contenu du mail
for raa_id in raa_to_publish_email[sender_id][administration_id]:
raa = raa_to_publish_email[sender_id][administration_id][raa_id]
for query in raa['queries']:
queries.append(query) # On renseigne la liste des requêtes qui ont retourné un résultat pour les afficher plus bas
if not raa.get('queries_str'):
raa['queries_str'] = f'{query}'
else:
raa['queries_str'] = f"{raa['queries_str']}, {query}"
message_raa_list = f"{message_raa_list}\n - {raa['name']}\n URL : {raa['url']}\n Date : {raa['date']}\n Trouvé dans les requêtes : {raa['queries_str']}"
# On construit la liste des requêtes
message_queries_overview = 'Requêtes :'
for query in queries:
message_queries_overview = f"{message_queries_overview}\n - {query} : {self.config['queries'][query]['search']}"
# On construit le message et on l'envoie
message = f"{message_header}\n\n{message_queries_overview}\n\n{message_raa_list}"
subject = f'[Attrap][{administration_id}] Nouveaux éléments trouvés'
sender.send(subject, message)
def get_mastodon_sender(self, config_id):
if self.config.get('mastodon'):
......
data_source: "https://attrap.fr/api/v1/search?s={search}&administration={administration}&sort=first_seen_on_desc&size=50&start_date={start_date}"
console_output: True
do_not_send_on_new_queries: True
send_on_new_queries: False
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter