From f6c8f74d21489fcd950689c592449b2e4f273612 Mon Sep 17 00:00:00 2001
From: Bastien Le Querrec <blq@laquadrature.net>
Date: Tue, 19 Mar 2024 17:23:40 +0100
Subject: [PATCH] =?UTF-8?q?cli:=20ajout=20d'un=20utilitaire=20pour=20lance?=
 =?UTF-8?q?r=20l'analyse=20d'une=20seule=20pr=C3=A9fecture?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .gitlab-ci.yml        |  10 ++--
 Makefile              |  12 +++--
 RAAspotter_ppparis.py |   2 +
 RAAspotter_pref06.py  |   2 +
 RAAspotter_pref13.py  |   2 +
 RAAspotter_pref35.py  |   2 +
 RAAspotter_pref62.py  |   2 +
 README.md             |  12 ++---
 ppparis.py => cli.py  |  26 ++++++++---
 pref06.py             | 105 ------------------------------------------
 pref13.py             | 105 ------------------------------------------
 pref35.py             | 105 ------------------------------------------
 pref62.py             | 105 ------------------------------------------
 13 files changed, 48 insertions(+), 442 deletions(-)
 rename ppparis.py => cli.py (82%)
 delete mode 100755 pref06.py
 delete mode 100755 pref13.py
 delete mode 100755 pref35.py
 delete mode 100755 pref62.py

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a8b04f7..c688537 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -57,7 +57,7 @@ test_pref06:
   - rm artifacts.zip || true
   - source bin/activate
   - /etc/init.d/tor start
-  - python ./pref06.py
+  - python ./cli.py --pref pref06
   retry: 2
   only:
   - main
@@ -85,7 +85,7 @@ test_pref13:
   - rm artifacts.zip || true
   - source bin/activate
   - /etc/init.d/tor start
-  - python ./pref13.py
+  - python ./cli.py --pref pref13
   retry: 2
   only:
   - main
@@ -113,7 +113,7 @@ test_pref35:
   - rm artifacts.zip || true
   - source bin/activate
   - /etc/init.d/tor start
-  - python ./pref35.py
+  - python ./cli.py --pref pref35
   retry: 2
   only:
   - main
@@ -141,7 +141,7 @@ test_pref62:
   - rm artifacts.zip || true
   - source bin/activate
   - /etc/init.d/tor start
-  - python ./pref62.py
+  - python ./cli.py --pref pref62
   retry: 2
   only:
   - main
@@ -168,7 +168,7 @@ test_ppparis:
   - unzip -q artifacts.zip data/ppparis/* || true
   - rm artifacts.zip || true
   - source bin/activate
-  - python ./ppparis.py
+  - python ./cli.py --pref ppparis
   retry: 2
   only:
   - main
diff --git a/Makefile b/Makefile
index 5764d68..095b8db 100644
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,11 @@
-make: pref06 pref13 pref35 ppparis
+make: pref06 pref13 pref35 pref62 ppparis
 pref06:
-	python pref06.py
+	python cli.py --pref pref06
 pref13:
-	python pref13.py
+	python cli.py --pref pref13
 pref35:
-	python pref35.py
+	python cli.py --pref pref35
+pref62:
+	python cli.py --pref pref62
 ppparis:
-	python ppparis.py
+	python cli.py --pref ppparis
diff --git a/RAAspotter_ppparis.py b/RAAspotter_ppparis.py
index 7c09dbd..39e8aa6 100644
--- a/RAAspotter_ppparis.py
+++ b/RAAspotter_ppparis.py
@@ -11,6 +11,8 @@ class RAAspotter_ppparis(RAAspotter):
   __RAA_PAGE     = 'https://www.prefecturedepolice.interieur.gouv.fr/actualites-et-presse/arretes/accueil-arretes'
   __WAIT_ELEMENT = 'block-decree-list-block'
   __USER_AGENT   = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'
+  full_name = 'Préfecture de police de Paris'
+  short_code = 'ppparis'
 
   def __init__(self, data_dir):
     super().__init__(data_dir, self.__USER_AGENT)
diff --git a/RAAspotter_pref06.py b/RAAspotter_pref06.py
index f3f5833..8acb864 100644
--- a/RAAspotter_pref06.py
+++ b/RAAspotter_pref06.py
@@ -35,6 +35,8 @@ class RAAspotter_pref06(RAAspotter):
                     f'{__HOST}/Publications/Recueil-des-actes-administratifs-RAA/Annee-2019/Recueils-speciaux',
                     f'{__HOST}/Publications/Recueil-des-actes-administratifs-RAA/Annee-2019/Recueils-specifiques']}
   __USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0'
+  full_name = 'Préfecture des Alpes-Maritimes'
+  short_code = 'pref06'
 
   def __init__(self, data_dir):
     super().__init__(data_dir, self.__USER_AGENT)
diff --git a/RAAspotter_pref13.py b/RAAspotter_pref13.py
index a7cf2c2..0eae5f5 100644
--- a/RAAspotter_pref13.py
+++ b/RAAspotter_pref13.py
@@ -17,6 +17,8 @@ class RAAspotter_pref13(RAAspotter):
                   f'{__HOST}/Publications/RAA-et-Archives/Archives-RAA-des-Bouches-du-Rhone/RAA-2020',
                   f'{__HOST}/Publications/RAA-et-Archives/Archives-RAA-des-Bouches-du-Rhone/RAA-2019']
   __USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'
+  full_name = 'Préfecture des Bouches-du-Rhône'
+  short_code = 'pref13'
 
   def __init__(self, data_dir):
     super().__init__(data_dir, self.__USER_AGENT)
diff --git a/RAAspotter_pref35.py b/RAAspotter_pref35.py
index 67dd21d..23ac266 100644
--- a/RAAspotter_pref35.py
+++ b/RAAspotter_pref35.py
@@ -17,6 +17,8 @@ class RAAspotter_pref35(RAAspotter):
                   f'{__HOST}/Publications/Recueil-des-actes-administratifs/Archives-des-recueils-des-actes-administratifs/Recueil-des-actes-administratifs-2020',
                   f'{__HOST}/Publications/Recueil-des-actes-administratifs/Archives-des-recueils-des-actes-administratifs/Recueil-des-actes-administratifs-2019']
   __USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'
+  full_name = 'Préfecture d\'Ille-et-Vilaine'
+  short_code = 'pref35'
 
   def __init__(self, data_dir):
     super().__init__(data_dir, self.__USER_AGENT)
diff --git a/RAAspotter_pref62.py b/RAAspotter_pref62.py
index 7432bed..983371c 100644
--- a/RAAspotter_pref62.py
+++ b/RAAspotter_pref62.py
@@ -28,6 +28,8 @@ class RAAspotter_pref62(RAAspotter):
                     [f'{__HOST}/Publications/Recueil-des-actes-administratifs/2019-Recueil-des-actes-administratifs',
                     f'{__HOST}/Publications/Recueil-des-actes-administratifs/2019-Recueils-speciaux-des-actes-administratifs']}
   __USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0'
+  full_name = 'Préfecture du Pas-de-Calais'
+  short_code = 'pref62'
 
   def __init__(self, data_dir):
     super().__init__(data_dir, self.__USER_AGENT)
diff --git a/README.md b/README.md
index 1d518eb..047494e 100644
--- a/README.md
+++ b/README.md
@@ -28,15 +28,15 @@ make
 
 Attention, le premier lancement prendra plusieurs jours ! Si vous utilisez une CI, vous devez mettre en cache le dossier `data/` afin que les fichiers déjà analysés ne soient pas téléchargés à chaque lancement.
 
-Il est possible de ne lancer l'analyse que pour une seule administration, en lançant le fichier correspondant à l'administration.
+Il est possible de ne lancer l'analyse que pour une seule administration, avec la commande : `./cli.py --pref identifiant`
 
 ## Administrations supportées
 
-- Préfecture des Alpes-Maritimes  (`pref06.py`)
-- Préfecture des Bouches-du-Rhône (`pref13.py`)
-- Préfecture d'Ille-et-Vilaine (`pref35.py`)
-- Préfecture du Pas-de-Calais (`pref62.py`)
-- Préfecture de police de Paris (`ppparis.py`)
+- Préfecture des Alpes-Maritimes  (identifiant : `pref06`)
+- Préfecture des Bouches-du-Rhône (identifiant : `pref13`)
+- Préfecture d'Ille-et-Vilaine (identifiant : `pref35`)
+- Préfecture du Pas-de-Calais (identifiant : `pref62`)
+- Préfecture de police de Paris (identifiant : `ppparis`)
 
 ## Licence
 
diff --git a/ppparis.py b/cli.py
similarity index 82%
rename from ppparis.py
rename to cli.py
index 54e3ad7..7f213c1 100755
--- a/ppparis.py
+++ b/cli.py
@@ -2,13 +2,13 @@ import os
 import argparse
 import logging
 import datetime
+import importlib
 
 from RAAspotter import RAAspotter
-from RAAspotter_ppparis import RAAspotter_ppparis
 
 # Config
 __KEYWORDS = os.getenv('KEYWORDS') or 'vidéoprotection,caméras,captation,aéronef'
-__DATA_DIR = os.path.dirname(os.path.abspath(__file__))+'/data/ppparis/'
+__DATA_DIR_ROOT = os.path.dirname(os.path.abspath(__file__))+'/data/'
 __SMTP_HOSTNAME = os.getenv('SMTP_HOSTNAME') or 'localhost'
 __SMTP_USERNAME = os.getenv('SMTP_USERNAME') or ''
 __SMTP_PASSWORD = os.getenv('SMTP_PASSWORD') or ''
@@ -33,8 +33,18 @@ else:
 __MASTODON_ACCESS_TOKEN = os.getenv('MASTODON_ACCESS_TOKEN')
 __MASTODON_INSTANCE = os.getenv('MASTODON_INSTANCE')
 
+# Liste des préfectures supportées
+available_prefs = [
+  'pref06',
+  'pref13',
+  'pref35',
+  'pref62',
+  'ppparis'
+]
+
 # Début du script
-parser = argparse.ArgumentParser(prog='ppparis.py', description='Télécharge les RAA de la Préfecture de police de Paris et recherche des mots-clés')
+parser = argparse.ArgumentParser(prog='cli.py', description='Télécharge les RAA d\'une préfecture donnée et recherche des mots-clés')
+parser.add_argument('-p', '--pref', action='store', help='identifiant de la préfecture', required=True, choices=available_prefs)
 parser.add_argument('-k', '--keywords', action='store', help='liste des termes recherchés, séparés par une virgule (par défaut : vidéoprotection,caméras,captation,aéronef)')
 parser.add_argument('--not-before', action='store', help='n\'analyse pas les RAA datant d\'avant la date indiquée, au format YYYY-MM-DD (par défaut : 2024-01-01)')
 parser.add_argument('--smtp-hostname', action='store', help='nom d\'hôte SMTP (par défaut : localhost)')
@@ -93,13 +103,17 @@ if args.mastodon_access_token:
 if args.mastodon_instance:
   __MASTODON_INSTANCE = args.mastodon_instance
 
+__DATA_DIR = f'{__DATA_DIR_ROOT}{args.pref}/'
+
 # On crée le dossier de téléchargement
 os.makedirs(__DATA_DIR, exist_ok=True)
 
-raa_spotter = RAAspotter_ppparis(__DATA_DIR)
+module = importlib.import_module(f'RAAspotter_{args.pref}')
+raa_spotter = getattr(module, f'RAAspotter_{args.pref}')(__DATA_DIR)
+
 raa_spotter.not_before = __NOT_BEFORE
 raa_spotter.configure_mailer(__SMTP_HOSTNAME, __SMTP_USERNAME, __SMTP_PASSWORD, __SMTP_PORT,
                              __SMTP_STARTTLS, __SMTP_SSL, __EMAIL_FROM, __EMAIL_TO,
-                             '[RAAspotter] [Préfecture de police de Paris] Nouveaux éléments trouvés')
-raa_spotter.configure_mastodon(__MASTODON_ACCESS_TOKEN, __MASTODON_INSTANCE, '[Préfecture de police de Paris]', '#ppparis')
+                             f'[RAAspotter] [{raa_spotter.full_name}] Nouveaux éléments trouvés')
+raa_spotter.configure_mastodon(__MASTODON_ACCESS_TOKEN, __MASTODON_INSTANCE, f'[{raa_spotter.full_name}]', f'#{raa_spotter.short_code}')
 raa_spotter.get_raa(__KEYWORDS)
diff --git a/pref06.py b/pref06.py
deleted file mode 100755
index 7b92823..0000000
--- a/pref06.py
+++ /dev/null
@@ -1,105 +0,0 @@
-import os
-import argparse
-import logging
-import datetime
-
-from RAAspotter import RAAspotter
-from RAAspotter_pref06 import RAAspotter_pref06
-
-# Config
-__KEYWORDS = os.getenv('KEYWORDS') or 'vidéoprotection,caméras,captation,aéronef'
-__DATA_DIR = os.path.dirname(os.path.abspath(__file__))+'/data/pref06/'
-__SMTP_HOSTNAME = os.getenv('SMTP_HOSTNAME') or 'localhost'
-__SMTP_USERNAME = os.getenv('SMTP_USERNAME') or ''
-__SMTP_PASSWORD = os.getenv('SMTP_PASSWORD') or ''
-__EMAIL_FROM = os.getenv('EMAIL_FROM')
-__EMAIL_TO = os.getenv('EMAIL_TO')
-if os.getenv('SMTP_PORT'):
-  __SMTP_PORT = int(os.getenv('SMTP_PORT'))
-else:
-  __SMTP_PORT = 587
-if os.getenv('SMTP_STARTTLS'):
-  __SMTP_STARTTLS = True
-else:
-  __SMTP_STARTTLS = False
-if os.getenv('SMTP_SSL'):
-  __SMTP_SSL = True
-else:
-  __SMTP_SSL = False
-if os.getenv('NOT_BEFORE'):
-  __NOT_BEFORE = datetime.datetime.strptime(os.getenv('NOT_BEFORE'), '%Y-%m-%d')
-else:
-  __NOT_BEFORE = datetime.datetime(1970, 1, 1)
-__MASTODON_ACCESS_TOKEN = os.getenv('MASTODON_ACCESS_TOKEN')
-__MASTODON_INSTANCE = os.getenv('MASTODON_INSTANCE')
-
-# Début du script
-parser = argparse.ArgumentParser(prog='pref06.py', description='Télécharge les RAA de la préfecture des Alpes-Maritimes et recherche des mots-clés')
-parser.add_argument('-k', '--keywords', action='store', help='liste des termes recherchés, séparés par une virgule (par défaut : vidéoprotection,caméras,captation,aéronef)')
-parser.add_argument('--not-before', action='store', help='n\'analyse pas les RAA datant d\'avant la date indiquée, au format YYYY-MM-DD (par défaut : 2024-01-01)')
-parser.add_argument('--smtp-hostname', action='store', help='nom d\'hôte SMTP (par défaut : localhost)')
-parser.add_argument('--smtp-username', action='store', help='nom d\'utilisateur SMTP (par défaut : vide)')
-parser.add_argument('--smtp-password', action='store', help='mot de passe SMTP (par défaut : vide)')
-parser.add_argument('--smtp-port', action='store', help='port SMTP (par défaut : 587)')
-parser.add_argument('--smtp-starttls', action='store_true', help='connexion SMTP avec STARTTLS')
-parser.add_argument('--smtp-ssl', action='store_true', help='connexion SMTP avec SSL')
-parser.add_argument('-f', '--email-from', action='store', help='adresse de courrier électronique expéditrice des notifications')
-parser.add_argument('-t', '--email-to', action='store', help='adresses de courrier électronique destinataires des notifications (séparées par une virgule)')
-parser.add_argument('--mastodon-access-token', action='store', help='jeton d\'accès pour publier sur Mastodon (par défaut : vide)')
-parser.add_argument('--mastodon-instance', action='store', help='URL de l\'instance (doit inclure "http://" ou "https://" ; par défaut : vide)')
-parser.add_argument('-v', action='store_true', help='relève le niveau de verbosité à INFO')
-parser.add_argument('-vv', action='store_true', help='relève le niveau de verbosité à DEBUG')
-args = parser.parse_args()
-
-if args.v or os.getenv('VERBOSE'):
-  logging.basicConfig(level=logging.INFO)
-
-if args.vv or os.getenv('VVERBOSE'):
-  logging.basicConfig(level=logging.DEBUG)
-
-if args.keywords:
-  __KEYWORDS = args.keywords
-
-if args.not_before:
-  __NOT_BEFORE = datetime.datetime.strptime(args.not_before, '%Y-%m-%d')
-
-if args.smtp_hostname:
-  __SMTP_HOSTNAME = args.smtp_hostname
-
-if args.smtp_username:
-  __SMTP_USERNAME = args.smtp_username
-
-if args.smtp_password:
-  __SMTP_PASSWORD = args.smtp_password
-
-if args.smtp_port:
-  __SMTP_PORT = int(args.smtp_port)
-
-if args.smtp_starttls:
-  __SMTP_STARTTLS = True
-
-if args.smtp_ssl:
-  __SMTP_SSL = True
-
-if args.email_from:
-  __EMAIL_FROM = args.email_from
-
-if args.email_to:
-  __EMAIL_TO = args.email_to
-
-if args.mastodon_access_token:
-  __MASTODON_ACCESS_TOKEN = args.mastodon_access_token
-
-if args.mastodon_instance:
-  __MASTODON_INSTANCE = args.mastodon_instance
-
-# On crée le dossier de téléchargement
-os.makedirs(__DATA_DIR, exist_ok=True)
-
-raa_spotter = RAAspotter_pref06(__DATA_DIR)
-raa_spotter.not_before = __NOT_BEFORE
-raa_spotter.configure_mailer(__SMTP_HOSTNAME, __SMTP_USERNAME, __SMTP_PASSWORD, __SMTP_PORT,
-                             __SMTP_STARTTLS, __SMTP_SSL, __EMAIL_FROM, __EMAIL_TO,
-                             '[RAAspotter] [Préfecture des Alpes-Maritimes] Nouveaux éléments trouvés')
-raa_spotter.configure_mastodon(__MASTODON_ACCESS_TOKEN, __MASTODON_INSTANCE, '[Préfecture des Alpes-Maritimes]', '#pref06')
-raa_spotter.get_raa(__KEYWORDS)
diff --git a/pref13.py b/pref13.py
deleted file mode 100755
index 23b792b..0000000
--- a/pref13.py
+++ /dev/null
@@ -1,105 +0,0 @@
-import os
-import argparse
-import logging
-import datetime
-
-from RAAspotter import RAAspotter
-from RAAspotter_pref13 import RAAspotter_pref13
-
-# Config
-__KEYWORDS = os.getenv('KEYWORDS') or 'vidéoprotection,caméras,captation,aéronef'
-__DATA_DIR = os.path.dirname(os.path.abspath(__file__))+'/data/pref13/'
-__SMTP_HOSTNAME = os.getenv('SMTP_HOSTNAME') or 'localhost'
-__SMTP_USERNAME = os.getenv('SMTP_USERNAME') or ''
-__SMTP_PASSWORD = os.getenv('SMTP_PASSWORD') or ''
-__EMAIL_FROM = os.getenv('EMAIL_FROM')
-__EMAIL_TO = os.getenv('EMAIL_TO')
-if os.getenv('SMTP_PORT'):
-  __SMTP_PORT = int(os.getenv('SMTP_PORT'))
-else:
-  __SMTP_PORT = 587
-if os.getenv('SMTP_STARTTLS'):
-  __SMTP_STARTTLS = True
-else:
-  __SMTP_STARTTLS = False
-if os.getenv('SMTP_SSL'):
-  __SMTP_SSL = True
-else:
-  __SMTP_SSL = False
-if os.getenv('NOT_BEFORE'):
-  __NOT_BEFORE = datetime.datetime.strptime(os.getenv('NOT_BEFORE'), '%Y-%m-%d')
-else:
-  __NOT_BEFORE = datetime.datetime(1970, 1, 1)
-__MASTODON_ACCESS_TOKEN = os.getenv('MASTODON_ACCESS_TOKEN')
-__MASTODON_INSTANCE = os.getenv('MASTODON_INSTANCE')
-
-# Début du script
-parser = argparse.ArgumentParser(prog='pref13.py', description='Télécharge les RAA de la préfecture des Bouches-du-Rhône et recherche des mots-clés')
-parser.add_argument('-k', '--keywords', action='store', help='liste des termes recherchés, séparés par une virgule (par défaut : vidéoprotection,caméras,captation,aéronef)')
-parser.add_argument('--not-before', action='store', help='n\'analyse pas les RAA datant d\'avant la date indiquée, au format YYYY-MM-DD (par défaut : 2024-01-01)')
-parser.add_argument('--smtp-hostname', action='store', help='nom d\'hôte SMTP (par défaut : localhost)')
-parser.add_argument('--smtp-username', action='store', help='nom d\'utilisateur SMTP (par défaut : vide)')
-parser.add_argument('--smtp-password', action='store', help='mot de passe SMTP (par défaut : vide)')
-parser.add_argument('--smtp-port', action='store', help='port SMTP (par défaut : 587)')
-parser.add_argument('--smtp-starttls', action='store_true', help='connexion SMTP avec STARTTLS')
-parser.add_argument('--smtp-ssl', action='store_true', help='connexion SMTP avec SSL')
-parser.add_argument('-f', '--email-from', action='store', help='adresse de courrier électronique expéditrice des notifications')
-parser.add_argument('-t', '--email-to', action='store', help='adresses de courrier électronique destinataires des notifications (séparées par une virgule)')
-parser.add_argument('--mastodon-access-token', action='store', help='jeton d\'accès pour publier sur Mastodon (par défaut : vide)')
-parser.add_argument('--mastodon-instance', action='store', help='URL de l\'instance (doit inclure "http://" ou "https://" ; par défaut : vide)')
-parser.add_argument('-v', action='store_true', help='relève le niveau de verbosité à INFO')
-parser.add_argument('-vv', action='store_true', help='relève le niveau de verbosité à DEBUG')
-args = parser.parse_args()
-
-if args.v or os.getenv('VERBOSE'):
-  logging.basicConfig(level=logging.INFO)
-
-if args.vv or os.getenv('VVERBOSE'):
-  logging.basicConfig(level=logging.DEBUG)
-
-if args.keywords:
-  __KEYWORDS = args.keywords
-
-if args.not_before:
-  __NOT_BEFORE = datetime.datetime.strptime(args.not_before, '%Y-%m-%d')
-
-if args.smtp_hostname:
-  __SMTP_HOSTNAME = args.smtp_hostname
-
-if args.smtp_username:
-  __SMTP_USERNAME = args.smtp_username
-
-if args.smtp_password:
-  __SMTP_PASSWORD = args.smtp_password
-
-if args.smtp_port:
-  __SMTP_PORT = int(args.smtp_port)
-
-if args.smtp_starttls:
-  __SMTP_STARTTLS = True
-
-if args.smtp_ssl:
-  __SMTP_SSL = True
-
-if args.email_from:
-  __EMAIL_FROM = args.email_from
-
-if args.email_to:
-  __EMAIL_TO = args.email_to
-
-if args.mastodon_access_token:
-  __MASTODON_ACCESS_TOKEN = args.mastodon_access_token
-
-if args.mastodon_instance:
-  __MASTODON_INSTANCE = args.mastodon_instance
-
-# On crée le dossier de téléchargement
-os.makedirs(__DATA_DIR, exist_ok=True)
-
-raa_spotter = RAAspotter_pref13(__DATA_DIR)
-raa_spotter.not_before = __NOT_BEFORE
-raa_spotter.configure_mailer(__SMTP_HOSTNAME, __SMTP_USERNAME, __SMTP_PASSWORD, __SMTP_PORT,
-                             __SMTP_STARTTLS, __SMTP_SSL, __EMAIL_FROM, __EMAIL_TO,
-                             '[RAAspotter] [Préfecture des Bouches-du-Rhône] Nouveaux éléments trouvés')
-raa_spotter.configure_mastodon(__MASTODON_ACCESS_TOKEN, __MASTODON_INSTANCE, '[Préfecture des Bouches-du-Rhône]', '#pref13')
-raa_spotter.get_raa(__KEYWORDS)
diff --git a/pref35.py b/pref35.py
deleted file mode 100755
index cfae612..0000000
--- a/pref35.py
+++ /dev/null
@@ -1,105 +0,0 @@
-import os
-import argparse
-import logging
-import datetime
-
-from RAAspotter import RAAspotter
-from RAAspotter_pref35 import RAAspotter_pref35
-
-# Config
-__KEYWORDS = os.getenv('KEYWORDS') or 'vidéoprotection,caméras,captation,aéronef'
-__DATA_DIR = os.path.dirname(os.path.abspath(__file__))+'/data/pref35/'
-__SMTP_HOSTNAME = os.getenv('SMTP_HOSTNAME') or 'localhost'
-__SMTP_USERNAME = os.getenv('SMTP_USERNAME') or ''
-__SMTP_PASSWORD = os.getenv('SMTP_PASSWORD') or ''
-__EMAIL_FROM = os.getenv('EMAIL_FROM')
-__EMAIL_TO = os.getenv('EMAIL_TO')
-if os.getenv('SMTP_PORT'):
-  __SMTP_PORT = int(os.getenv('SMTP_PORT'))
-else:
-  __SMTP_PORT = 587
-if os.getenv('SMTP_STARTTLS'):
-  __SMTP_STARTTLS = True
-else:
-  __SMTP_STARTTLS = False
-if os.getenv('SMTP_SSL'):
-  __SMTP_SSL = True
-else:
-  __SMTP_SSL = False
-if os.getenv('NOT_BEFORE'):
-  __NOT_BEFORE = datetime.datetime.strptime(os.getenv('NOT_BEFORE'), '%Y-%m-%d')
-else:
-  __NOT_BEFORE = datetime.datetime(1970, 1, 1)
-__MASTODON_ACCESS_TOKEN = os.getenv('MASTODON_ACCESS_TOKEN')
-__MASTODON_INSTANCE = os.getenv('MASTODON_INSTANCE')
-
-# Début du script
-parser = argparse.ArgumentParser(prog='pref35.py', description='Télécharge les RAA de la préfecture d\'Ille-et-Vilaine et recherche des mots-clés')
-parser.add_argument('-k', '--keywords', action='store', help='liste des termes recherchés, séparés par une virgule (par défaut : vidéoprotection,caméras,captation,aéronef)')
-parser.add_argument('--not-before', action='store', help='n\'analyse pas les RAA datant d\'avant la date indiquée, au format YYYY-MM-DD (par défaut : 2024-01-01)')
-parser.add_argument('--smtp-hostname', action='store', help='nom d\'hôte SMTP (par défaut : localhost)')
-parser.add_argument('--smtp-username', action='store', help='nom d\'utilisateur SMTP (par défaut : vide)')
-parser.add_argument('--smtp-password', action='store', help='mot de passe SMTP (par défaut : vide)')
-parser.add_argument('--smtp-port', action='store', help='port SMTP (par défaut : 587)')
-parser.add_argument('--smtp-starttls', action='store_true', help='connexion SMTP avec STARTTLS')
-parser.add_argument('--smtp-ssl', action='store_true', help='connexion SMTP avec SSL')
-parser.add_argument('-f', '--email-from', action='store', help='adresse de courrier électronique expéditrice des notifications')
-parser.add_argument('-t', '--email-to', action='store', help='adresses de courrier électronique destinataires des notifications (séparées par une virgule)')
-parser.add_argument('--mastodon-access-token', action='store', help='jeton d\'accès pour publier sur Mastodon (par défaut : vide)')
-parser.add_argument('--mastodon-instance', action='store', help='URL de l\'instance (doit inclure "http://" ou "https://" ; par défaut : vide)')
-parser.add_argument('-v', action='store_true', help='relève le niveau de verbosité à INFO')
-parser.add_argument('-vv', action='store_true', help='relève le niveau de verbosité à DEBUG')
-args = parser.parse_args()
-
-if args.v or os.getenv('VERBOSE'):
-  logging.basicConfig(level=logging.INFO)
-
-if args.vv or os.getenv('VVERBOSE'):
-  logging.basicConfig(level=logging.DEBUG)
-
-if args.keywords:
-  __KEYWORDS = args.keywords
-
-if args.not_before:
-  __NOT_BEFORE = datetime.datetime.strptime(args.not_before, '%Y-%m-%d')
-
-if args.smtp_hostname:
-  __SMTP_HOSTNAME = args.smtp_hostname
-
-if args.smtp_username:
-  __SMTP_USERNAME = args.smtp_username
-
-if args.smtp_password:
-  __SMTP_PASSWORD = args.smtp_password
-
-if args.smtp_port:
-  __SMTP_PORT = int(args.smtp_port)
-
-if args.smtp_starttls:
-  __SMTP_STARTTLS = True
-
-if args.smtp_ssl:
-  __SMTP_SSL = True
-
-if args.email_from:
-  __EMAIL_FROM = args.email_from
-
-if args.email_to:
-  __EMAIL_TO = args.email_to
-
-if args.mastodon_access_token:
-  __MASTODON_ACCESS_TOKEN = args.mastodon_access_token
-
-if args.mastodon_instance:
-  __MASTODON_INSTANCE = args.mastodon_instance
-
-# On crée le dossier de téléchargement
-os.makedirs(__DATA_DIR, exist_ok=True)
-
-raa_spotter = RAAspotter_pref35(__DATA_DIR)
-raa_spotter.not_before = __NOT_BEFORE
-raa_spotter.configure_mailer(__SMTP_HOSTNAME, __SMTP_USERNAME, __SMTP_PASSWORD, __SMTP_PORT,
-                             __SMTP_STARTTLS, __SMTP_SSL, __EMAIL_FROM, __EMAIL_TO,
-                             '[RAAspotter] [Préfecture d\'Ille-et-Vilaine] Nouveaux éléments trouvés')
-raa_spotter.configure_mastodon(__MASTODON_ACCESS_TOKEN, __MASTODON_INSTANCE, '[Préfecture d\'Ille-et-Vilaine]', '#pref35')
-raa_spotter.get_raa(__KEYWORDS)
diff --git a/pref62.py b/pref62.py
deleted file mode 100755
index cf1e409..0000000
--- a/pref62.py
+++ /dev/null
@@ -1,105 +0,0 @@
-import os
-import argparse
-import logging
-import datetime
-
-from RAAspotter import RAAspotter
-from RAAspotter_pref62 import RAAspotter_pref62
-
-# Config
-__KEYWORDS = os.getenv('KEYWORDS') or 'vidéoprotection,caméras,captation,aéronef'
-__DATA_DIR = os.path.dirname(os.path.abspath(__file__))+'/data/pref62/'
-__SMTP_HOSTNAME = os.getenv('SMTP_HOSTNAME') or 'localhost'
-__SMTP_USERNAME = os.getenv('SMTP_USERNAME') or ''
-__SMTP_PASSWORD = os.getenv('SMTP_PASSWORD') or ''
-__EMAIL_FROM = os.getenv('EMAIL_FROM')
-__EMAIL_TO = os.getenv('EMAIL_TO')
-if os.getenv('SMTP_PORT'):
-  __SMTP_PORT = int(os.getenv('SMTP_PORT'))
-else:
-  __SMTP_PORT = 587
-if os.getenv('SMTP_STARTTLS'):
-  __SMTP_STARTTLS = True
-else:
-  __SMTP_STARTTLS = False
-if os.getenv('SMTP_SSL'):
-  __SMTP_SSL = True
-else:
-  __SMTP_SSL = False
-if os.getenv('NOT_BEFORE'):
-  __NOT_BEFORE = datetime.datetime.strptime(os.getenv('NOT_BEFORE'), '%Y-%m-%d')
-else:
-  __NOT_BEFORE = datetime.datetime(1970, 1, 1)
-__MASTODON_ACCESS_TOKEN = os.getenv('MASTODON_ACCESS_TOKEN')
-__MASTODON_INSTANCE = os.getenv('MASTODON_INSTANCE')
-
-# Début du script
-parser = argparse.ArgumentParser(prog='pref62.py', description='Télécharge les RAA de la préfecture du Pas-de-Calais et recherche des mots-clés')
-parser.add_argument('-k', '--keywords', action='store', help='liste des termes recherchés, séparés par une virgule (par défaut : vidéoprotection,caméras,captation,aéronef)')
-parser.add_argument('--not-before', action='store', help='n\'analyse pas les RAA datant d\'avant la date indiquée, au format YYYY-MM-DD (par défaut : 2024-01-01)')
-parser.add_argument('--smtp-hostname', action='store', help='nom d\'hôte SMTP (par défaut : localhost)')
-parser.add_argument('--smtp-username', action='store', help='nom d\'utilisateur SMTP (par défaut : vide)')
-parser.add_argument('--smtp-password', action='store', help='mot de passe SMTP (par défaut : vide)')
-parser.add_argument('--smtp-port', action='store', help='port SMTP (par défaut : 587)')
-parser.add_argument('--smtp-starttls', action='store_true', help='connexion SMTP avec STARTTLS')
-parser.add_argument('--smtp-ssl', action='store_true', help='connexion SMTP avec SSL')
-parser.add_argument('-f', '--email-from', action='store', help='adresse de courrier électronique expéditrice des notifications')
-parser.add_argument('-t', '--email-to', action='store', help='adresses de courrier électronique destinataires des notifications (séparées par une virgule)')
-parser.add_argument('--mastodon-access-token', action='store', help='jeton d\'accès pour publier sur Mastodon (par défaut : vide)')
-parser.add_argument('--mastodon-instance', action='store', help='URL de l\'instance (doit inclure "http://" ou "https://" ; par défaut : vide)')
-parser.add_argument('-v', action='store_true', help='relève le niveau de verbosité à INFO')
-parser.add_argument('-vv', action='store_true', help='relève le niveau de verbosité à DEBUG')
-args = parser.parse_args()
-
-if args.v or os.getenv('VERBOSE'):
-  logging.basicConfig(level=logging.INFO)
-
-if args.vv or os.getenv('VVERBOSE'):
-  logging.basicConfig(level=logging.DEBUG)
-
-if args.keywords:
-  __KEYWORDS = args.keywords
-
-if args.not_before:
-  __NOT_BEFORE = datetime.datetime.strptime(args.not_before, '%Y-%m-%d')
-
-if args.smtp_hostname:
-  __SMTP_HOSTNAME = args.smtp_hostname
-
-if args.smtp_username:
-  __SMTP_USERNAME = args.smtp_username
-
-if args.smtp_password:
-  __SMTP_PASSWORD = args.smtp_password
-
-if args.smtp_port:
-  __SMTP_PORT = int(args.smtp_port)
-
-if args.smtp_starttls:
-  __SMTP_STARTTLS = True
-
-if args.smtp_ssl:
-  __SMTP_SSL = True
-
-if args.email_from:
-  __EMAIL_FROM = args.email_from
-
-if args.email_to:
-  __EMAIL_TO = args.email_to
-
-if args.mastodon_access_token:
-  __MASTODON_ACCESS_TOKEN = args.mastodon_access_token
-
-if args.mastodon_instance:
-  __MASTODON_INSTANCE = args.mastodon_instance
-
-# On crée le dossier de téléchargement
-os.makedirs(__DATA_DIR, exist_ok=True)
-
-raa_spotter = RAAspotter_pref62(__DATA_DIR)
-raa_spotter.not_before = __NOT_BEFORE
-raa_spotter.configure_mailer(__SMTP_HOSTNAME, __SMTP_USERNAME, __SMTP_PASSWORD, __SMTP_PORT,
-                             __SMTP_STARTTLS, __SMTP_SSL, __EMAIL_FROM, __EMAIL_TO,
-                             '[RAAspotter] [Préfecture du Pas-de-Calais] Nouveaux éléments trouvés')
-raa_spotter.configure_mastodon(__MASTODON_ACCESS_TOKEN, __MASTODON_INSTANCE, '[Préfecture du Pas-de-Calais]', '#pref62')
-raa_spotter.get_raa(__KEYWORDS)
-- 
GitLab