示例#1
0
    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)
示例#2
0
    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)))
示例#3
0
    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)))
示例#4
0
    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)