Skip to content

Commit 468945e

Browse files
check_for_inputstream() method
1 parent b8681ed commit 468945e

File tree

2 files changed

+83
-0
lines changed

2 files changed

+83
-0
lines changed

lib/inputstreamhelper.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,81 @@ def has_widevine_cdm(self):
6060
self.log('Widevine is not installed.')
6161
return False
6262

63+
def _json_rpc_request(self, payload):
64+
self._log('jsonrpc payload: {0}'.format(payload))
65+
response = xbmc.executeJSONRPC(json.dumps(payload))
66+
self._log('jsonrpc response: {0}'.format(response))
67+
68+
return json.loads(response)
69+
70+
def _has_inputstream(self):
71+
"""Checks if selected InputStream add-on is installed."""
72+
payload = {
73+
'jsonrpc': '2.0',
74+
'id': 1,
75+
'method': 'Addons.GetAddonDetails',
76+
'params': {
77+
'addonid': self._inputstream_addon
78+
}
79+
}
80+
data = self._json_rpc_request(payload)
81+
if 'error' in data:
82+
return False
83+
else:
84+
return True
85+
86+
def _inputstream_enabled(self):
87+
"""Returns whether selected InputStream add-on is enabled.."""
88+
payload = {
89+
'jsonrpc': '2.0',
90+
'id': 1,
91+
'method': 'Addons.GetAddonDetails',
92+
'params': {
93+
'addonid': self._inputstream_addon,
94+
'properties': ['enabled']
95+
}
96+
}
97+
data = self._json_rpc_request(payload)
98+
if data['result']['addon']['enabled']:
99+
return True
100+
else:
101+
return False
102+
103+
def _enable_inputstream(self):
104+
"""Enable selected InputStream add-on."""
105+
payload = {
106+
'jsonrpc': '2.0',
107+
'id': 1,
108+
'method': 'Addons.SetAddonEnabled',
109+
'params': {
110+
'addonid': self._inputstream_addon,
111+
'enabled': True
112+
}
113+
}
114+
data = self._json_rpc_request(payload)
115+
if 'error' in data:
116+
return False
117+
else:
118+
return True
119+
120+
def check_for_inputstream(self):
121+
"""Ensures that selected InputStream add-on is installed and enabled.
122+
Displays a select dialog if add-on is installed but not enabled."""
123+
dialog = xbmcgui.Dialog()
124+
if not self._has_inputstream():
125+
self._log('{0} is not installed.'.format(self._inputstream_addon))
126+
dialog.ok(self._language(30004), self._language(30008).format(self._inputstream_addon))
127+
elif not self._inputstream_enabled():
128+
self._log('{0} is not enabled.'.format(self._inputstream_addon))
129+
ok = dialog.yesno(self._language(30001), self._language(30009).format(self._inputstream_addon, self._inputstream_addon))
130+
if ok:
131+
return self._enable_inputstream()
132+
else:
133+
return False
134+
else:
135+
self._log('{0} is installed and enabled.'.format(self._inputstream_addon))
136+
return True
137+
63138
def supports_hls(self):
64139
if self.protocol == 'hls' and LooseVersion(self._inputstream_version()) >= LooseVersion(config.HLS_MINIMUM_IA_VERSION):
65140
return True

resources/language/resource.language.en_gb/strings.po

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,11 @@ msgstr ""
4040
msgctxt "#30007"
4141
msgid "Widevine DRM is unfortunately not available on this system architecture."
4242
msgstr ""
43+
44+
msgctxt "#30008"
45+
msgid "[B]{0}[/B] is missing on your Kodi install. This add-on is required to play this content."
46+
msgstr ""
47+
48+
msgctxt "#30009"
49+
msgid "[B]{0}[/B] is not enabled. This add-on is required to play this content.[CR][CR]Would you like to enable [B]{1}[/B]?"
50+
msgstr ""

0 commit comments

Comments
 (0)