phc: get_assets refactor (no need to copy assets)
This commit is contained in:
parent
c788c311b1
commit
b425c4d7e6
@ -22,7 +22,6 @@
|
||||
"""
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import tempfile
|
||||
import urllib.request
|
||||
from abc import ABC, abstractmethod
|
||||
@ -70,21 +69,25 @@ def make_stub_image(path, name):
|
||||
|
||||
@contextmanager
|
||||
def get_assets(names):
|
||||
"""Получение соответствия с расположением файлов картинок
|
||||
|
||||
Размер картинок нужно менять поэтому они всегда сохраняются во временные файлы.
|
||||
"""
|
||||
"""Получение соответствия с расположением файлов картинок"""
|
||||
|
||||
assets_dir = "assets"
|
||||
files = {}
|
||||
# поиск файлов (загрузка если их нет) и создание временных
|
||||
tempfiles = []
|
||||
|
||||
for asset in names:
|
||||
_, ext = os.path.splitext(asset)
|
||||
temppath = tempfile.mktemp(suffix=ext)
|
||||
# поиск файлов
|
||||
filepath = os.path.join(assets_dir, asset)
|
||||
if os.path.isfile(filepath):
|
||||
shutil.copyfile(filepath, temppath)
|
||||
else:
|
||||
files[asset] = filepath
|
||||
continue
|
||||
|
||||
# создание временного файла
|
||||
_, ext = os.path.splitext(asset)
|
||||
fd, temppath = tempfile.mkstemp(suffix=ext)
|
||||
os.close(fd)
|
||||
tempfiles.append(temppath)
|
||||
# попытка загрузки, если не получилось то создание заглушки
|
||||
if not download_asset(asset, temppath):
|
||||
make_stub_image(temppath, asset)
|
||||
files[asset] = temppath
|
||||
@ -92,7 +95,8 @@ def get_assets(names):
|
||||
# передача управления
|
||||
yield files
|
||||
# очистка
|
||||
for _, filename in files.items():
|
||||
del files
|
||||
for filename in tempfiles:
|
||||
try:
|
||||
os.remove(filename)
|
||||
except FileNotFoundError:
|
||||
|
Loading…
Reference in New Issue
Block a user