1
0
Fork 0
mirror of https://github.com/Radiquum/anixart-patcher.git synced 2025-09-05 10:45:32 +05:00

feat: add disable beta banner patch

This commit is contained in:
Kentai Radiquum 2025-08-31 21:48:59 +05:00
parent 4ec18d7dd4
commit 8498cace94
Signed by: Radiquum
GPG key ID: 858E8EE696525EED
4 changed files with 84 additions and 19 deletions

3
.gitignore vendored
View file

@ -6,4 +6,5 @@ tools
decompiled
dist
__pycache__
keystore.jks
keystore.jks
help

21
main.py
View file

@ -7,7 +7,14 @@ from config import log, console
from time import time
import math
import argparse
parser = argparse.ArgumentParser(prog='anixart patcher')
parser.add_argument("--no-decompile", action='store_true')
parser.add_argument("--no-compile", action='store_true')
if __name__ == "__main__":
args = parser.parse_args()
check_and_download_all_tools()
check_java_version()
@ -15,11 +22,15 @@ if __name__ == "__main__":
if not apks:
log.fatal(f"apks folder is empty")
exit(1)
apk = select_apk(apks)
if not apk:
log.info('cancelled')
exit(0)
start_time = time()
decompile_apk(apk)
if not args.no_decompile:
decompile_apk(apk)
patches = get_patches()
patches = select_patches(patches)
@ -35,8 +46,10 @@ if __name__ == "__main__":
console.print(f"{status['name']}: ✘", style="bold red")
statuses_err.append(status["name"])
compile_apk(f"{apk.removesuffix(".apk")}-patched.apk")
sign_apk(f"{apk.removesuffix(".apk")}-patched.apk")
if not args.no_compile:
compile_apk(f"{apk.removesuffix(".apk")}-patched.apk")
sign_apk(f"{apk.removesuffix(".apk")}-patched.apk")
end_time = time()
log.info("Finished")

View file

@ -0,0 +1,45 @@
"""Remove beta banner"""
priority = 0
import os
from tqdm import tqdm
from lxml import etree
from typing import TypedDict
class PatchConfig_DisableBetaBanner(TypedDict):
src: str
def apply(config: PatchConfig_DisableBetaBanner) -> bool:
xml_ns = {
"android": "http://schemas.android.com/apk/res/android",
"app": "http://schemas.android.com/apk/res-auto",
}
attributes = [
"paddingTop",
"paddingBottom",
"paddingStart",
"paddingEnd",
"layout_width",
"layout_height",
"layout_marginTop",
"layout_marginBottom",
"layout_marginStart",
"layout_marginEnd"
]
beta_banner_xml = f"{config['src']}/res/layout/item_beta.xml"
if os.path.exists(beta_banner_xml):
parser = etree.XMLParser(remove_blank_text=True)
tree = etree.parse(beta_banner_xml, parser)
root = tree.getroot()
for attr in attributes:
tqdm.write(f"set {attr} = 0.0dip")
root.set(f"{{{xml_ns['android']}}}{attr}", "0.0dip")
tree.write(beta_banner_xml, pretty_print=True, xml_declaration=True, encoding="utf-8")
return True

View file

@ -69,19 +69,25 @@ def apply_patches(patches: list[str]) -> list[PatchStatus]:
)
modules.append(Patch(name, module))
modules.sort(key=lambda x: x.package.priority, reverse=True)
for patch in tqdm(modules, colour="green", desc="patching apk"):
tqdm.write(f"patch apply: {patch.name}")
conf = {}
if os.path.exists(f"{config['folders']['patches']}/{patch.name}.config.json"):
with open(
f"{config['folders']['patches']}/{patch.name}.config.json",
"r",
encoding="utf-8",
) as conf:
conf = json.loads(conf.read())
conf["src"] = config["folders"]["decompiled"]
status = patch.apply(conf)
statuses.append({"name": patch.name, "status": status})
with tqdm(
total=len(modules),
unit="patch",
unit_divisor=1,
) as bar:
for patch in modules:
bar.set_description(f"{patch.name}")
conf = {}
if os.path.exists(f"{config['folders']['patches']}/{patch.name}.config.json"):
with open(
f"{config['folders']['patches']}/{patch.name}.config.json",
"r",
encoding="utf-8",
) as conf:
conf = json.loads(conf.read())
conf["src"] = config["folders"]["decompiled"]
status = patch.apply(conf)
statuses.append({"name": patch.name, "status": status})
bar.update()
return statuses