diff --git a/pyproject.toml b/pyproject.toml index 824d1a9..5090385 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "weather_provider_api" -version = "2.53.0" +version = "2.54.0" description = "Weather Provider Libraries and API" authors = ["Verbindingsteam", "Raoul Linnenbank <58594297+rflinnenbank@users.noreply.github.com>"] license = "MPL-2.0" diff --git a/weather_provider_api/routers/weather/sources/knmi/client/arome_repository.py b/weather_provider_api/routers/weather/sources/knmi/client/arome_repository.py index 2067d90..2d85e9c 100644 --- a/weather_provider_api/routers/weather/sources/knmi/client/arome_repository.py +++ b/weather_provider_api/routers/weather/sources/knmi/client/arome_repository.py @@ -4,6 +4,7 @@ # SPDX-FileCopyrightText: 2019-2022 Alliander N.V. # SPDX-License-Identifier: MPL-2.0 import glob +import os import re import sys import tarfile @@ -178,7 +179,8 @@ def _process_downloaded_file(self, download_folder: Path, filename: str, predict def _clear_temp_folder(download_folder: Path): """A function that cleans up the temporary download folder to prevent issues with partially written files.""" logger.debug(f"Emptying the download folder: {download_folder}") - for existing_file in glob.glob(f"{download_folder}*.*"): + file_filter = f"{download_folder}/*.*" if str(download_folder)[-1] != "/" else f"{download_folder}*.*" + for existing_file in glob.glob(file_filter): try: # Try to delete: Path(existing_file).unlink() @@ -191,9 +193,13 @@ def _unpack_downloaded_file(download_folder: Path, file_name: str): """The function that unpacks downloaded files to prediction files.""" logger.info(f"Unpacking file: {file_name}") try: - tar_file = tarfile.open(download_folder.joinpath(file_name)) - tar_file.extractall(path=download_folder) - tar_file.close() + tar = tarfile.open(download_folder.joinpath(file_name)) + for member in tar.getmembers(): + if member.isreg(): # Only process files + member.name = os.path.basename( + member.name) # Remove the path to setting it to only the filename. + tar.extract(member, download_folder) # Extract the file to the download folder + tar.close() except Exception as e: logger.error(f"The tarfile [{file_name}] could not be unpacked!") raise e