[contrib] add a xbmc plugin that interracts with videoob
This commit is contained in:
parent
d479a86c4d
commit
d1839bfcd4
23 changed files with 1036 additions and 0 deletions
|
|
@ -0,0 +1,62 @@
|
|||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import simplejson as json
|
||||
|
||||
if hasattr(sys.modules["__main__"], "common_xbmc"):
|
||||
common_xbmc = sys.modules["__main__"].common_xbmc
|
||||
else:
|
||||
import common_xbmc
|
||||
|
||||
|
||||
class Weboobmc():
|
||||
def __init__(self, count=10):
|
||||
self.count = count
|
||||
|
||||
def update(self):
|
||||
#weboob-config update
|
||||
self._call_weboob('weboob-config', 'update')
|
||||
|
||||
def _call_weboob(self, application, command, options={}, argument=""):
|
||||
options['-n'] = self.count
|
||||
_opt = " ".join(["%s %s " % (k, v) for k, v in options.items()])
|
||||
_cmd = "%s %s %s %s" % (application, _opt, command, argument)
|
||||
#print _cmd.encode('utf-8')
|
||||
return subprocess.check_output(_cmd, shell=True)
|
||||
|
||||
def _json_call_weboob(self, application, command, options={}, argument=""):
|
||||
options['-f'] = 'json'
|
||||
try:
|
||||
result = self._call_weboob(application, command, options, argument)
|
||||
m = re.search(r"(\[{.+\}])", result)
|
||||
if m:
|
||||
result = u'%s' % m.group(1)
|
||||
#print result
|
||||
return json.loads(result) if result else []
|
||||
except subprocess.CalledProcessError as e:
|
||||
common_xbmc.display_error(" Error while calling weboob : %s " % e)
|
||||
|
||||
def get_loaded_backends(self, caps):
|
||||
#weboob-config list ICapVideo -f json
|
||||
backends = self._json_call_weboob('weboob-config', 'list', argument=caps)
|
||||
for backend in backends:
|
||||
if "_enabled=0" not in backend['Configuration']:
|
||||
yield backend['Name'] # , self.get_backend_icon(backend['Module'])
|
||||
|
||||
def get_backend_icon(self, module):
|
||||
if 'WEBOOB_WORKDIR' in os.environ:
|
||||
datadir = os.environ.get('WEBOOB_WORKDIR')
|
||||
else:
|
||||
datadir = os.path.join(os.environ.get('XDG_DATA_HOME',
|
||||
os.path.join(os.path.expanduser('~'), '.local', 'share')
|
||||
), 'weboob')
|
||||
icons_dir = os.path.join(datadir, 'icons')
|
||||
|
||||
return os.path.join(icons_dir, '%s.png' % module)
|
||||
|
||||
def is_category(self, obj):
|
||||
return 'split_path' in obj.keys()
|
||||
Loading…
Add table
Add a link
Reference in a new issue