что-то делал с модами (не доделал)
This commit is contained in:
parent
a35018b264
commit
4760700190
89
hlna.py
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())
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user