Skip to content
Extraits de code Groupes Projets
Valider fff227fc rédigé par Bastien Le Querrec's avatar Bastien Le Querrec
Parcourir les fichiers

Attrap: si un RAA n'a pas de date, on utilise celle des métadonnées

parent 86ee3fbb
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -44,7 +44,7 @@ class Attrap: ...@@ -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.""" """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 = "" url = ""
date = datetime.datetime(1970, 1, 1) date = None
date_str = "" date_str = ""
name = "" name = ""
sha256 = "" sha256 = ""
...@@ -54,7 +54,7 @@ class Attrap: ...@@ -54,7 +54,7 @@ class Attrap:
def __init__(self, url, date, name): def __init__(self, url, date, name):
if not url == "": if not url == "":
self.url = url self.url = url
if not date == "": if date is not None:
self.date = date self.date = date
self.date_str = date.strftime("%d/%m/%Y") self.date_str = date.strftime("%d/%m/%Y")
if not name == "": if not name == "":
...@@ -76,9 +76,15 @@ class Attrap: ...@@ -76,9 +76,15 @@ class Attrap:
if pdf_metadata: if pdf_metadata:
if pdf_metadata.creation_date: if pdf_metadata.creation_date:
self.pdf_creation_date = 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: if pdf_metadata.modification_date:
self.pdf_modification_date = 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): 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.""" """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: ...@@ -577,15 +583,22 @@ class Attrap:
for raa in elements: for raa in elements:
# Si le fichier n'a pas déjà été parsé et qu'il est postérieur à la # 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 # 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='/:') url = quote(raa.url, safe='/:')
logger.info(f'Nouveau fichier : {raa.name} ({raa.date_str}). URL : {url}')
self.download_file(raa) self.download_file(raa)
raa.parse_metadata(self.data_dir) raa.parse_metadata(self.data_dir)
self.flatten_pdf(raa) # 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.
self.ocr(raa, True) # Donc on vérifie à nouveau ici si la date correspond à ce qu'on veut analyser
raa.extract_content(self.data_dir) if (raa.date and raa.date >= self.not_before):
self.search_keywords(raa, keywords) 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): def get_raa(self, page_content):
logger.error('Cette fonction doit être surchargée') logger.error('Cette fonction doit être surchargée')
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter