From 436e3974182296009aea727c95521748621e15b6 Mon Sep 17 00:00:00 2001 From: Bulat Kurbanov Date: Sun, 24 Apr 2022 23:58:26 +0300 Subject: [PATCH] Fix exception catching --- src/app/services/fl_downloader.py | 11 +++++++++-- src/app/services/utils.py | 3 ++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/app/services/fl_downloader.py b/src/app/services/fl_downloader.py index cbc5b38..91d5f11 100644 --- a/src/app/services/fl_downloader.py +++ b/src/app/services/fl_downloader.py @@ -1,5 +1,6 @@ import asyncio from typing import Optional, AsyncIterator, cast +import zipfile import aiofiles import aiofiles.os @@ -133,7 +134,13 @@ class FLDownloader(BaseDownloader): ) return data - except (NotSuccess, ReceivedHTML, ConvertationError, FileNotFoundError): + except ( + NotSuccess, + ReceivedHTML, + ConvertationError, + FileNotFoundError, + ValueError, + ): continue tasks_ = pending @@ -157,7 +164,7 @@ class FLDownloader(BaseDownloader): return await asyncio.get_event_loop().run_in_executor( process_pool_executor, unzip, temp_file.name, "fb2" ) - except FileNotFoundError: + except (FileNotFoundError, zipfile.BadZipFile): return None async def _download_with_converting( diff --git a/src/app/services/utils.py b/src/app/services/utils.py index 01f236b..3edd21d 100644 --- a/src/app/services/utils.py +++ b/src/app/services/utils.py @@ -22,9 +22,10 @@ def remove_temp_file(filename: str) -> bool: def unzip(temp_zipfile: str, file_type: str) -> Optional[str]: + zip_file = zipfile.ZipFile(temp_zipfile) + result = tempfile.NamedTemporaryFile(delete=False) - zip_file = zipfile.ZipFile(temp_zipfile) for name in zip_file.namelist(): # type: str if file_type.lower() in name.lower() or name.lower() == "elector": with zip_file.open(name, "r") as internal_file: