Revert "Merge branch 'stable' of https://github.com/kodiondemand/addon into stable"
This reverts commitcf50d10a00, reversing changes made to4a695c096c.
This commit is contained in:
@@ -3,7 +3,6 @@
|
|||||||
# Zip Tools
|
# Zip Tools
|
||||||
# --------------------------------------------------------------------------------
|
# --------------------------------------------------------------------------------
|
||||||
|
|
||||||
import io
|
|
||||||
import os
|
import os
|
||||||
import zipfile
|
import zipfile
|
||||||
|
|
||||||
@@ -18,7 +17,6 @@ class ziptools:
|
|||||||
if not dir.endswith(':') and not os.path.exists(dir):
|
if not dir.endswith(':') and not os.path.exists(dir):
|
||||||
os.mkdir(dir)
|
os.mkdir(dir)
|
||||||
|
|
||||||
file = io.FileIO(file)
|
|
||||||
zf = zipfile.ZipFile(file)
|
zf = zipfile.ZipFile(file)
|
||||||
if not folder_to_extract:
|
if not folder_to_extract:
|
||||||
self._createstructure(file, dir)
|
self._createstructure(file, dir)
|
||||||
|
|||||||
+92
-19
@@ -1,13 +1,11 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import hashlib
|
import hashlib
|
||||||
import io
|
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import zipfile
|
import zipfile
|
||||||
|
|
||||||
from core import httptools, filetools, downloadtools
|
from core import httptools, filetools, downloadtools
|
||||||
from core.ziptools import ziptools
|
from platformcode import logger, platformtools, config
|
||||||
from platformcode import logger, platformtools
|
|
||||||
import json
|
import json
|
||||||
import xbmc
|
import xbmc
|
||||||
import re
|
import re
|
||||||
@@ -64,7 +62,7 @@ def check_addon_init():
|
|||||||
else:
|
else:
|
||||||
# evitiamo che dia errore perchè il file è già in uso
|
# evitiamo che dia errore perchè il file è già in uso
|
||||||
localCommitFile.close()
|
localCommitFile.close()
|
||||||
calcCurrHash()
|
updateFromZip()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if pos > 0:
|
if pos > 0:
|
||||||
@@ -209,8 +207,7 @@ def getSha(fileText):
|
|||||||
|
|
||||||
|
|
||||||
def updateFromZip():
|
def updateFromZip():
|
||||||
dp = platformtools.dialog_progress_bg('Kodi on Demand', 'Aggiornamento in corso...')
|
platformtools.dialog_notification('Kodi on Demand', 'Aggiornamento in corso...')
|
||||||
dp.update(0)
|
|
||||||
|
|
||||||
remotefilename = 'https://github.com/' + user + "/" + repo + "/archive/" + branch + ".zip"
|
remotefilename = 'https://github.com/' + user + "/" + repo + "/archive/" + branch + ".zip"
|
||||||
localfilename = xbmc.translatePath("special://home/addons/") + "plugin.video.kod.update.zip"
|
localfilename = xbmc.translatePath("special://home/addons/") + "plugin.video.kod.update.zip"
|
||||||
@@ -218,7 +215,7 @@ def updateFromZip():
|
|||||||
logger.info("localfilename=%s" % localfilename)
|
logger.info("localfilename=%s" % localfilename)
|
||||||
|
|
||||||
import urllib
|
import urllib
|
||||||
urllib.urlretrieve(remotefilename, localfilename, lambda nb, bs, fs, url=remotefilename: _pbhook(nb, bs, fs, url, dp))
|
urllib.urlretrieve(remotefilename, localfilename)
|
||||||
|
|
||||||
# Lo descomprime
|
# Lo descomprime
|
||||||
logger.info("decompressione...")
|
logger.info("decompressione...")
|
||||||
@@ -234,23 +231,23 @@ def updateFromZip():
|
|||||||
logger.info(e)
|
logger.info(e)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
dp.update(95)
|
|
||||||
|
|
||||||
# puliamo tutto
|
# puliamo tutto
|
||||||
shutil.rmtree(addonDir)
|
shutil.rmtree(addonDir)
|
||||||
|
|
||||||
filetools.rename(destpathname + "addon-" + branch, addonDir)
|
filetools.rename(destpathname + "addon-" + branch, addonDir)
|
||||||
|
|
||||||
logger.info("Cancellando il file zip...")
|
# Borra el zip descargado
|
||||||
|
logger.info("kodiondemand.core.updater borra fichero...")
|
||||||
os.remove(localfilename)
|
os.remove(localfilename)
|
||||||
|
# os.remove(temp_dir)
|
||||||
|
platformtools.dialog_notification('Kodi on Demand', 'Aggiornamento completato!')
|
||||||
|
|
||||||
dp.update(100)
|
|
||||||
return hash
|
return hash
|
||||||
|
|
||||||
|
|
||||||
# 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
|
||||||
def fixZipGetHash(zipFile):
|
def fixZipGetHash(zipFile):
|
||||||
f = io.FileIO(zipFile, 'r+b')
|
f = open(zipFile, 'r+b')
|
||||||
data = f.read()
|
data = f.read()
|
||||||
pos = data.find(b'\x50\x4b\x05\x06') # End of central directory signature
|
pos = data.find(b'\x50\x4b\x05\x06') # End of central directory signature
|
||||||
hash = ''
|
hash = ''
|
||||||
@@ -268,10 +265,86 @@ def fixZipGetHash(zipFile):
|
|||||||
return str(hash)
|
return str(hash)
|
||||||
|
|
||||||
|
|
||||||
def _pbhook(numblocks, blocksize, filesize, url, dp):
|
class ziptools:
|
||||||
try:
|
def extract(self, file, dir, folder_to_extract="", overwrite_question=False, backup=False):
|
||||||
percent = min((numblocks*blocksize*90)/filesize, 100)
|
logger.info("file=%s" % file)
|
||||||
dp.update(percent)
|
logger.info("dir=%s" % dir)
|
||||||
except:
|
|
||||||
percent = 90
|
if not dir.endswith(':') and not os.path.exists(dir):
|
||||||
dp.update(percent)
|
os.mkdir(dir)
|
||||||
|
|
||||||
|
zf = zipfile.ZipFile(file)
|
||||||
|
if not folder_to_extract:
|
||||||
|
self._createstructure(file, dir)
|
||||||
|
num_files = len(zf.namelist())
|
||||||
|
|
||||||
|
for nameo in zf.namelist():
|
||||||
|
name = nameo.replace(':', '_').replace('<', '_').replace('>', '_').replace('|', '_').replace('"', '_').replace('?', '_').replace('*', '_')
|
||||||
|
logger.info("name=%s" % nameo)
|
||||||
|
if not name.endswith('/'):
|
||||||
|
logger.info("no es un directorio")
|
||||||
|
try:
|
||||||
|
(path, filename) = os.path.split(os.path.join(dir, name))
|
||||||
|
logger.info("path=%s" % path)
|
||||||
|
logger.info("name=%s" % name)
|
||||||
|
if folder_to_extract:
|
||||||
|
if path != os.path.join(dir, folder_to_extract):
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
os.makedirs(path)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
if folder_to_extract:
|
||||||
|
outfilename = os.path.join(dir, filename)
|
||||||
|
|
||||||
|
else:
|
||||||
|
outfilename = os.path.join(dir, name)
|
||||||
|
logger.info("outfilename=%s" % outfilename)
|
||||||
|
try:
|
||||||
|
if os.path.exists(outfilename) and overwrite_question:
|
||||||
|
from platformcode import platformtools
|
||||||
|
dyesno = platformtools.dialog_yesno("El archivo ya existe",
|
||||||
|
"El archivo %s a descomprimir ya existe" \
|
||||||
|
", ¿desea sobrescribirlo?" \
|
||||||
|
% os.path.basename(outfilename))
|
||||||
|
if not dyesno:
|
||||||
|
break
|
||||||
|
if backup:
|
||||||
|
import time
|
||||||
|
import shutil
|
||||||
|
hora_folder = "Copia seguridad [%s]" % time.strftime("%d-%m_%H-%M", time.localtime())
|
||||||
|
backup = os.path.join(config.get_data_path(), 'backups', hora_folder, folder_to_extract)
|
||||||
|
if not os.path.exists(backup):
|
||||||
|
os.makedirs(backup)
|
||||||
|
shutil.copy2(outfilename, os.path.join(backup, os.path.basename(outfilename)))
|
||||||
|
|
||||||
|
outfile = open(outfilename, 'wb')
|
||||||
|
outfile.write(zf.read(nameo))
|
||||||
|
except:
|
||||||
|
logger.error("Error en fichero " + nameo)
|
||||||
|
|
||||||
|
def _createstructure(self, file, dir):
|
||||||
|
self._makedirs(self._listdirs(file), dir)
|
||||||
|
|
||||||
|
def create_necessary_paths(filename):
|
||||||
|
try:
|
||||||
|
(path, name) = os.path.split(filename)
|
||||||
|
os.makedirs(path)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def _makedirs(self, directories, basedir):
|
||||||
|
for dir in directories:
|
||||||
|
curdir = os.path.join(basedir, dir)
|
||||||
|
if not os.path.exists(curdir):
|
||||||
|
os.mkdir(curdir)
|
||||||
|
|
||||||
|
def _listdirs(self, file):
|
||||||
|
zf = zipfile.ZipFile(file)
|
||||||
|
dirs = []
|
||||||
|
for name in zf.namelist():
|
||||||
|
if name.endswith('/'):
|
||||||
|
dirs.append(name)
|
||||||
|
|
||||||
|
dirs.sort()
|
||||||
|
return dirs
|
||||||
Reference in New Issue
Block a user