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