Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    23

    [Python] Aiuto comprensione codice KODI / XBMC

    Buongiorno a tutti,
    sto da poco imparando il python per cercare di sviluppare dei miei script per Kodi/XBMC.
    Sto cercando di capire il funzionamento di questo codice:

    codice:
    import xbmc, xbmcgui
    import subprocess, os
    
    class MyPlayer(xbmc.Player):
    
        def __init__(self):
            xbmc.Player.__init__(self)
    
        def onPlayBackStarted(self):
            if xbmc.Player().isPlayingVideo():
                # os.system("tdtool -v 0 -d 1")
                xbmcgui.Dialog().ok("prova", "onPlayBackStarted")
    
        def onPlayBackEnded(self):
            if (VIDEO == 1):
                # os.system("tdtool -v 255 -d 1")
                xbmcgui.Dialog().ok("prova", "onPlayBackEnded")
    
        def onPlayBackStopped(self):
            if (VIDEO == 1):
                # os.system("tdtool -v 255 -d 1")
                xbmcgui.Dialog().ok("prova", "onPlayBackStopped")
    
        def onPlayBackPaused(self):
            if xbmc.Player().isPlayingVideo():
                # os.system("tdtool -v 100 -d 1")
                xbmcgui.Dialog().ok("prova", "onPlayBackPaused")
    
        def onPlayBackResumed(self):
            if xbmc.Player().isPlayingVideo():
                # os.system("tdtool -v 0 -d 1")
                xbmcgui.Dialog().ok("prova", "onPlayBackResumed")
    
    player = MyPlayer()
    
    VIDEO = 0
    
    while (1):
        if xbmc.Player().isPlaying():
            if xbmc.Player().isPlayingVideo():
                VIDEO = 1
    else:
                VIDEO = 0
    xbmc.sleep(1000)

    In sostanza, una volta avviato un video, se messo in pausa, ripresto o stoppato mostra una relativa finestra info (l'ho semplificato io, in realtà azionava delle luci)

    Ma non riesco a capire una cosa:
    da quello che capisco controlla all'infinito se è stato avviato un video, se "SI" assegno 1 a VIDEO, altrimenti 0; ma una volta che per esempio il video è messo in pausa, come fa a richiamare la funzione "onPlayBackStarted" all'interno della classe "MyPlayer"? Proprio non riesco a capire...

    Grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    23
    Ho capito che la classe MyPlayer estende la classe xbmc.Player e successivamente vengono "personalizzati" i suoi vari metodi.

    Quello che non ho ancora capito è come mai lo script funziona solo se è presente la parte sottostante del codice, anche minimizzata a (ho forzato VIDEO = 1) :

    codice:
    while(1):
        xbmc.sleep(1000)
    
    se viene omessa questa parte, il codice non funziona.

    Qualcuno sa spiegarmi perchè?


    Grazie

  3. #3
    Probabilmente la xmbc.sleep() sotto fa girare il loop degli eventi di XMBC; se non ci fosse, questo non avrebbe la possibilità di richiamare i vari metodi della classe (oltre al fatto che lo script terminerebbe subito).
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.