2025-07-01
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# ##### BEGIN GPL LICENSE BLOCK #####
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ##### END GPL LICENSE BLOCK #####
|
||||
|
||||
"""Functions for background processes.
|
||||
Not used directly in BlenderKit addon, but in BlenderKit background processes.
|
||||
"""
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
import addon_utils # type: ignore
|
||||
|
||||
from . import client_lib, download, paths
|
||||
|
||||
|
||||
bk_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def download_asset_file(asset_data, resolution="blend", api_key=""):
|
||||
"""This is a simple non-threaded way to download files for background thumbnail rerender and others."""
|
||||
|
||||
# make sure BlenderKit is enabled, needed for downloading.
|
||||
addon_utils.enable(
|
||||
"blenderkit", default_set=True, persistent=True, handle_error=None
|
||||
)
|
||||
|
||||
file_names = paths.get_download_filepaths(asset_data, resolution)
|
||||
if len(file_names) == 0:
|
||||
return None
|
||||
file_name = file_names[0]
|
||||
if download.check_existing(asset_data, resolution=resolution):
|
||||
# this sends the thread for processing, where another check should occur, since the file might be corrupted.
|
||||
bk_logger.debug("not downloading, already in db")
|
||||
return file_name
|
||||
|
||||
res_file_info, resolution = paths.get_res_file(asset_data, resolution)
|
||||
response = client_lib.blocking_file_download(
|
||||
str(res_file_info["url"]), filepath=file_name, api_key=api_key
|
||||
)
|
||||
return file_name
|
||||
|
||||
|
||||
def delete_unfinished_file(file_name):
|
||||
"""Deletes download if it wasn't finished. If the directory it's containing is empty, it also removes the directory."""
|
||||
try:
|
||||
os.remove(file_name)
|
||||
except Exception as e:
|
||||
bk_logger.error(f"{e}")
|
||||
asset_dir = os.path.dirname(file_name)
|
||||
if len(os.listdir(asset_dir)) == 0:
|
||||
os.rmdir(asset_dir)
|
||||
return
|
||||
Reference in New Issue
Block a user