def run(self, category=''):
"""
Run plugin
:param category: str - plugin sub-category, e.g. 'Comedy'.
See :func:`xbmcplugin.setPluginCategory` for more info.
:type category: str
:raises simpleplugin.SimplePluginError: if unknown action string is provided.
"""
self._handle = int(sys.argv[1])
if category:
xbmcplugin.setPluginCategory(self._handle, category)
params = self.get_params(sys.argv[2][1:])
action = params.get('action', 'root')
self.log_debug(str(self))
self.log_debug('Actions: {0}'.format(str(self.actions.keys())))
self.log_debug('Called action "{0}" with params "{1}"'.format(action, str(params)))
try:
action_callable = self.actions[action]
except KeyError:
raise SimplePluginError('Invalid action: "{0}"!'.format(action))
else:
result = action_callable(params)
self.log_debug('Action return value: {0}'.format(str(result)))
if isinstance(result, (list, GeneratorType)):
self._add_directory_items(self.create_listing(result))
elif isinstance(result, basestring):
self._set_resolved_url(self.resolve_url(result))
elif isinstance(result, tuple) and hasattr(result, 'listing'):
self._add_directory_items(result)
elif isinstance(result, tuple) and hasattr(result, 'path'):
self._set_resolved_url(result)
else:
self.log_debug('The action "{0}" has not returned any valid data to process.'.format(action))
评论列表
文章目录