что-то делал с модами (не доделал)

This commit is contained in:
Евгений Храмов 2023-05-21 21:56:14 +03:00
parent a35018b264
commit 4760700190

89
hlna.py

@ -6,15 +6,18 @@ import zlib
import struct
import logging
import datetime
import requests
import subprocess
import yaml
import click
import colorama
import hlnaui
from pathlib import Path
from rcon.source import Client
from PyQt6.QtWidgets import QApplication, QWidget, QMainWindow, QLabel, QPushButton
from PyQt6 import QtWidgets
home_dir = Path.home()
@ -501,38 +504,75 @@ WantedBy=default.target
@hlna.command(help='Скачивание и установка модов <hlna ark -m all -i 111111111>')
@click.argument('g', nargs=1)
@click.option('-m', default='all', help="Название карты для запуска или all для запуска всех карт")
@click.option("-i/-u", default=True, help="-i установить моды, -u удалить моды")
@click.option("-i/-u", default=True, help="-i установить/обновить моды, -u удалить моды")
@click.argument('id_mods_ark', nargs=-1)
def mod(g, m, i, id_mods_ark):
if g == "ark":
id_game_workshop = "346110"
if not os.path.isdir(dir_mods_ark):
create_dir(dir_mods_ark)
id_game_workshop = "346110"
id_mods_ark = id_mods_ark[0].split(',')
for id_mod in id_mods_ark:
dir_ark_mods = f"{dir_mods_ark}/{id_mod}"
if i:
os.system(f"steamcmd +login anonymous +workshop_download_item {id_game_workshop} {id_mod} +quit")
modextract(id_mod, id_game_workshop, dir_ark_mods)
if not os.path.isfile(f"{dir_ark_mods}.mod"):
if i:
moddownload(id_mod, id_game_workshop, dir_ark_mods)
else:
os.system(f"rm -rf {dir_ark_mods}")
print_line(f"{dir_ark_mods} удалён")
os.system(f"rm {dir_mods_ark}/{id_mod}.mod")
print_line(f"{dir_mods_ark}/{id_mod}.mod удалён")
os.system(f"mv {dir_workshop_ark}/appworkshop_{id_game_workshop}.acf {dir_ark_mods}/appworkshop_{id_game_workshop}.acf")
else:
os.system(f"rm -rf {dir_ark_mods}")
print_line(f"{dir_ark_mods} удалён")
os.system(f"rm {dir_mods_ark}/{id_mod}.mod")
print_line(f"{dir_mods_ark}/{id_mod}.mod удалён")
os.system(f"mv {dir_workshop_ark}/appworkshop_{id_game_workshop}.acf {dir_ark_mods}")
modupdate(g, m, id_mod, dir_ark_mods)
def modupdate(dir_ark_mods, id_game_workshop):
if os.path.exists(f"{dir_ark_mods}/appworkshop_{id_game_workshop}.acf"):
# тут будет проверка необходимости обновления
def modupdate(g, m, id_mod, dir_ark_mods):
if g == "ark":
if not os.path.isfile(os.path.join(dir_ark_mods, f"appworkshop_{id_mod}.acf")):
return
with open(os.path.join(dir_ark_mods, f"appworkshop_{id_mod}.acf"), "r") as f:
content = f.readlines()
content = "".join(content)
locale_date = ""
for line in content.split("\n"):
if '\t"WorkshopItemsInstalled"' in line:
for line in content.split("\n"):
if f'\t\t"{id_mod}"' in line:
locale_date = line.split('"')[5]
if '}' in line:
break
break
data = {
'itemcount': 1,
'publishedfileids[0]': id_mod
}
zapros = requests.post('http://api.steampowered.com/ISteamRemoteStorage/GetPublishedFileDetails/v1', data=data)
json_zapros = zapros.json()
steam_date = json_zapros['response']['publishedfiledetails'][0]['time_updated']
if steam_date and locale_date == steam_date:
return
if steam_date and locale_date != steam_date:
print_line("хз")
def modupdateall():
for file in os.listdir(dir_mods_ark):
if os.path.isfile(os.path.join(dir_mods_ark, file)):
if file.endswith('.mod'):
print(file)
def modextract(id_mod, id_game_workshop, dir_ark_mods):
def moddownload(id_mod, id_game_workshop, dir_ark_mods):
"""Распаковывает файлы мода и создаёт .mod файл для него"""
dir_steam_workshop = f"{dir_workshop_ark}/content/{id_game_workshop}/{id_mod}/WindowsNoEditor"
dir_extract = dir_ark_mods
if id_mod == "111111111":
return
os.system(f"steamcmd +login anonymous +workshop_download_item {id_game_workshop} {id_mod} +quit")
try:
for curdir, subdirs, files in os.walk(os.path.join(dir_steam_workshop)):
for file in files:
@ -860,27 +900,18 @@ create_dir(dir_unit)
create_dir(dir_logs)
class MainWindow(QMainWindow):
class HlnaApp(QtWidgets.QMainWindow, hlnaui.Ui_MainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("HLN-A")
button = QPushButton("Выход")
button.setCheckable(True)
button.clicked.connect(self.button_click)
self.setCentralWidget(button)
def button_click(self):
exit()
self.setupUi(self)
def hlnag():
if len(sys.argv) > 1:
hlna()
else:
app = QApplication(sys.argv)
hlnag_gui_window = MainWindow()
hlnag_gui_window.show()
app = QtWidgets.QApplication(sys.argv)
window = HlnaApp()
window.show()
sys.exit(app.exec())