Написал простенький скриптик для обновления:
import urllib.request
import shutil
import os
import zipfile
import subprocess
from subprocess import Popen, PIPE
import os.path
import shlex
import time
if os.path.isfile('signalS'):
os.remove('signalS')
exit()
else:
open('signalS', "w").close()
while True:
if os.path.isfile('signalS'):
f = int(urllib.request.urlopen('https://raw.githubusercontent.com/Vladgobelen/NSQC/main/vers').read().decode('utf-8').strip())
f1 = int(urllib.request.urlopen('https://raw.githubusercontent.com/Vladgobelen/NSQC/main/versad').read().decode('utf-8').strip())
file = open('Interface/AddOns/NSQC/vers', 'r')
file1 = open('Interface/AddOns/NSQC/versad', 'r')
print(f,f1)
if f != int(file.readline().strip()) or f1 != int(file1.readline().strip()):
if os.path.isdir('temp'):
shutil.rmtree('temp/')
urllib.request.urlretrieve("https://github.com/Vladgobelen/NSQC/archive/refs/heads/main.zip", "main.zip")
archive = 'main.zip'
with zipfile.ZipFile(archive, 'r') as zip_file:
zip_file.extractall("temp")
file_source = 'temp/NSQC-main/'
file_destination = 'Interface/AddOns/NSQC/'
if not os.path.exists(file_destination):
os.mkdir(file_destination)
get_files = os.listdir(file_source)
shutil.copytree(file_source, file_destination,dirs_exist_ok=True)
if os.path.isfile('main.zip'):
os.remove('main.zip')
if os.path.isdir('temp'):
shutil.rmtree('temp/')
del f
del f1
time.sleep(10)
else:
break
На мой взгляд ну верно же все? Сравнивает версию с текущей, если отличается - обновляет. Логично? Но он этого не делает. Он один раз проверяет и дальше выдает версию, на которую обновил однажды. Почему? Ничего не понимаю.
Из интересного. Если изменить скрипт как угодно, например вписать или удалить принт - он тут же один раз сработает и штатно обновит все. Дальше продолжит работать вхолостую. Что за ересь?
Короче, сам нащупал рабочий вариант:
https://github.com/Vladgobelen/NSQCu/blob/main/run.py
Вместо роу, который кэшируется, я беру общую страницу:
f = urllib.request.urlopen(‘https://github.com/Vladgobelen/NSQC/blob/main/vers’).read().decode(‘utf-8’).strip()
И просто сравниваю ее с нужной мне строкой в файле. Если строка есть - все нормально, если строки нет, обновляем. Всем спасибо.
python