def add_sort_method(self, sort_method, label2_mask=None): '''A wrapper for `xbmcplugin.addSortMethod() <http://mirrors.xbmc.org/docs/python-docs/xbmcplugin.html#-addSortMethod>`_. You can use ``dir(xbmcswift2.SortMethod)`` to list all available sort methods. :param sort_method: A valid sort method. You can provided the constant from xbmcplugin, an attribute of SortMethod, or a string name. For instance, the following method calls are all equivalent: * ``plugin.add_sort_method(xbmcplugin.SORT_METHOD_TITLE)`` * ``plugin.add_sort_metohd(SortMethod.TITLE)`` * ``plugin.add_sort_method('title')`` :param label2_mask: A mask pattern for label2. See the `XBMC documentation <http://mirrors.xbmc.org/docs/python-docs/xbmcplugin.html#-addSortMethod>`_ for more information. ''' try: # Assume it's a string and we need to get the actual int value sort_method = SortMethod.from_string(sort_method) except AttributeError: # sort_method was already an int (or a bad value) pass if label2_mask: xbmcplugin.addSortMethod(self.handle, sort_method, label2_mask) else: xbmcplugin.addSortMethod(self.handle, sort_method)
def finish(self, items=None, sort_methods=None, succeeded=True, update_listing=False, cache_to_disc=True, view_mode=None): '''Adds the provided items to the XBMC interface. Each item in the provided list should either be an instance of xbmcswift2.ListItem or a dictionary that will be passed to xbmcswift2.ListItem.from_dict(). :param items: an iterable of items where each item is either a dictionary with keys/values suitable for passing to :meth:`xbmcswift2.ListItem.from_dict` or an instance of :class:`xbmcswift2.ListItem`. :param sort_methods: a list of valid XBMC sort_methods. See :attr:`xbmcswift2.SortMethod`. :param view_mode: can either be an integer (or parseable integer string) corresponding to a view_mode or the name of a type of view. Currrently the only view type supported is 'thumbnail'. :returns: a list of all ListItems added to the XBMC interface. ''' # If we have any items, add them. Items are optional here. if items: self.add_items(items) if sort_methods: for sort_method in sort_methods: xbmcplugin.addSortMethod(self.handle, sort_method) # Attempt to set a view_mode if given if view_mode is not None: # First check if we were given an integer or parseable integer try: view_mode_id = int(view_mode) except ValueError: # Attempt to lookup a view mode view_mode_id = self.get_view_mode_id(view_mode) if view_mode_id is not None: self.set_view_mode(view_mode_id) # Finalize the directory items self.end_of_directory(succeeded, update_listing, cache_to_disc) # Close any open caches which will persist them to disk if hasattr(self, '_unsynced_caches'): for cache in self._unsynced_caches.values(): log.debug('Saving a %s cache to disk at "%s"' % (cache.file_format, cache.filename)) cache.close() # Return the cached list of all the list items that were added return self.added_items