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

Attrap: compare des objets datetime avisés

parent 7d0cb92a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -55,7 +55,7 @@ class Attrap: ...@@ -55,7 +55,7 @@ class Attrap:
if not url == "": if not url == "":
self.url = url self.url = url
if date is not None: if date is not None:
self.date = date self.date = Attrap.get_aware_datetime(date)
self.date_str = date.strftime("%d/%m/%Y") self.date_str = date.strftime("%d/%m/%Y")
if not name == "": if not name == "":
self.name = name self.name = name
...@@ -75,15 +75,15 @@ class Attrap: ...@@ -75,15 +75,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 = Attrap.get_aware_datetime(pdf_metadata.creation_date)
if self.date is None: if self.date is None:
self.date = pdf_metadata.creation_date self.date = Attrap.get_aware_datetime(pdf_metadata.creation_date)
self.date_str = self.date.strftime("%d/%m/%Y") 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 = Attrap.get_aware_datetime(pdf_metadata.modification_date)
if self.date is None: if self.date is None:
self.date = pdf_metadata.modification_date self.date = Attrap.get_aware_datetime(pdf_metadata.modification_date)
self.date_str = self.date.strftime("%d/%m/%Y") self.date_str = self.date.strftime("%d/%m/%Y")
def extract_content(self, data_dir): def extract_content(self, data_dir):
...@@ -118,15 +118,15 @@ class Attrap: ...@@ -118,15 +118,15 @@ class Attrap:
pdf_modification_date_json = None pdf_modification_date_json = None
if self.pdf_creation_date: if self.pdf_creation_date:
pdf_creation_date_json = self.pdf_creation_date.strftime("%d/%m/%Y %H:%M:%S") pdf_creation_date_json = self.pdf_creation_date.strftime("%d/%m/%Y %H:%M:%S%z")
if self.pdf_modification_date: if self.pdf_modification_date:
pdf_modification_date_json = self.pdf_modification_date.strftime("%d/%m/%Y %H:%M:%S") pdf_modification_date_json = self.pdf_modification_date.strftime("%d/%m/%Y %H:%M:%S%z")
properties = { properties = {
'name': self.name, 'name': self.name,
'date': self.date_str, 'date': self.date_str,
'url': quote(self.url, safe='/:'), 'url': quote(self.url, safe='/:'),
'first_saw_on': datetime.datetime.today().strftime("%d/%m/%Y %H:%M:%S"), 'first_saw_on': datetime.datetime.now(datetime.timezone.utc).strftime("%d/%m/%Y %H:%M:%S%z"),
'pdf_creation_date': pdf_creation_date_json, 'pdf_creation_date': pdf_creation_date_json,
'pdf_modification_date': pdf_modification_date_json 'pdf_modification_date': pdf_modification_date_json
} }
...@@ -583,13 +583,13 @@ class Attrap: ...@@ -583,13 +583,13 @@ 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 not os.path.isfile(f'{self.data_dir}/raa/{raa.get_sha256()}.txt') and (not raa.date or (raa.date >= self.not_before)): if not os.path.isfile(f'{self.data_dir}/raa/{raa.get_sha256()}.txt') and (not raa.date or (raa.date >= Attrap.get_aware_datetime(self.not_before))):
url = quote(raa.url, safe='/:') url = quote(raa.url, safe='/:')
self.download_file(raa) self.download_file(raa)
raa.parse_metadata(self.data_dir) raa.parse_metadata(self.data_dir)
# 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. # 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 # Donc on vérifie à nouveau ici si la date correspond à ce qu'on veut analyser
if (raa.date and raa.date >= self.not_before): if (raa.date and raa.date >= Attrap.get_aware_datetime(self.not_before)):
logger.info(f'Nouveau fichier : {raa.name} ({raa.date_str}). URL : {url}') logger.info(f'Nouveau fichier : {raa.name} ({raa.date_str}). URL : {url}')
self.flatten_pdf(raa) self.flatten_pdf(raa)
self.ocr(raa, True) self.ocr(raa, True)
...@@ -694,3 +694,15 @@ class Attrap: ...@@ -694,3 +694,15 @@ class Attrap:
except Exception as exc: except Exception as exc:
logger.warning(f'Impossible de deviner la date du terme {string} : {exc}') logger.warning(f'Impossible de deviner la date du terme {string} : {exc}')
return datetime.datetime(9999, 1, 1) return datetime.datetime(9999, 1, 1)
def get_aware_datetime(unknown_datetime):
"""
Retourne un objet datetime avisé.
datetime - L'objet datetime à aviser. Utilise le fuseau horaire du système si datetime est naïf.
"""
if unknown_datetime.tzinfo is not None and unknown_datetime.tzinfo.utcoffset(unknown_datetime) is not None:
return unknown_datetime
else:
return unknown_datetime.replace(tzinfo=datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo)
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