Change Lotus Prices

Enter the path to your Lotus assort.db file and and a multiplier you would like to adjust all prices buy. Effects RUB, USD, and Euro prices.
 avatar
unknown
python
a year ago
3.2 kB
15
Indexable
import json
import shutil
import os
import re

def modify_json_file_interactive():
    def get_valid_input(prompt, type_func, error_message):
        while True:
            try:
                return type_func(input(prompt))
            except ValueError:
                print(error_message)

    # Ask for the JSON file path or use the default if none provided
    default_file_path = "C:\\Singleplayer Tarkov\\SPT 3.8.1\\user\\mods\\Lotus\\db\\assort.json"
    file_path = input(f"Enter the path to the JSON file (press enter to use default {default_file_path}): ")
    if not file_path:
        file_path = default_file_path

    # Ask for the multiplier value
    multiplier = get_valid_input("Enter the multiplier to apply to the count values: ", float, "Invalid multiplier. Please enter a numeric value.")

    # Tpl values to check
    tpl_values = ["5696686a4bdc2da3298b456a", "5449016a4bdc2d6f028b456f", "569668774bdc2da2298b4568"]

    changes_count = 0  # Track the number of changes made

    # Read the JSON file as plain text
    try:
        with open(file_path, 'r') as file:
            lines = file.readlines()
    except Exception as e:
        print(f"Failed to open or read JSON file: {str(e)}")
        return

    i = 0
    while i < len(lines):
        line = lines[i].strip()
        if any(tpl in line for tpl in tpl_values):
            # Check if the next line contains "count"
            if i + 1 < len(lines) and '"count":' in lines[i + 1]:
                count_line = lines[i + 1]
                # Extract the count value, modify it, and replace the line
                count = int(re.search(r'"count": (\d+)', count_line).group(1))
                new_count = int(count * multiplier)
                new_count_line = re.sub(r'(\d+)', str(new_count), count_line)
                lines[i + 1] = new_count_line
                changes_count += 1
        i += 1

    print(f"Total changes made: {changes_count}")

    # Determine how to save the modified data
    print("How would you like to handle the modified file?")
    print("1: Overwrite the original file")
    print("2: Save to a new file")
    print("3: Backup the original and overwrite")
    choice = input("Enter your choice (1, 2, or 3): ")

    # Save the modified lines back to a file based on user choice
    if choice == '1':
        with open(file_path, 'w') as file:
            file.writelines(lines)
        print("Original file has been overwritten.")
    elif choice == '2':
        new_file_path = file_path.replace(".json", "_edited.json")
        with open(new_file_path, 'w') as file:
            file.writelines(lines)
        print(f"Data saved to new file: {new_file_path}")
    elif choice == '3':
        backup_path = file_path.replace(".json", "_backup.json")
        import shutil
        shutil.copy(file_path, backup_path)
        with open(file_path, 'w') as file:
            file.writelines(lines)
        print(f"Original file backed up to: {backup_path} and overwritten.")
    else:
        print("Invalid choice, exiting without saving changes.")

def main():
    modify_json_file_interactive()


if __name__ == "__main__":
    main()
Editor is loading...
Leave a Comment