Skip to content

Extracted and saved vpk with inconsistent tree_length #35

@invokerbyxv

Description

@invokerbyxv

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions