Página 1 de 1

RESUELTO ¿Alguien con conocimientos de Python y Kodi puede ayudarme?

Publicado: 10 Ago 2017, 13:28
por hav
Hola, he adaptado un addon que circula por ahí para que arranque como un servicio y se repita cada 30 segundos. Mis conocimientos son muy limitados y, por ello, no he logrado que vuelve a ejecutarse transcurrido el tiempo indicado. Dejo el .py por si alguien quiere ayudarme:

https://mega.nz/#!j4VxUJIB!ONSwsOYWpEdL ... J2zHhVsws4

Gracias, un saludo.

Re: ¿Alguien con conocimientos de Python y Kodi puede ayudarme?

Publicado: 10 Ago 2017, 14:55
por Willyn
Diria que te falta una tabulacion ya que ese if deberia de estar dentro de la funcion set_all_enable, pruebalo a ver..

Código: Seleccionar todo

#!/usr/bin/python
# -*- coding: utf-8 -*-
import xbmc, xbmcgui, os
from sqlite3 import dbapi2 as db_lib

conn =db_lib.connect(os.path.join(xbmc.translatePath('special://profile/Database'),'Addons27.db'))
conn.text_factory = str

def get_kodi_version():
    try:
	    return float(xbmc.getInfoLabel('System.BuildVersion').split('-')[0])
    except:
	    return float(xbmc.getInfoLabel('System.BuildVersion').split('.')[0])

def check_updates():
    xbmc.executebuiltin('XBMC.UpdateLocalAddons()')
    xbmc.executebuiltin('XBMC.UpdateAddonRepos()')

def set_all_enable():
    conn.executemany('update installed set enabled=1 WHERE addonID = (?)',((val,) for val in os.listdir(xbmc.translatePath(os.path.join('special://home','addons')))))
    conn.commit()
		
    if get_kodi_version() > 16.9 :

        dp = xbmcgui.DialogProgress()
        dp.create('¡Activando los add-ons!','Por favor, espere ...','')
        dp.update(0)

        check_updates()
        xbmc.sleep(2000)
        dp.update(30)

        set_all_enable()
        xbmc.sleep(2000)
        dp.update(60)

        check_updates()
        xbmc.sleep(2000)
        dp.update(100)

        xbmc.sleep(2000)
        dp.close()



if __name__ == '__main__':

    monitor = xbmc.Monitor()
 
    while not monitor.abortRequested():
        # Sleep/wait for abort for 10 seconds ( media hora )
        if monitor.waitForAbort(30):
            # Abort was requested while waiting. We should exit
            break
        set_all_enable()	

Re: ¿Alguien con conocimientos de Python y Kodi puede ayudarme?

Publicado: 10 Ago 2017, 15:38
por hav
Lo he modificado, pero la situación persiste, no vuelve a ejecutarse a los 30 segundos :roll:

Re: ¿Alguien con conocimientos de Python y Kodi puede ayudarme?

Publicado: 10 Ago 2017, 16:08
por Willyn
hav escribió:
10 Ago 2017, 15:38
Lo he modificado, pero la situación persiste, no vuelve a ejecutarse a los 30 segundos :roll:

Código: Seleccionar todo

#!/usr/bin/python
# -*- coding: utf-8 -*-
import xbmc, xbmcgui, os
from sqlite3 import dbapi2 as db_lib

conn =db_lib.connect(os.path.join(xbmc.translatePath('special://profile/Database'),'Addons27.db'))
conn.text_factory = str

def get_kodi_version():
    try:
	    return float(xbmc.getInfoLabel('System.BuildVersion').split('-')[0])
    except:
	    return float(xbmc.getInfoLabel('System.BuildVersion').split('.')[0])

def check_updates():
    xbmc.executebuiltin('XBMC.UpdateLocalAddons()')
    xbmc.executebuiltin('XBMC.UpdateAddonRepos()')

def set_all_enable():
    conn.executemany('update installed set enabled=1 WHERE addonID = (?)',((val,) for val in os.listdir(xbmc.translatePath(os.path.join('special://home','addons')))))
    conn.commit()
		
    if get_kodi_version() > 16.9 :

        dp = xbmcgui.DialogProgress()
        dp.create('¡Activando los add-ons!','Por favor, espere ...','')
        dp.update(0)

        check_updates()
        xbmc.sleep(2000)
        dp.update(30)

        xbmc.sleep(2000)
        dp.close()

if __name__ == '__main__':

    monitor = xbmc.Monitor()
 
    while not monitor.abortRequested():
        set_all_enable()
        xbmc.sleep(30000)
y asi? voy un poco a ciegas porque no lo estoy probando y no se que hace monitor exactamente..
Dentro del if tenias que volviera a llamar a set_all_enable y esa recursividad no tenia mucho sentido

Re: ¿Alguien con conocimientos de Python y Kodi puede ayudarme?

Publicado: 10 Ago 2017, 17:09
por hav
Resuelto, el problema estaba en la tabulación del If cuando se llamaba a set_all_enable. He eliminado, de paso, todas las llamadas para que no muestre mensaje alguno, porque un cartelito cada 30 segundos...