#!/usr/bin/python3 # Author: le_hibou # Version: 1.0.0 import zipfile import glob import os import sys import argparse import pathlib whiteList = [] whiteList.append("AshAuryn.AshAuryn's_174_Asymmetry_Morphs_for_Mouth.2.var") whiteList.append("AshAuryn.Pose_Tools.4.var") whiteList.append("AshAuryn.Sexpressions.5.var") whiteList.append("cotyounoyume.ExpressionBlushingAndTears.33.var") whiteList.append("cotyounoyume.ExpressionBlushingAndTears.34.var") whiteList.append("cotyounoyume.ExpressionBlushingAndTears.35.var") whiteList.append("cotyounoyume.ExpressionBlushingAndTears.36.var") whiteList.append("cotyounoyume.ExpressionBlushingAndTears.37.var") whiteList.append("kemenate.Morphs.10.var") whiteList.append("Oeshii.ReloadedMorphs.1.var") whiteList.append("SPQR.SPQRAlive.40.var") whiteList.append("V2.___UniversalMorphCollection___.100.var") whiteList.append("vamX.1.29.var") whiteList.append("vamX.Base.1.var") whiteList.append("vecterror._MorphCollection_.26.var") def logerror(message): print("ERROR: "+message, file=sys.stderr, flush=True) argParser = argparse.ArgumentParser(prog='morphbloatscanner.py', description='List Virt-a-mate VAR files that have too many morphs from a given directory') argParser.add_argument("-m", "--max", type=int, default=500, help="maximum number of morphs by VAR allowed") argParser.add_argument("-p", "--path", type=pathlib.Path, default='.', help="path to VAR folder") args = argParser.parse_args() print() print("VAR files with more than %i morphs will be listed" % args.max) print() vars = glob.glob(str(args.path) + "/**/*.var", recursive = True) for var in vars: head_tail = os.path.split(var) varFilename = head_tail[1] if (varFilename not in whiteList): # print("VAR: "+varFilename) varMorphCount = 0 try: with zipfile.ZipFile(var) as myzip: for file in myzip.namelist(): filename = file.split("/")[-1].lower() if (file.lower().find("custom/atom/person/morphs") != -1): # print(" - FOUND MORPH: "+file.lower() + " in " + var) varMorphCount += 1 myzip.close() except Exception as e: logerror(var+": "+str(e)) if (varMorphCount >= args.max): print(varFilename + " has many morphs: " + str(varMorphCount))