"""Заменяет сервер api "change_server": { "enabled": true, "server": "https://anixarts.0x174.su/patch" } """ __author__ = "wowlikon " __version__ = "1.0.0" import json from typing import Any, Dict import requests from pydantic import Field from tqdm import tqdm from utils.config import PatchTemplate class Patch(PatchTemplate): priority: int = Field(frozen=True, exclude=True, default=0) server: str = Field("https://anixarts.0x174.su/patch", description="URL сервера") def apply(self, base: Dict[str, Any]) -> bool: response = requests.get(self.server) # Получаем данные для патча assert ( response.status_code == 200 ), f"Failed to fetch data {response.status_code} {response.text}" new_api = json.loads(response.text) for item in new_api["modifications"]: # Применяем замены API tqdm.write(f"Изменение {item['file']}") filepath = ( "./decompiled/smali_classes2/com/swiftsoft/anixartd/network/api/" + item["file"] ) with open(filepath, "r") as f: content = f.read() with open(filepath, "w") as f: if content.count(item["src"]) == 0: tqdm.write(f"⚠ Не найдено {item['src']}") f.write(content.replace(item["src"], item["dst"])) tqdm.write( f"Изменение Github ссылки" ) # Обновление ссылки на поиск серверов в Github filepath = "./decompiled/smali_classes2/com/swiftsoft/anixartd/utils/anixnet/GithubPagesNetFetcher.smali" with open(filepath, "r") as f: content = f.read() with open(filepath, "w") as f: f.write( content.replace( 'const-string v1, "https://anixhelper.github.io/pages/urls.json"', f'const-string v1, "{new_api["gh"]}"', ) ) tqdm.write( "Удаление динамического выбора сервера" ) # Отключение автовыбора сервера filepath = "./decompiled/smali_classes2/com/swiftsoft/anixartd/DaggerApp_HiltComponents_SingletonC$SingletonCImpl$SwitchingProvider.smali" content = "" with open(filepath, "r") as f: for line in f.readlines(): if "addInterceptor" in line: continue content += line with open(filepath, "w") as f: f.write(content) return True