From fff227fc2c5a9fbd31c03046841bfcaaecc03e01 Mon Sep 17 00:00:00 2001
From: Bastien Le Querrec <blq@laquadrature.net>
Date: Mon, 17 Jun 2024 15:12:09 +0200
Subject: [PATCH] =?UTF-8?q?Attrap:=20si=20un=20RAA=20n'a=20pas=20de=20date?=
 =?UTF-8?q?,=20on=20utilise=20celle=20des=20m=C3=A9tadonn=C3=A9es?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Attrap.py | 29 +++++++++++++++++++++--------
 1 file changed, 21 insertions(+), 8 deletions(-)

diff --git a/Attrap.py b/Attrap.py
index 96daf36..43e2d87 100644
--- a/Attrap.py
+++ b/Attrap.py
@@ -44,7 +44,7 @@ class Attrap:
         """La classe représentant un Recueil des actes administratifs. La plupart du temps, il s'agit d'un PDF avec plusieurs arrêtés."""
 
         url = ""
-        date = datetime.datetime(1970, 1, 1)
+        date = None
         date_str = ""
         name = ""
         sha256 = ""
@@ -54,7 +54,7 @@ class Attrap:
         def __init__(self, url, date, name):
             if not url == "":
                 self.url = url
-            if not date == "":
+            if date is not None:
                 self.date = date
                 self.date_str = date.strftime("%d/%m/%Y")
             if not name == "":
@@ -76,9 +76,15 @@ class Attrap:
             if pdf_metadata:
                 if pdf_metadata.creation_date:
                     self.pdf_creation_date = pdf_metadata.creation_date
+                    if self.date is None:
+                        self.date = pdf_metadata.creation_date
+                        self.date_str = self.date.strftime("%d/%m/%Y")
 
                 if pdf_metadata.modification_date:
                     self.pdf_modification_date = pdf_metadata.modification_date
+                    if self.date is None:
+                        self.date = pdf_metadata.modification_date
+                        self.date_str = self.date.strftime("%d/%m/%Y")
 
         def extract_content(self, data_dir):
             """Extrait le contenu du PDF OCRisé pour l'écrire dans le fichier qui servira à faire la recherche de mots-clés. Supprime tous les PDF à la fin."""
@@ -577,15 +583,22 @@ class Attrap:
         for raa in elements:
             # 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/{raa.get_sha256()}.txt'):
+            if not os.path.isfile(f'{self.data_dir}/raa/{raa.get_sha256()}.txt') and (not raa.date or (raa.date >= self.not_before)):
                 url = quote(raa.url, safe='/:')
-                logger.info(f'Nouveau fichier : {raa.name} ({raa.date_str}). URL : {url}')
                 self.download_file(raa)
                 raa.parse_metadata(self.data_dir)
-                self.flatten_pdf(raa)
-                self.ocr(raa, True)
-                raa.extract_content(self.data_dir)
-                self.search_keywords(raa, keywords)
+                # Lorsque la date du RAA n'est pas connue, on a dû télécharger le PDF pour récupérer la date de ses métadonnées.
+                # Donc on vérifie à nouveau ici si la date correspond à ce qu'on veut analyser
+                if (raa.date and raa.date >= self.not_before):
+                    logger.info(f'Nouveau fichier : {raa.name} ({raa.date_str}). URL : {url}')
+                    self.flatten_pdf(raa)
+                    self.ocr(raa, True)
+                    raa.extract_content(self.data_dir)
+                    self.search_keywords(raa, keywords)
+                else:
+                    os.remove(f'{self.data_dir}/raa/{raa.get_sha256()}.pdf')
+                    logger.error(f'ERREUR: le RAA {raa.name} n\'a pas de date!')
+                    sys.exit(1)
 
     def get_raa(self, page_content):
         logger.error('Cette fonction doit être surchargée')
-- 
GitLab