Untitled

 avatar
unknown
plain_text
16 days ago
3.3 kB
2
Indexable
import os
import sys
import json
import requests
from argparse import ArgumentParser

try:
    from utils import crypto
    from utils import data
    from utils.logger import Logger
    from utils.request import Request
except ImportError:
    from realme_ota.utils import crypto
    from realme_ota.utils import data
    from realme_ota.utils.request import Request
    from realme_ota.utils.logger import Logger

def save_to_txt(model, version, description_url, download_url, filename="ota_updates.txt"):
    """Функция для сохранения данных в текстовый файл"""
    with open(filename, "a", encoding="utf-8") as file:
        file.write("----------------------------------\n")
        file.write(f"*{model}*\n")
        file.write(f"Версия: {version}\n")
        file.write(f"Изменения: {description_url}\n")
        file.write(f"Ссылка: {download_url}\n")
        file.write("----------------------------------\n\n")

def main():
    parser = ArgumentParser()
    parser.add_argument("product_model", type=str, help="Модель устройства")
    parser.add_argument("ota_version", help="Версия OTA обновления")
    parser.add_argument("rui_version", type=int, choices=[1, 2, 3, 4, 5], help="Версия RealmeUI")
    parser.add_argument("nv_identifier", type=str, nargs='?', help="Идентификатор NV")
    args = parser.parse_args()

    logger = Logger(level=4)

    request = Request(
        req_version=1 if args.rui_version == 1 else 2,
        model=args.product_model,
        ota_version=args.ota_version,
        rui_version=args.rui_version,
        nv_identifier=args.nv_identifier,
    )

    logger.log(f"Загрузка данных для {args.product_model} (RealmeUI V{args.rui_version})")
    
    try:
        request.set_vars()
        req_body, req_hdrs, plain_body = request.set_body_headers()
    except Exception as e:
        logger.die(f"Ошибка при подготовке запроса: {e}", 2)

    try:
        response = requests.post(request.url, data=req_body, headers=req_hdrs, timeout=30)
        response.raise_for_status()
    except Exception as e:
        logger.die(f"Ошибка при запросе к серверу: {e}", 1)

    try:
        json_response = json.loads(response.content)
        decrypted_content = json.loads(request.decrypt(json_response[request.resp_key]))
    except Exception as e:
        logger.die(f"Ошибка при обработке ответа: {e}", 2)
    
    try:
        model = args.product_model
        version = decrypted_content.get("versionName", "Неизвестно")
        description_url = decrypted_content.get("description", {}).get("url", "Нет данных")
        download_url = decrypted_content.get("components", [{}])[0].get("componentPackets", {}).get("url", "Нет данных")
        
        save_to_txt(model, version, description_url, download_url)
        logger.log("Данные успешно записаны в файл 'ota_updates.txt'")
    except Exception as e:
        logger.die(f"Ошибка при обработке данных: {e}", 1)

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