vpk icon indicating copy to clipboard operation
vpk copied to clipboard

Extracted and saved vpk with inconsistent tree_length

Open invokerbyxv opened this issue 11 months ago • 0 comments

I tried to do an extraction of the VPK file and repackaged it.

def extract():
    pak1 = vpk.open("E:/Program Files (x86)/Steam/steamapps/workshop/content/570/2967026351/2967026351.vpk")
    for filepath in pak1:
        print(filepath)
        file = pak1.get_file(filepath)
        path = os.path.join("./Lost_Temple", filepath)
        directory = os.path.dirname(path)
        if not os.path.exists(directory):
            os.makedirs(directory, exist_ok=True)
        file.save(path)

def pack_vpk():
    pak = vpk.new("./Lost_Temple")
    pak.save("E:/Program Files (x86)/Steam/steamapps/workshop/content/570/2967026351/2967026352.vpk")

But when I open 2967026352.vpk using GCFSpace, I get an error: Could not open 2967026352.vpk. Invalid file: The file map is not within mapping bounds.

Then I realized that the repackaged VPK tree_length didn't match the source file.

def print_vpk():
    pak1 = vpk.open("E:/Program Files (x86)/Steam/steamapps/workshop/content/570/2967026351/2967026351.vpk")
    # 242158
    print(pak1.tree_length)
    pak2 = vpk.open("E:/Program Files (x86)/Steam/steamapps/workshop/content/570/2967026351/2967026352.vpk")
    # 242114
    print(pak2.tree_length)

Did I do something wrong?

invokerbyxv avatar Dec 08 '24 05:12 invokerbyxv