From 662ccf6248703f93f2e715d7bab60a60d565ba40 Mon Sep 17 00:00:00 2001
From: Bastien Le Querrec <blq@laquadrature.net>
Date: Mon, 18 Mar 2024 11:33:31 +0100
Subject: [PATCH] =?UTF-8?q?RAAspotter:=20ajoute=20la=20possibilit=C3=A9=20?=
 =?UTF-8?q?de=20ne=20pas=20analyser=20les=20RAA=20anciens?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 RAAspotter.py         |  9 ++++++---
 RAAspotter_ppparis.py |  4 +++-
 RAAspotter_pref13.py  |  3 ++-
 RAAspotter_pref35.py  |  3 ++-
 ppparis.py            | 10 ++++++++++
 pref13.py             | 10 ++++++++++
 pref35.py             | 10 ++++++++++
 7 files changed, 43 insertions(+), 6 deletions(-)

diff --git a/RAAspotter.py b/RAAspotter.py
index c0798fd..a6597e0 100644
--- a/RAAspotter.py
+++ b/RAAspotter.py
@@ -3,6 +3,7 @@ import subprocess
 import logging
 import requests
 import time
+import datetime
 
 from selenium import webdriver
 from selenium.webdriver.common.by import By
@@ -25,7 +26,7 @@ logger = logging.getLogger(__name__)
 class RAAspotter:
   class RAA:
     url      = ""
-    date     = ""
+    date     = datetime.datetime(1970, 1, 1)
     name     = ""
     filename = ""
     sha256   = ""
@@ -56,6 +57,7 @@ class RAAspotter:
     self.tor_enabled      = False
     self.tor_max_requests = 0
     self.tor_requests     = 0
+    self.not_before       = datetime.datetime(1970, 1, 1)
 
     self.update_user_agent(user_agent)
 
@@ -230,8 +232,9 @@ class RAAspotter:
 
   def parse_raa(self, elements, keywords):
     for raa in elements:
-      # Si le fichier n'a pas déjà été parsé, on le télécharge et on le parse
-      if not os.path.isfile(f'{self.data_dir}{raa.get_sha256()}.txt'):
+      # Si le fichier n'a pas déjà été parsé et qu'il est postérieur à la date maximale d'analyse,
+      # on le télécharge et on le parse
+      if (raa.date > self.not_before) and (not os.path.isfile(f'{self.data_dir}{raa.get_sha256()}.txt')):
         logger.info(f'Nouveau fichier : {raa.name} ({raa.date}). URL : {raa.url}')
         self.download_file(raa)
         self.ocr(raa, True)
diff --git a/RAAspotter_ppparis.py b/RAAspotter_ppparis.py
index e0fab5a..9dab437 100644
--- a/RAAspotter_ppparis.py
+++ b/RAAspotter_ppparis.py
@@ -1,3 +1,5 @@
+import datetime
+
 from bs4 import BeautifulSoup
 from urllib.parse import unquote
 
@@ -35,7 +37,7 @@ class RAAspotter_ppparis(RAAspotter):
           url = a['href']
 
         name = a.find('span').get_text()
-        date = a.find('div', class_="field--type-datetime").get_text()
+        date = datetime.datetime.strptime(a.find('div', class_="field--type-datetime").get_text().strip(), '%d/%m/%Y')
 
         filename = unquote(url.split('/')[-1])
 
diff --git a/RAAspotter_pref13.py b/RAAspotter_pref13.py
index d47f2a0..31ee02c 100644
--- a/RAAspotter_pref13.py
+++ b/RAAspotter_pref13.py
@@ -1,4 +1,5 @@
 import os, sys
+import datetime
 
 from bs4 import BeautifulSoup
 from urllib.parse import unquote
@@ -44,7 +45,7 @@ class RAAspotter_pref13(RAAspotter):
           url = a['href']
 
         name     = a.find('span').previous_sibling.replace('Télécharger ', '').strip()
-        date     = a.find('span').get_text().split(' - ')[-1].strip()
+        date     = datetime.datetime.strptime(a.find('span').get_text().split(' - ')[-1].strip(), '%d/%m/%Y')
         filename = unquote(url.split('/')[-1])
 
         raa = RAAspotter.RAA(url, date, name, filename)
diff --git a/RAAspotter_pref35.py b/RAAspotter_pref35.py
index b4b8639..b57ad98 100644
--- a/RAAspotter_pref35.py
+++ b/RAAspotter_pref35.py
@@ -1,4 +1,5 @@
 import os, sys
+import datetime
 
 from bs4 import BeautifulSoup
 from urllib.parse import unquote
@@ -44,7 +45,7 @@ class RAAspotter_pref35(RAAspotter):
           url = a['href']
 
         name     = a.find('span').previous_sibling.replace('Télécharger ', '').strip()
-        date     = a.find('span').get_text().split(' - ')[-1].strip()
+        date     = datetime.datetime.strptime(a.find('span').get_text().split(' - ')[-1].strip(), '%d/%m/%Y')
         filename = unquote(url.split('/')[-1])
 
         raa = RAAspotter.RAA(url, date, name, filename)
diff --git a/ppparis.py b/ppparis.py
index 945b853..e108a16 100755
--- a/ppparis.py
+++ b/ppparis.py
@@ -1,6 +1,7 @@
 import os
 import argparse
 import logging
+import datetime
 
 from RAAspotter import RAAspotter
 from RAAspotter_ppparis import RAAspotter_ppparis
@@ -25,10 +26,15 @@ 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)
 
 # 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.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 : analyse tous les RAA)')
 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)')
@@ -50,6 +56,9 @@ if args.vv or os.getenv('VVERBOSE'):
 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
 
@@ -78,6 +87,7 @@ if args.email_to:
 os.makedirs(__DATA_DIR, exist_ok=True)
 
 raa_spotter = RAAspotter_ppparis(__DATA_DIR)
+raa_spotter.not_before = __NOT_BEFORE
 raa_spotter.get_raa(__KEYWORDS)
 
 if raa_spotter.found == True and __SMTP_HOSTNAME and __SMTP_USERNAME and __SMTP_PASSWORD and __SMTP_PORT and __EMAIL_TO and __EMAIL_FROM:
diff --git a/pref13.py b/pref13.py
index 95cc42f..87b64f4 100755
--- a/pref13.py
+++ b/pref13.py
@@ -1,6 +1,7 @@
 import os
 import argparse
 import logging
+import datetime
 
 from RAAspotter import RAAspotter
 from RAAspotter_pref13 import RAAspotter_pref13
@@ -25,10 +26,15 @@ 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)
 
 # 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 : analyse tous les RAA)')
 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)')
@@ -50,6 +56,9 @@ if args.vv or os.getenv('VVERBOSE'):
 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
 
@@ -78,6 +87,7 @@ if args.email_to:
 os.makedirs(__DATA_DIR, exist_ok=True)
 
 raa_spotter = RAAspotter_pref13(__DATA_DIR)
+raa_spotter.not_before = __NOT_BEFORE
 raa_spotter.get_raa(__KEYWORDS)
 
 if raa_spotter.found == True and __SMTP_HOSTNAME and __SMTP_USERNAME and __SMTP_PASSWORD and __SMTP_PORT and __EMAIL_TO and __EMAIL_FROM:
diff --git a/pref35.py b/pref35.py
index 2bed80c..70c544d 100755
--- a/pref35.py
+++ b/pref35.py
@@ -1,6 +1,7 @@
 import os
 import argparse
 import logging
+import datetime
 
 from RAAspotter import RAAspotter
 from RAAspotter_pref35 import RAAspotter_pref35
@@ -25,10 +26,15 @@ 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)
 
 # 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 : analyse tous les RAA)')
 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)')
@@ -50,6 +56,9 @@ if args.vv or os.getenv('VVERBOSE'):
 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
 
@@ -78,6 +87,7 @@ if args.email_to:
 os.makedirs(__DATA_DIR, exist_ok=True)
 
 raa_spotter = RAAspotter_pref35(__DATA_DIR)
+raa_spotter.not_before = __NOT_BEFORE
 raa_spotter.get_raa(__KEYWORDS)
 
 if raa_spotter.found == True and __SMTP_HOSTNAME and __SMTP_USERNAME and __SMTP_PASSWORD and __SMTP_PORT and __EMAIL_TO and __EMAIL_FROM:
-- 
GitLab