From 4aecf2f912f0034efd5a6772f6c99a4ec23f3e04 Mon Sep 17 00:00:00 2001 From: Bastien Le Querrec <blq@laquadrature.net> Date: Wed, 6 Mar 2024 18:54:16 +0100 Subject: [PATCH] =?UTF-8?q?ppparis:=20t=C3=A9l=C3=A9charge=20=C3=A0=20nouv?= =?UTF-8?q?eau=20un=20fichier=20corrompu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ppparis.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/ppparis.py b/ppparis.py index a67434e..7bd1b2b 100755 --- a/ppparis.py +++ b/ppparis.py @@ -76,6 +76,19 @@ def parse_pdf(filename, name, date): if found: print_output('') +def ocr(file,url,retry_on_failure=True): + cmd = ['ocrmypdf', '-l', 'eng+fra', '--output-type', 'pdfa', '--redo-ocr', '--skip-big', '500' , __DATA_DIR+filename, __DATA_DIR+filename] + logging.debug(f'Lancement de ocrmypdf: {cmd}') + try: + output = subprocess.check_output(cmd, stderr=subprocess.STDOUT) + except subprocess.CalledProcessError as exc: + if exc.returncode == 2 and retry_on_failure: + logging.warning('ATTENTION : Le fichier n\'est pas un PDF correct, nouvelle tentative de le télécharger') + download_file(url,file) + ocr(file,url,False) + elif not exc.returncode == 6: + logging.warning('ATTENTION : Impossible d\'OCRiser le document', exc.returncode, exc.output) + # Début du script parser = argparse.ArgumentParser(prog='ppparis.py', description='Télécharge les RAA de la Préfecture de police de Paris et recherche des mots-clés') parser.add_argument('-n', '--no-headless', action='store_true', help='ne lance pas le navigateur en mode headless (pratique pour débugguer ou en dehors d\'une CI)') @@ -158,12 +171,6 @@ for a in soup.find_all('a', href=True): logging.info(f'Nouveau fichier : {name} ({date}). URL : {url}') download_file(url, __DATA_DIR+filename) - cmd = ['ocrmypdf', '-l', 'eng+fra', '--output-type', 'pdfa', '--redo-ocr', '--skip-big', '500' , __DATA_DIR+filename, __DATA_DIR+filename] - logging.debug(f'Lancement de ocrmypdf: {cmd}') - try: - output = subprocess.check_output(cmd, stderr=subprocess.STDOUT) - except subprocess.CalledProcessError as exc: - if not exc.returncode == 6: - logging.warning('ATTENTION : Impossible d\'OCRiser le document', exc.returncode, exc.output) + ocr(__DATA_DIR+filename,url,True) parse_pdf(filename, name, date) -- GitLab