diff --git a/RAAspotter.py b/RAAspotter.py index 289c00e1d6f20555c07d812828663574d40a31af..23b1b20181a29643b41ab7ed21a2506649b44bac 100644 --- a/RAAspotter.py +++ b/RAAspotter.py @@ -11,6 +11,8 @@ from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions +import dateparser + from bs4 import BeautifulSoup from pyvirtualdisplay import Display from pdfminer.high_level import extract_text @@ -406,3 +408,14 @@ class RAAspotter: smtp.quit() except Exception as exc: logger.warning(f'Impossible d\'envoyer le courrier électronique : {exc}') + + # Fonction qui essaie de deviner la date d'un RAA à partir de son nom. + # Utile pour limiter les requêtes lors de l'obtention des RAA à scanner. + def guess_date(string, regex): + guessed_date = datetime.datetime(9999, 1, 1) + try: + search = re.search(regex, string, re.IGNORECASE) + guessed_date = dateparser.parse(search.group(1)) + except Exception as exc: + logger.warning(f"Impossible de deviner la date du terme {string} : {exc}") + return guessed_date diff --git a/RAAspotter_pref38.py b/RAAspotter_pref38.py index a7fed1a34b27f62727f51ebf64fcd68e9408ef63..8b5123ac32d751af6042511f9c7be1d78d1c632c 100644 --- a/RAAspotter_pref38.py +++ b/RAAspotter_pref38.py @@ -1,6 +1,5 @@ import os, sys, re import datetime -import dateparser import logging from bs4 import BeautifulSoup @@ -63,14 +62,8 @@ class RAAspotter_pref38(RAAspotter): # On analyse chaque résultat for option in select_list.find_all('option'): if not option['value'] == "": - guessed_date = datetime.datetime(9999, 1, 1) - try: - # Pour chaque RAA listé, on essaie de deviner sa date à partir de son nom, et si elle correspond à la plage - # demandée, on poursuit l'analyse - search = re.search('.* n°[ 0-9]* du ([0-9]*(?:er)? [a-zéû]* [0-9]*)', option['title'], re.IGNORECASE) - guessed_date = dateparser.parse(search.group(1)) - except Exception as exc: - logger.warning(f"Impossible de deviner la date du RAA {option['title']} : {exc}") + # On estime la date à partir du nom de fichier + guessed_date = RAAspotter.guess_date(option['title'], '.* n°[ 0-9]* du ([0-9]*(?:er)? [a-zéû]* [0-9]*)') # Si la date estimée correspond à la plage d'analyse, on demande au serveur les détails du RAA if guessed_date >= self.not_before: