Skip to content

Instantly share code, notes, and snippets.

@nekochanfood
Created June 23, 2023 13:24
Show Gist options
  • Save nekochanfood/5ff5469961241e0f001678a816ced73a to your computer and use it in GitHub Desktop.
Save nekochanfood/5ff5469961241e0f001678a816ced73a to your computer and use it in GitHub Desktop.
UnityPackageにサムネを埋め込む
# python main.py -p XXXXXX.unitypackage -i XXXXXX.png
import argparse
import tempfile
import os
import sys
from shutil import unpack_archive
from shutil import make_archive
import stat
from PIL import Image
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("-p", type=str, default=0,
help="Path of UnityPackage")
parser.add_argument("-i", type=str, default=0,
help="Thumbnail Path")
args = parser.parse_args()
if(len(sys.argv) == 1):
print("no arguments")
exit()
temp_directory = tempfile.TemporaryDirectory()
patched_str = "PATCHED_"
try:
unpack_archive(filename=args.p, extract_dir=temp_directory.name, format="gztar")
except OSError:
print("Failed to Unpack")
exit()
imagePath = os.path.join(temp_directory.name,".icon.png")
# 128x128より上の解像度の画像を使うとどうなるかわかんないので強制的に128x128にしてる
img = Image.open(args.i)
if img.size[0] != 128 or img.size[1] != 128 :
img = img.resize(128,128)
img.save(imagePath)
unityPackageName = (patched_str + os.path.splitext(os.path.basename(args.p))[0])
unityPackageDir = os.path.dirname(args.p)
gztarPath = make_archive(base_name=unityPackageName,root_dir=temp_directory.name,format="gztar")
patchedUnityPackagePath = os.path.join(unityPackageDir,gztarPath.replace('.tar.gz', '') + ".unitypackage")
if os.path.isfile(patchedUnityPackagePath):
os.remove(patchedUnityPackagePath)
os.rename(gztarPath,patchedUnityPackagePath)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment