fix e migliorie all'updater

This commit is contained in:
mac12m99
2019-08-08 12:09:45 +02:00
parent 4726019e4d
commit 6c3e9b4922
6 changed files with 50 additions and 31 deletions

View File

@@ -17,26 +17,35 @@ __language__ = __settings__.getLocalizedString
def get_addon_core():
return __settings__
def get_addon_version(with_fix=True):
'''
Devuelve el número de versión del addon, y opcionalmente número de fix si lo hay
Trova la versione dell'addon, senza usare le funzioni di kodi perchè non si aggiornano fino al riavvio
'''
info = open(os.path.join(get_runtime_path(), 'addon.xml')).read()
ver = re.search('plugin.video.kod.*?version="([^"]+)"', info).group(1)
if with_fix:
return __settings__.getAddonInfo('version') + get_addon_version_fix()
return ver + " " + get_addon_version_fix()
else:
return __settings__.getAddonInfo('version')
return ver
def get_addon_version_fix():
try:
last_fix_json = os.path.join(get_runtime_path(), 'last_fix.json') # información de la versión fixeada del usuario
if os.path.exists(last_fix_json):
with open(last_fix_json, 'r') as f: data=f.read(); f.close()
fix = re.findall('"fix_version"\s*:\s*(\d+)', data)
if fix:
return '.fix%s' % fix[0]
except:
pass
return ''
if not dev_mode():
try:
sha = open(os.path.join(get_runtime_path(), 'last_commit.txt')).readline()
return sha[:7]
except:
return '??'
else:
return 'DEV'
def dev_mode():
r = os.path.isdir(get_runtime_path() + '/.git')
return r
def get_platform(full_version=False):
"""

View File

@@ -64,8 +64,7 @@ def run(item=None):
else:
item = Item(channel="channelselector", action="getmainlist", viewmode="movie")
if not config.get_setting('show_once'):
if not os.path.isdir(config.get_runtime_path() + '/.git'):
logger.info("DEV MODE OFF")
if not config.dev_mode():
from platformcode import updater
updater.calcCurrHash()
from platformcode import xbmc_videolibrary

View File

@@ -3,7 +3,6 @@ import hashlib
import io
import os
import shutil
import zipfile
from core import httptools, filetools, downloadtools
from core.ziptools import ziptools
@@ -20,7 +19,7 @@ _hdr_pat = re.compile("^@@ -(\d+),?(\d+)? \+(\d+),?(\d+)? @@.*")
branch = 'stable'
user = 'kodiondemand'
repo = 'addon'
addonDir = xbmc.translatePath("special://home/addons/") + "plugin.video.kod/"
addonDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + '/'
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"
@@ -73,7 +72,10 @@ def check_addon_init():
for c in reversed(commits[:pos]):
commit = httptools.downloadpage(c['url']).data
commitJson = json.loads(commit)
logger.info('aggiornando a' + commitJson['sha'])
# evitiamo di applicare i merge commit
if 'Merge' in commitJson['commit']['message']:
continue
logger.info('aggiornando a ' + commitJson['sha'])
alreadyApplied = True
for file in commitJson['files']:
@@ -86,9 +88,13 @@ def check_addon_init():
text = ""
try:
localFile = open(addonDir + file["filename"], 'r+')
for line in localFile:
text += line
text = localFile.read()
except IOError: # nuovo file
# crea le cartelle se non esistono
dirname = os.path.dirname(addonDir + file["filename"])
if not os.path.exists(dirname):
os.makedirs(dirname)
localFile = open(addonDir + file["filename"], 'w')
patched = apply_patch(text, (file['patch']+'\n').encode('utf-8'))
@@ -101,13 +107,22 @@ def check_addon_init():
alreadyApplied = False
else: # nel caso ci siano stati problemi
logger.info('lo sha non corrisponde, scarico il file')
try:
filetools.remove(addonDir + file["filename"])
except:
pass
downloadtools.downloadfile(file['raw_url'], addonDir + file['filename'],
silent=True, continuar=True)
silent=True, continuar=True, resumir=False)
else: # è un file NON testuale, lo devo scaricare
# se non è già applicato
if not (filetools.isfile(addonDir + file['filename']) and getSha(
filetools.read(addonDir + file['filename']) == file['sha'])):
downloadtools.downloadfile(file['raw_url'], addonDir + file['filename'], silent=True, continuar=True)
try:
filetools.remove(addonDir + file["filename"])
except:
pass
downloadtools.downloadfile(file['raw_url'], addonDir + file['filename'], silent=True,
continuar=True, resumir=False)
alreadyApplied = False
elif file['status'] == 'removed':
try: