"""Изменяет формат "поделиться" "selectable_text": { "enabled": true, "format": { "share_channel_text": "Канал: «%1$s»\n%2$schannel/%3$d", "share_collection_text": "Коллекция: «%1$s»\n%2$scollection/%3$d", "share_profile_text": "Профиль пользователя «%1$s»\n%2$sprofile/%3$d", "share_release_text": "Релиз: «%1$s»\n%2$srelease/%3$d" } } """ __author__ = "wowlikon " __version__ = "1.0.0" from typing import Any, Dict from lxml import etree from pydantic import Field from utils.config import PatchTemplate DEFAULT_FORMATS = { "share_channel_text": "Канал: «%1$s»\n%2$schannel/%3$d", "share_collection_text": "Коллекция: «%1$s»\n%2$scollection/%3$d", "share_profile_text": "Профиль пользователя «%1$s»\n%2$sprofile/%3$d", "share_release_text": "Релиз: «%1$s»\n%2$srelease/%3$d", } class Patch(PatchTemplate): priority: int = Field(frozen=True, exclude=True, default=0) format: Dict[str, str] = Field( DEFAULT_FORMATS, description="Строки для замены в `strings.xml`" ) def apply(self, base: Dict[str, Any]) -> bool: file_path = "./decompiled/res/values/strings.xml" parser = etree.XMLParser(remove_blank_text=True) tree = etree.parse(file_path, parser) root = tree.getroot() # Обновляем значения for string in root.findall("string"): name = string.get("name") if name in self.format: string.text = self.format[name] # Сохраняем обратно tree.write(file_path, encoding="utf-8", xml_declaration=True, pretty_print=True) return True