def non_recursive(scene_file):
with open(scene_file, 'r', encoding='utf-8') as file:
data = json.load(file)
new_scene_data = {}
for data_k,data_v in data.items():
if data_k == 'atoms':
new_atoms = []
atoms = data_v
for atom in atoms:
temp_dict = {}
for atom_k, atom_v in atom.items():
if atom_k == 'storables':
storables = atom_v
new_storables = []
for storable in storables:
subtemp_dict = {}
for storable_k, storable_v in storable.items():
if isinstance(storable_v, str):
if ':/' in storable_v:
new_value = seeker_and_downloader(storable_v)
subtemp_dict[storable_k] = new_value
else:
subtemp_dict[storable_k] = storable_v
elif isinstance(storable_v, list):
sublist = []
for item in storable_v:
try:
item_id = item['id']
except KeyError:
try:
item_id = item['uid']
except KeyError:
item_id = item['url']
new_plugin = {}
for plugin_k, plugin_v in item.items():
if ':/' in plugin_v:
new_value = seeker_and_downloader(item_id)
new_plugin[plugin_k] = plugin_v
else:
new_plugin[plugin_k] = plugin_v
sublist.append(new_plugin)
subtemp_dict[storable_k] = sublist
elif isinstance(storable_v, dict):
subdict = {}
for sub_k,sub_v in storable_v.items():
if isinstance(sub_v, dict):
subsubdict = {}
for k,v in sub_v.items():
if ':/' in v:
new_v = seeker_and_downloader(v)
subsubdict[k] = new_v
else:
subsubdict[k] = v
subdict[sub_k] = subsubdict
elif isinstance(sub_v, str):
if ':/' in sub_v:
new_value = seeker_and_downloader(sub_v)
subdict[sub_k] = new_value
else:
subdict[sub_k] = sub_v
elif isinstance(sub_v, list):
# Тут обычно ничего интересного нет, но мало ли...
subdict[sub_k] = sub_v
else:
subdict[sub_k] = sub_v
subtemp_dict[storable_k] = subdict
else:
subtemp_dict[storable_k] = storable_v
new_storables.append(subtemp_dict)
temp_dict[atom_k] = new_storables
else:
temp_dict[atom_k] = atom_v
new_atoms.append(temp_dict)
new_scene_data[data_k] = new_atoms
else:
new_scene_data[data_k] = data_v
#создаем исправленный под локальный путь апперанс-файл
new_scene_file = f'new_{scene_file}'
with open(new_scene_file, 'w', encoding='utf-8') as file:
json.dump(new_scene_data, file, indent=4)
#создаем картинку к новому апперансу
scene_image_file = scene_file.replace('.json', '.jpg')
scene_image_file_name = scene_image_file.split('.')[0]
scene_image_file_extension = scene_image_file.split('.')[-1]
new_scene_image_file = f'new_{scene_image_file_name}.{scene_image_file_extension}'
shutil.copy(scene_image_file, new_scene_image_file)