def _ChangeItems(self, changedItems): # map the changed items to their media import changedItemsMap = {} for (changesetType, item, itemId) in changedItems: if not item: continue # find a matching import for the changed item mediaImport = self._FindImportForItem(item) if not mediaImport: ProviderObserver.log( 'failed to determine media import for changed item with id "{}" from {}' .format(itemId, mediaProvider2str(self._mediaProvider)), xbmc.LOGWARNING) continue if mediaImport not in changedItemsMap: changedItemsMap[mediaImport] = [] changedItemsMap[mediaImport].append((changesetType, item)) # finally pass the changed items grouped by their media import to Kodi for (mediaImport, changedItems) in changedItemsMap.items(): if xbmcmediaimport.changeImportedItems(mediaImport, changedItems): ProviderObserver.log( 'changed {} imported items for media import {} from {}'. format(len(changedItems), mediaImport2str(mediaImport), mediaProvider2str(self._mediaProvider))) else: ProviderObserver.log( 'failed to change {} imported items for media import {} from {}' .format(len(changedItems), mediaImport2str(mediaImport), mediaProvider2str(self._mediaProvider)), xbmc.LOGWARNING)
def AddImport(self, mediaImport): if not mediaImport: raise ValueError('invalid mediaImport') # look for a matching import matchingImportIndices = self._FindImportIndices(mediaImport) # if a matching import has been found update it if matchingImportIndices: self._imports[matchingImportIndices[0]] = mediaImport log('media import {} updated'.format(mediaImport2str(mediaImport))) else: # other add the import to the list self._imports.append(mediaImport) log('media import {} added'.format(mediaImport2str(mediaImport)))
def RemoveImport(self, mediaImport): if not mediaImport: raise ValueError('invalid mediaImport') # look for a matching import matchingImportIndices = self._FindImportIndices(mediaImport) if not matchingImportIndices: return # remove the media import from the list del self._imports[matchingImportIndices[0]] log('media import {} removed'.format(mediaImport2str(mediaImport)))
def _addImport(self, mediaImport): if not mediaImport: raise ValueError('cannot add invalid media import') mediaProvider = mediaImport.getProvider() if not mediaProvider: raise ValueError( 'cannot add media import {} with invalid media provider'. format(mediaImport2str(mediaImport))) mediaProviderId = mediaProvider.getIdentifier() if not mediaProviderId in self._observers: return self._observers[mediaProviderId].AddImport(mediaImport)