Skip to content
GitLab
Explorer
Connexion
Navigation principale
Rechercher ou aller à…
Projet
A
Attrap_bot
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Déploiement
Releases
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté
Contribuer à GitLab
Donner votre avis
Conditions générales et politique de confidentialité
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
La Quadrature du Net
Attrap_bot
Validations
4aeae127
Valider
4aeae127
rédigé
Il y a 4 mois
par
Bastien Le Querrec
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
Attrap_bot: respecte la configuration send_on_new_queries=False
parent
3a23b30f
Aucune branche associée trouvée
Branches contenant la validation
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline
#8470
réussi
Il y a 4 mois
Étape : lint
Modifications
2
Pipelines
1
Masquer les modifications d'espaces
En ligne
Côte à côte
Affichage de
2 fichiers modifiés
Attrap_bot.py
+62
-61
62 ajouts, 61 suppressions
Attrap_bot.py
config.default.yml
+1
-1
1 ajout, 1 suppression
config.default.yml
avec
63 ajouts
et
62 suppressions
Attrap_bot.py
+
62
−
61
Voir le fichier @
4aeae127
...
...
@@ -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
'
):
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
config.default.yml
+
1
−
1
Voir le fichier @
4aeae127
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
:
Tru
e
send_on_new_queries
:
Fals
e
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter