Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from os import mkdir, chdir
- from json import loads, dumps
- from random import choice
- from string import digits, ascii_lowercase, punctuation, ascii_letters
- import re
- import traceback
- import logging
- class Item(object):
- def __init__(self):
- self.items_db = loads(open("items.json", "rb").read())
- self.bundles_db = loads(open("Windows.json", "rb").read())
- def Add(self, item_id):
- self.item = self.items_db[item_id]
- self.item_prefab = self.item["_props"]["Prefab"]["path"]
- self.item_dependencies = self.bundles_db[self.item_prefab]["Dependencies"]
- print("\n\t[+] New item: %s.\n\n\t\t[+] Name: %s.\n\t\t[+] Prefab: %s.\n\n" % (item_id, self.item["_name"], self.item_prefab))
- def GetAssetFolder(path):
- return "/".join(path.split("/")[0:-1]) + "/"
- def GetAssetPathByRoot(path, root):
- path = path.split("/")
- index = path.index(root)
- return "/".join(path[index:])
- def _get_asset_path_by_root_(path, root):
- path = path.split("/")
- index = path.index(root)
- return "/".join(path[index:])
- def _manifest_by_mask_(self):
- keys = list(self.manifest.keys())
- for key in keys:
- new_key = Item._get_asset_path_by_root_(key, self.item_root_folder)
- self.manifest[new_key] = self.manifest.pop(key)
- for prefab in self.manifest.keys():
- for dep in self.manifest[prefab]:
- if self.asset_folder in dep:
- new_dep = Item._get_asset_path_by_root_(dep, self.item_root_folder)
- index_dep = self.manifest[prefab].index(dep)
- self.manifest[prefab][index_dep] = new_dep
- for file in self.replace_file:
- new_file = Item._get_asset_path_by_root_(file, self.item_root_folder)
- self.replace_file[file] = new_file
- print(self.replace_file)
- for prefab in self.manifest:
- print("[+] Manifest for %s:" % (prefab))
- for dep in self.manifest[prefab]:
- print("\t%s" % (dep))
- def _manifest_(self):
- manifest = {self.item_prefab:[]}
- replace_file = {self.item_prefab: self.item_prefab}
- asset_folder = Item.GetAssetFolder(self.item_prefab)
- critical_deps = []
- for dep in self.item_dependencies:
- if asset_folder in dep:
- critical_deps.append(dep)
- replace_file[dep] = dep
- manifest[self.item_prefab].append(dep)
- for prefab in critical_deps:
- manifest[prefab] = []
- for dep in self.bundles_db[prefab]["Dependencies"]:
- manifest[prefab].append(dep)
- self.manifest = manifest
- self.replace_file = replace_file
- self.asset_folder = asset_folder
- self.item_root_folder = self.item_prefab.split("/")[-2]
- print("\n[+] Asset folder: %s\n" % (asset_folder))
- for prefab in manifest:
- print("[+] Manifest for %s\n" % (prefab))
- for dep in manifest[prefab]:
- print("\t%s" % (dep))
- print("\n")
- for path in replace_file:
- print("[+] Replace :", path)
- def Manifest(self):
- root_folder = self.item_prefab.split("/")[-2]
- asset_folder = Item.GetAssetFolder(self.item_prefab)
- item_prefab = Item.GetAssetPathByRoot(self.item_prefab, root_folder)
- manifest = {item_prefab:[]}
- critical_dep = []
- replace_file = {}
- for dep in self.item_dependencies:
- if asset_folder in dep:
- good_dep = Item.GetAssetPathByRoot(dep, root_folder)
- critical_dep.append(dep)
- manifest[item_prefab].append(good_dep)
- replace_file[dep] = good_dep
- else:
- manifest[item_prefab].append(dep)
- for cr_dep in critical_dep:
- good_cr_dep = Item.GetAssetPathByRoot(cr_dep, root_folder)
- item = Item()
- item.Add("5bf3e03b0db834001d2c4a9c")
- item._manifest_()
- item._manifest_by_mask_()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement