updater: possibile fix windows

This commit is contained in:
mac12m99
2019-10-30 14:23:10 +01:00
committed by marco
parent 0561948cf8
commit a5b25f0dba
+19 -42
View File
@@ -5,14 +5,14 @@ import os
import shutil import shutil
from cStringIO import StringIO from cStringIO import StringIO
from core import httptools, filetools, downloadtools from core import httptools, filetools
from core.ziptools import ziptools
from platformcode import logger, platformtools from platformcode import logger, platformtools
import json import json
import xbmc import xbmc
import re import re
import xbmcaddon import xbmcaddon
from lib import githash from lib import githash
import urllib
addon = xbmcaddon.Addon('plugin.video.kod') addon = xbmcaddon.Addon('plugin.video.kod')
@@ -21,7 +21,7 @@ _hdr_pat = re.compile("^@@ -(\d+),?(\d+)? \+(\d+),?(\d+)? @@.*")
branch = 'master' branch = 'master'
user = 'kodiondemand' user = 'kodiondemand'
repo = 'addon' repo = 'addon'
addonDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + '/' addonDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))).replace('\\', '/') + '/'
maxPage = 5 # le api restituiscono 30 commit per volta, quindi se si è rimasti troppo indietro c'è bisogno di andare avanti con le pagine maxPage = 5 # le api restituiscono 30 commit per volta, quindi se si è rimasti troppo indietro c'è bisogno di andare avanti con le pagine
trackingFile = "last_commit.txt" trackingFile = "last_commit.txt"
@@ -109,15 +109,12 @@ def check_addon_init():
alreadyApplied = False alreadyApplied = False
else: # nel caso ci siano stati problemi else: # nel caso ci siano stati problemi
logger.info('lo sha non corrisponde, scarico il file') logger.info('lo sha non corrisponde, scarico il file')
remove(addonDir + file["filename"]) localFile.close()
downloadtools.downloadfile(file['raw_url'], addonDir + file['filename'], urllib.urlretrieve(file['raw_url'], os.path.join(addonDir, file['filename']))
silent=True, continuar=True, resumir=False)
else: # è un file NON testuale, lo devo scaricare else: # è un file NON testuale, lo devo scaricare
# se non è già applicato # se non è già applicato
if not (filetools.isfile(addonDir + file['filename']) and getSha(addonDir + file['filename']) == file['sha']): if not (filetools.isfile(addonDir + file['filename']) and getSha(addonDir + file['filename']) == file['sha']):
remove(addonDir + file["filename"]) urllib.urlretrieve(file['raw_url'], os.path.join(addonDir, file['filename']))
downloadtools.downloadfile(file['raw_url'], addonDir + file['filename'], silent=True,
continuar=True, resumir=False)
alreadyApplied = False alreadyApplied = False
elif file['status'] == 'removed': elif file['status'] == 'removed':
remove(addonDir+file["filename"]) remove(addonDir+file["filename"])
@@ -237,7 +234,6 @@ def updateFromZip():
remove(localfilename) remove(localfilename)
removeTree(destpathname + "addon-" + branch) removeTree(destpathname + "addon-" + branch)
import urllib
urllib.urlretrieve(remotefilename, localfilename, urllib.urlretrieve(remotefilename, localfilename,
lambda nb, bs, fs, url=remotefilename: _pbhook(nb, bs, fs, url, dp)) lambda nb, bs, fs, url=remotefilename: _pbhook(nb, bs, fs, url, dp))
@@ -260,6 +256,7 @@ def updateFromZip():
# puliamo tutto # puliamo tutto
removeTree(addonDir) removeTree(addonDir)
xbmc.sleep(1000)
rename(destpathname + "addon-" + branch, addonDir) rename(destpathname + "addon-" + branch, addonDir)
@@ -275,34 +272,25 @@ def updateFromZip():
def remove(file): def remove(file):
if os.path.isfile(file): if os.path.isfile(file):
removed = False try:
while not removed: os.remove(file)
try: except:
os.remove(file) logger.info('File ' + file + ' NON eliminato')
removed = True
except:
logger.info('File ' + file + ' NON eliminato')
def removeTree(dir): def removeTree(dir):
if os.path.isdir(dir): if os.path.isdir(dir):
removed = False try:
while not removed: shutil.rmtree(dir)
try: except:
shutil.rmtree(dir) logger.info('Cartella ' + dir + ' NON eliminata')
removed = True
except:
logger.info('Cartella ' + dir + ' NON eliminato')
def rename(dir1, dir2): def rename(dir1, dir2):
renamed = False try:
while not renamed: filetools.rename(dir1, dir2)
try: except:
filetools.rename(dir1, dir2) logger.info('cartella ' + dir1 + ' NON rinominata')
renamed = True
except:
logger.info('cartella ' + dir1 + ' NON rinominata')
# https://stackoverflow.com/questions/3083235/unzipping-file-results-in-badzipfile-file-is-not-a-zip-file # https://stackoverflow.com/questions/3083235/unzipping-file-results-in-badzipfile-file-is-not-a-zip-file
@@ -332,14 +320,3 @@ def _pbhook(numblocks, blocksize, filesize, url, dp):
except: except:
percent = 90 percent = 90
dp.update(percent) dp.update(percent)
def remove(file):
if os.path.isfile(file):
removed = False
while not removed:
try:
os.remove(file)
removed = True
except:
logger.info('File ' + file + ' NON eliminato')