#################################################################################################
# Kodi  Monitor
# Watched events that occur in Kodi, like setting media watched
#################################################################################################

import xbmc
import xbmcgui
import xbmcaddon
import json

import Utils as utils
from LibrarySync import LibrarySync

librarySync = LibrarySync()

WINDOW = xbmcgui.Window( 10000 )

class Kodi_Monitor(xbmc.Monitor):
    def __init__(self, *args, **kwargs):
        xbmc.Monitor.__init__(self)

    def onDatabaseUpdated(self, database):
        pass
    
    #this library monitor is used to detect a watchedstate change by the user through the library
    def onNotification  (self,sender,method,data):
        if method == "VideoLibrary.OnUpdate":
            
            #check windowprop if the sync is busy to prevent any false updates
            if WINDOW.getProperty("librarysync") != "busy":
            
                jsondata = json.loads(data)
                if jsondata != None:
                    playcount = None
                    playcount = jsondata.get("playcount")
                    item = jsondata.get("item").get("id")
                    
                    if playcount != None:
                        librarySync.updatePlayCountFromKodi(item, playcount)