beta autoupdate addon still disabled

This commit is contained in:
cttynul
2019-05-05 17:56:35 +02:00
parent 58f24002b0
commit 0e8650f686
2 changed files with 161 additions and 8 deletions
+6 -6
View File
@@ -7,7 +7,7 @@ import os
import sys import sys
import urllib2 import urllib2
import time import time
import updater
from core import channeltools from core import channeltools
from core import scrapertools from core import scrapertools
from core import servertools from core import servertools
@@ -32,7 +32,6 @@ def start():
def run(item=None): def run(item=None):
logger.info() logger.info()
if not item: if not item:
# Extract item from sys.argv # Extract item from sys.argv
if sys.argv[2]: if sys.argv[2]:
@@ -60,7 +59,7 @@ def run(item=None):
from channels import side_menu from channels import side_menu
item= Item() item= Item()
item = side_menu.check_user_home(item) item = side_menu.check_user_home(item)
item.start = True; item.start = True
else: else:
item = Item(channel="channelselector", action="getmainlist", viewmode="movie") item = Item(channel="channelselector", action="getmainlist", viewmode="movie")
if not config.get_setting('show_once'): if not config.get_setting('show_once'):
@@ -76,6 +75,9 @@ def run(item=None):
logger.info("Item sin accion") logger.info("Item sin accion")
return return
if item.action == "update":
updater.update()
# Action for main menu in channelselector # Action for main menu in channelselector
elif item.action == "getmainlist": elif item.action == "getmainlist":
import channelselector import channelselector
@@ -117,10 +119,9 @@ def run(item=None):
# Action in certain channel specified in "action" and "channel" parameters # Action in certain channel specified in "action" and "channel" parameters
else: else:
# Entry point for a channel is the "mainlist" action, so here we check parental control # Entry point for a channel is the "mainlist" action, so here we check parental control
if item.action == "mainlist": if item.action == "mainlist":
#updater.checkforupdates() beta version checking for update, still disabled
# Parental control # Parental control
# If it is an adult channel, and user has configured pin, asks for it # If it is an adult channel, and user has configured pin, asks for it
@@ -128,7 +129,6 @@ def run(item=None):
tecleado = platformtools.dialog_input("", config.get_localized_string(60334), True) tecleado = platformtools.dialog_input("", config.get_localized_string(60334), True)
if tecleado is None or tecleado != config.get_setting("adult_password"): if tecleado is None or tecleado != config.get_setting("adult_password"):
return return
# # Actualiza el canal individual # # Actualiza el canal individual
# if (item.action == "mainlist" and item.channel != "channelselector" and # if (item.action == "mainlist" and item.channel != "channelselector" and
# config.get_setting("check_for_channel_updates") == True): # config.get_setting("check_for_channel_updates") == True):
+154 -1
View File
@@ -3,10 +3,14 @@
# Updater (kodi) # Updater (kodi)
# -------------------------------------------------------------------------------- # --------------------------------------------------------------------------------
import os import os, sys
import time import time
import threading import threading
import traceback import traceback
import urllib
import json
import xbmc
from platformcode import config, logger, platformtools from platformcode import config, logger, platformtools
@@ -16,6 +20,9 @@ from core import downloadtools
from core import ziptools from core import ziptools
from core import filetools from core import filetools
REMOTE_FILE = "https://github.com/kodiondemand/addon/archive/master.zip"
DESTINATION_FOLDER = xbmc.translatePath("special://home/addons") + "/plugin.video.kod"
REMOTE_VERSION_FILE = "https://raw.githubusercontent.com/kodiondemand/addon/master/version.json"
def check_addon_init(): def check_addon_init():
logger.info() logger.info()
@@ -69,7 +76,152 @@ def check_addon_init():
return return
def checkforupdates(plugin_mode=True):
logger.info("kodiondemand.core.updater checkforupdates")
response = urllib.urlopen(REMOTE_VERSION_FILE)
data = json.loads(response.read())
'''
{
"update": {
"name": "Kodi on Demand",
"tag": "1.0.0",
"version": "1000",
"date": "03/05/2019",
"changes": "Added Updater"
}
}
'''
# remote is addon version without dots
remote_version = data["update"]["version"]
# tag version is version with dots used to a betterview gui
tag_version = data["update"]["tag"]
logger.info("kodiondemand.core.updater version remota="+tag_version+" "+remote_version)
'''
# Lee el fichero con la versión instalada
localFileName = LOCAL_VERSION_FILE
logger.info("kodiondemand.core.updater fichero local version: "+localFileName)
infile = open( localFileName )
data = infile.read()
infile.close()
#logger.info("xml local="+data)
'''
path_local = xbmc.translatePath("special://home/addons/") + "plugin.video.kod/version.json"
data = json.loads(open(path_local).read())
version_local = data["update"]["version"]
tag_local = data["update"]["tag"]
logger.info("kodiondemand.core.updater version local="+tag_local+" "+version_local)
try:
numero_remote_version = int(remote_version)
numero_version_local = int(version_local)
except:
import traceback
logger.info(traceback.format_exc())
remote_version = ""
version_local = ""
if remote_version=="" or version_local=="":
arraydescargada = tag_version.split(".")
arraylocal = tag_local.split(".")
# local 2.8.0 - descargada 2.8.0 -> no descargar
# local 2.9.0 - descargada 2.8.0 -> no descargar
# local 2.8.0 - descargada 2.9.0 -> descargar
if len(arraylocal) == len(arraydescargada):
logger.info("caso 1")
hayqueactualizar = False
for i in range(0, len(arraylocal)):
print arraylocal[i], arraydescargada[i], int(arraydescargada[i]) > int(arraylocal[i])
if int(arraydescargada[i]) > int(arraylocal[i]):
hayqueactualizar = True
# local 2.8.0 - descargada 2.8 -> no descargar
# local 2.9.0 - descargada 2.8 -> no descargar
# local 2.8.0 - descargada 2.9 -> descargar
if len(arraylocal) > len(arraydescargada):
logger.info("caso 2")
hayqueactualizar = False
for i in range(0, len(arraydescargada)):
#print arraylocal[i], arraydescargada[i], int(arraydescargada[i]) > int(arraylocal[i])
if int(arraydescargada[i]) > int(arraylocal[i]):
hayqueactualizar = True
# local 2.8 - descargada 2.8.8 -> descargar
# local 2.9 - descargada 2.8.8 -> no descargar
# local 2.10 - descargada 2.9.9 -> no descargar
# local 2.5 - descargada 3.0.0
if len(arraylocal) < len(arraydescargada):
logger.info("caso 3")
hayqueactualizar = True
for i in range(0, len(arraylocal)):
#print arraylocal[i], arraydescargada[i], int(arraylocal[i])>int(arraydescargada[i])
if int(arraylocal[i]) > int(arraydescargada[i]):
hayqueactualizar = False
elif int(arraylocal[i]) < int(arraydescargada[i]):
hayqueactualizar = True
break
else:
hayqueactualizar = (numero_remote_version > numero_version_local)
if hayqueactualizar:
if plugin_mode:
logger.info("kodiondemand.core.updater actualizacion disponible")
# Añade al listado de XBMC
import xbmcgui
#thumbnail = IMAGES_PATH+"Crystal_Clear_action_info.png"
thumbnail = os.path.join(config.get_runtime_path() , "resources" , "images", "service_update.png")
logger.info("thumbnail="+thumbnail)
listitem = xbmcgui.ListItem( "Scarica la versione "+tag_version, thumbnailImage=thumbnail )
itemurl = '%s?action=update&version=%s' % ( sys.argv[ 0 ] , tag_version )
import xbmcplugin
xbmcplugin.addDirectoryItem( handle = int(sys.argv[ 1 ]), url = itemurl , listitem=listitem, isFolder=True)
# Avisa con un popup
dialog = xbmcgui.Dialog()
dialog.ok("Versione "+tag_version+" disponibile","E' possibile scaricare la nuova versione del plugin\nattraverso l'opzione nel menù principale.")
else:
import xbmcgui
yes_pressed = xbmcgui.Dialog().yesno( "Versione "+tag_version+" disponibile" , "Installarla?" )
if yes_pressed:
params = {"version":tag_version}
update(params)
def update():
# Descarga el ZIP
logger.info("kodiondemand.core.updater update")
remotefilename = REMOTE_FILE
localfilename = xbmc.translatePath("special://home/addons/") + "plugin.video.kod/addon-master.zip"
logger.info("kodiondemand.core.updater remotefilename=%s" % remotefilename)
logger.info("kodiondemand.core.updater localfilename=%s" % localfilename)
logger.info("kodiondemand.core.updater descarga fichero...")
#urllib.urlretrieve(remotefilename,localfilename)
from core import downloadtools
downloadtools.downloadfile(remotefilename, localfilename, continuar=False)
# Lo descomprime
logger.info("kodiondemand.core.updater descomprime fichero...")
unzipper = ziptools.ziptools()
destpathname = xbmc.translatePath("special://home/addons/") + "plugin.video.kod"
logger.info("kodiondemand.core.updater destpathname=%s" % destpathname)
unzipper.extract(localfilename,destpathname)
# Borra el zip descargado
logger.info("kodiondemand.core.updater borra fichero...")
os.remove(localfilename)
logger.info("kodiondemand.core.updater ...fichero borrado")
'''
def check_addon_updates(verbose=False): def check_addon_updates(verbose=False):
logger.info() logger.info()
@@ -158,3 +310,4 @@ def check_addon_updates(verbose=False):
if verbose: if verbose:
platformtools.dialog_notification(config.get_localized_string(70674), config.get_localized_string(70675)) platformtools.dialog_notification(config.get_localized_string(70674), config.get_localized_string(70675))
return False return False
'''