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