1
0
Fork 0
mirror of https://github.com/Radiquum/anixart-patcher.git synced 2025-09-04 02:05:33 +05:00
anixart-patcher/main.py

80 lines
2.6 KiB
Python

from scripts.download_tools import check_and_download_all_tools
from scripts.select_apk import get_apks, select_apk
from scripts.select_patches import apply_patches, get_patches, select_patches
from scripts.utils import check_java_version, compile_apk, decompile_apk, sign_apk, init_patch
from config import args, config, log, console
from time import time
import math
import yaml
def patch():
patches = get_patches()
patches = select_patches(patches)
statuses = apply_patches(patches)
statuses_ok = []
statuses_err = []
for status in statuses:
if status["status"]:
console.print(f"{status['name']}: ✔", style="bold green")
statuses_ok.append(status["name"])
else:
console.print(f"{status['name']}: ✘", style="bold red")
statuses_err.append(status["name"])
return patches, statuses_ok, statuses_err
if __name__ == "__main__":
check_and_download_all_tools()
check_java_version()
if args.init:
init_patch()
exit(0)
if not args.patch and not args.sign:
apks = get_apks()
if not apks:
log.fatal(f"apks folder is empty")
exit(1)
apk = select_apk(apks)
if not apk:
log.info("cancelled")
exit(0)
elif args.patch:
patch()
exit(0)
elif args.sign:
apkFileName = None
with open(
f"{config["folders"]["decompiled"]}/apktool.yml", "r", encoding="utf-8"
) as f:
data = yaml.load(f.read(), Loader=yaml.Loader)
apkFileName = data.get("apkFileName", None)
if not apkFileName:
log.fatal(
f"can't find apk file name in {config['folders']['decompiled']}/apktool.yml"
)
exit(1)
sign_apk(f"{apkFileName.removesuffix('.apk')}-patched.apk")
exit(0)
start_time = time()
if not args.no_decompile:
decompile_apk(apk)
patches, statuses_ok, statuses_err = patch()
if not args.no_compile:
compile_apk(f"{apk.removesuffix(".apk")}-patched.apk")
end_time = time()
if not args.no_compile:
sign_apk(f"{apk.removesuffix(".apk")}-patched.apk")
log.info("Finished")
log.info(
f"install this apk file: `{config["folders"]["dist"]}/{apk.removesuffix(".apk")}-patched-aligned-signed.apk`"
)
log.info(f"used and successful patches: {", ".join(statuses_ok)}")
log.info(f"used and unsuccessful patches: {", ".join(statuses_err)}")
log.info(f"time taken: {math.floor(end_time - start_time)}s")