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