mirror of
https://github.com/jellyfin/jellycon.git
synced 2025-02-19 21:31:58 +00:00
remove popup error on connection errors
add option to surppress all connection errors
This commit is contained in:
parent
c57f205ebd
commit
7100a09daa
@ -673,3 +673,11 @@ msgstr ""
|
||||
msgctxt "#30314"
|
||||
msgid "Play"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30315"
|
||||
msgid "Suppress notifications for connection errors"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "#30316"
|
||||
msgid "Connection Error"
|
||||
msgstr ""
|
||||
|
@ -29,7 +29,7 @@ class DataManager():
|
||||
return json.loads(jsonData)
|
||||
|
||||
def GetContent(self, url):
|
||||
jsonData = DownloadUtils().downloadUrl(url, suppress=False, popup=1)
|
||||
jsonData = DownloadUtils().downloadUrl(url)
|
||||
result = self.loadJasonData(jsonData)
|
||||
return result
|
||||
|
||||
|
@ -215,16 +215,16 @@ class DownloadUtils():
|
||||
|
||||
url = "{server}/emby/Users/AuthenticateByName?format=json"
|
||||
|
||||
clientInfo = ClientInformation()
|
||||
txt_mac = clientInfo.getDeviceId()
|
||||
version = clientInfo.getVersion()
|
||||
client = clientInfo.getClient()
|
||||
#clientInfo = ClientInformation()
|
||||
#txt_mac = clientInfo.getDeviceId()
|
||||
#version = clientInfo.getVersion()
|
||||
#client = clientInfo.getClient()
|
||||
|
||||
deviceName = settings.getSetting('deviceName')
|
||||
deviceName = deviceName.replace("\"", "_")
|
||||
#deviceName = settings.getSetting('deviceName')
|
||||
#deviceName = deviceName.replace("\"", "_")
|
||||
|
||||
authString = "Mediabrowser Client=\"" + client + "\",Device=\"" + deviceName + "\",DeviceId=\"" + txt_mac + "\",Version=\"" + version + "\""
|
||||
headers = {'Accept-encoding': 'gzip', 'Authorization': authString}
|
||||
#authString = "Mediabrowser Client=\"" + client + "\",Device=\"" + deviceName + "\",DeviceId=\"" + txt_mac + "\",Version=\"" + version + "\""
|
||||
#headers = {'Accept-encoding': 'gzip', 'Authorization': authString}
|
||||
sha1 = hashlib.sha1(settings.getSetting('password'))
|
||||
|
||||
messageData = "username=" + settings.getSetting('username') + "&password=" + sha1.hexdigest()
|
||||
@ -283,12 +283,15 @@ class DownloadUtils():
|
||||
log.debug("EmbyCon Authentication Header : " + str(headers))
|
||||
return headers
|
||||
|
||||
def downloadUrl(self, url, suppress=False, postBody=None, method="GET", popup=0, authenticate=True, headers=None):
|
||||
def downloadUrl(self, url, suppress=False, postBody=None, method="GET", authenticate=True, headers=None):
|
||||
log.debug("downloadUrl")
|
||||
|
||||
return_data = "null"
|
||||
settings = xbmcaddon.Addon(id='plugin.video.embycon')
|
||||
|
||||
if settings.getSetting("suppressErrors") == "true":
|
||||
suppress = True
|
||||
|
||||
log.debug(url)
|
||||
if url.find("{server}") != -1:
|
||||
server = self.getServer()
|
||||
@ -341,7 +344,6 @@ class DownloadUtils():
|
||||
if (host == "<none>" or host == "" or port == ""):
|
||||
return ""
|
||||
|
||||
settings = xbmcaddon.Addon('plugin.video.embycon')
|
||||
use_https = settings.getSetting('use_https') == 'true'
|
||||
verify_cert = settings.getSetting('verify_cert') == 'true'
|
||||
|
||||
@ -394,32 +396,19 @@ class DownloadUtils():
|
||||
log.debug(return_data)
|
||||
log.debug("====== 200 finished ======")
|
||||
|
||||
#elif (int(data.status) == 301) or (int(data.status) == 302):
|
||||
# try:
|
||||
# conn.close()
|
||||
# except:
|
||||
# pass
|
||||
# return data.getheader('Location')
|
||||
|
||||
elif int(data.status) >= 400:
|
||||
error = "HTTP response error: " + str(data.status) + " " + str(data.reason)
|
||||
log.error(error)
|
||||
if suppress is False:
|
||||
if popup == 0:
|
||||
xbmcgui.Dialog().notification(self.addon_name, i18n('url_error_') % str(data.reason))
|
||||
else:
|
||||
xbmcgui.Dialog().ok(self.addon_name, i18n('url_error_') % str(data.reason))
|
||||
xbmcgui.Dialog().notification(self.addon_name, i18n('url_error_') % str(data.reason))
|
||||
log.error(error)
|
||||
|
||||
except Exception, msg:
|
||||
error = "Unable to connect to " + str(server) + " : " + str(msg)
|
||||
log.error(error)
|
||||
if suppress is False:
|
||||
if popup == 0:
|
||||
xbmcgui.Dialog().notification(self.addon_name, i18n('url_error_') % str(msg))
|
||||
else:
|
||||
xbmcgui.Dialog().ok(self.addon_name, i18n('url_error_') % i18n('unable_connect_server'), str(msg))
|
||||
#raise
|
||||
xbmcgui.Dialog().notification(i18n("connection_error"), str(msg))
|
||||
|
||||
finally:
|
||||
try:
|
||||
log.debug("Closing HTTP connection: " + str(conn))
|
||||
|
@ -352,11 +352,6 @@ def getContent(url, params):
|
||||
# use the data manager to get the data
|
||||
result = dataManager.GetContent(url)
|
||||
|
||||
if result == None or len(result) == 0:
|
||||
if (progress != None):
|
||||
progress.close()
|
||||
return
|
||||
|
||||
dirItems = processDirectory(result, progress, params)
|
||||
if dirItems is None:
|
||||
return
|
||||
@ -364,6 +359,8 @@ def getContent(url, params):
|
||||
|
||||
xbmcplugin.endOfDirectory(pluginhandle, cacheToDisc=False)
|
||||
|
||||
log.debug("== EXIT: getContent == %s " % dirItems)
|
||||
|
||||
# if the view master addon is available then run the script
|
||||
try:
|
||||
view_addon = xbmcaddon.Addon("script.viewmaster")
|
||||
@ -397,18 +394,17 @@ def processDirectory(results, progress, params):
|
||||
|
||||
dirItems = []
|
||||
if results is None:
|
||||
result = []
|
||||
results = []
|
||||
|
||||
if isinstance(results, dict):
|
||||
result = results.get("Items")
|
||||
else:
|
||||
result = results
|
||||
results = results.get("Items", [])
|
||||
|
||||
# flatten single season
|
||||
# if there is only one result and it is a season and you have flatten signle season turned on then
|
||||
# build a new url, set the content media type and call get content again
|
||||
flatten_single_season = settings.getSetting("flatten_single_season") == "true"
|
||||
if flatten_single_season and len(result) == 1 and result[0].get("Type", "") == "Season":
|
||||
season_id = result[0].get("Id")
|
||||
if flatten_single_season and len(results) == 1 and results[0].get("Type", "") == "Season":
|
||||
season_id = results[0].get("Id")
|
||||
season_url = ('{server}/emby/Users/{userid}/items' +
|
||||
'?ParentId=' + season_id +
|
||||
'&IsVirtualUnAired=false' +
|
||||
@ -430,7 +426,7 @@ def processDirectory(results, progress, params):
|
||||
display_options["addResumePercent"] = settings.getSetting("addResumePercent") == 'true'
|
||||
display_options["addSubtitleAvailable"] = settings.getSetting("addSubtitleAvailable") == 'true'
|
||||
|
||||
item_count = len(result)
|
||||
item_count = len(results)
|
||||
current_item = 1
|
||||
first_season_item = None
|
||||
total_unwatched = 0
|
||||
@ -445,7 +441,7 @@ def processDirectory(results, progress, params):
|
||||
gui_options["add_season_number"] = add_season_number
|
||||
gui_options["add_episode_number"] = add_episode_number
|
||||
|
||||
for item in result:
|
||||
for item in results:
|
||||
|
||||
if (progress != None):
|
||||
percentDone = (float(current_item) / float(item_count)) * 100
|
||||
@ -627,7 +623,7 @@ def populate_listitem(item_id):
|
||||
log.debug("populate_listitem: " + item_id)
|
||||
|
||||
url = "{server}/emby/Users/{userid}/Items/" + item_id + "?format=json"
|
||||
jsonData = downloadUtils.downloadUrl(url, suppress=False, popup=1)
|
||||
jsonData = downloadUtils.downloadUrl(url)
|
||||
result = json.loads(jsonData)
|
||||
log.debug("populate_listitem item info: " + str(result))
|
||||
|
||||
@ -962,7 +958,7 @@ def playTrailer(id):
|
||||
|
||||
url = ("{server}/emby/Users/{userid}/Items/%s/LocalTrailers?format=json" % id)
|
||||
|
||||
jsonData = downloadUtils.downloadUrl(url, suppress=False, popup=1)
|
||||
jsonData = downloadUtils.downloadUrl(url)
|
||||
result = json.loads(jsonData)
|
||||
log.debug("LocalTrailers" + str(result))
|
||||
|
||||
@ -975,7 +971,7 @@ def playTrailer(id):
|
||||
trailer_list.append(info)
|
||||
|
||||
url = ("{server}/emby/Users/{userid}/Items/%s?format=json&Fields=RemoteTrailers" % id)
|
||||
jsonData = downloadUtils.downloadUrl(url, suppress=False, popup=1)
|
||||
jsonData = downloadUtils.downloadUrl(url)
|
||||
result = json.loads(jsonData)
|
||||
log.debug("RemoteTrailers" + str(result))
|
||||
|
||||
|
@ -39,7 +39,7 @@ def playFile(play_info):
|
||||
server = downloadUtils.getServer()
|
||||
|
||||
url = "{server}/emby/Users/{userid}/Items/" + id + "?format=json"
|
||||
jsonData = downloadUtils.downloadUrl(url, suppress=False, popup=1)
|
||||
jsonData = downloadUtils.downloadUrl(url)
|
||||
result = json.loads(jsonData)
|
||||
log.debug("Playfile item info: " + str(result))
|
||||
|
||||
|
@ -37,9 +37,8 @@ def showServerSessions():
|
||||
media_id = play_state.get("MediaSourceId", None)
|
||||
log.debug("Media ID " + str(media_id))
|
||||
if media_id is not None:
|
||||
jsonData = downloadUtils.downloadUrl("{server}/emby/Users/{userid}/Items/" +
|
||||
media_id + "?format=json",
|
||||
suppress=False, popup=1)
|
||||
url = "{server}/emby/Users/{userid}/Items/" + media_id + "?format=json"
|
||||
jsonData = downloadUtils.downloadUrl(url)
|
||||
media_info = json.loads(jsonData)
|
||||
log.debug("Media Info " + str(media_info))
|
||||
runtime = media_info.get("RunTimeTicks", 0)
|
||||
|
@ -119,5 +119,6 @@ STRINGS = {
|
||||
'select_trailer': 30308,
|
||||
'select_source': 30309,
|
||||
'embycon_error': 30311,
|
||||
'embycon_error_submit': 30312
|
||||
'embycon_error_submit': 30312,
|
||||
'connection_error': 30316
|
||||
}
|
||||
|
@ -151,8 +151,7 @@ def getWidgetContentCast(handle, params):
|
||||
server = downloadUtils.getServer()
|
||||
|
||||
id = params["id"]
|
||||
jsonData = downloadUtils.downloadUrl("{server}/emby/Users/{userid}/Items/" + id + "?format=json",
|
||||
suppress=False, popup=1)
|
||||
jsonData = downloadUtils.downloadUrl("{server}/emby/Users/{userid}/Items/" + id + "?format=json")
|
||||
result = json.loads(jsonData)
|
||||
log.debug("ItemInfo: " + str(result))
|
||||
|
||||
@ -208,7 +207,7 @@ def populateWidgetItems(itemsUrl, override_select_action=None):
|
||||
log.debug("WIDGET_DATE_URL: " + itemsUrl)
|
||||
|
||||
# get the items
|
||||
jsonData = downloadUtils.downloadUrl(itemsUrl, suppress=False)
|
||||
jsonData = downloadUtils.downloadUrl(itemsUrl)
|
||||
log.debug("Widget(Items) jsonData: " + jsonData)
|
||||
result = json.loads(jsonData)
|
||||
|
||||
|
@ -59,5 +59,6 @@
|
||||
<setting id="profile" type="bool" label="30010" default="false" visible="true" enable="true" />
|
||||
<setting id="showLoadProgress" type="bool" label="30120" default="false" visible="true" enable="true" />
|
||||
<setting id="remoteControl" type="bool" label="30310" default="false" visible="true" enable="true" />
|
||||
<setting id="suppressErrors" type="bool" label="30315" default="false" visible="true" enable="true" />
|
||||
</category>
|
||||
</settings>
|
31
service.py
31
service.py
@ -89,12 +89,12 @@ def promptForStopActions(item_id, current_possition):
|
||||
prompt_delete_movie_percentage = int(settings.getSetting('promptDeleteMoviePercentage'))
|
||||
|
||||
# everything is off so return
|
||||
if prompt_next_percentage == 100 and prompt_delete_episode_percentage == 100 and prompt_delete_movie_percentage == 100:
|
||||
if (prompt_next_percentage == 100 and
|
||||
prompt_delete_episode_percentage == 100 and
|
||||
prompt_delete_movie_percentage == 100):
|
||||
return
|
||||
|
||||
jsonData = download_utils.downloadUrl("{server}/emby/Users/{userid}/Items/" +
|
||||
item_id + "?format=json",
|
||||
suppress=False, popup=1)
|
||||
jsonData = download_utils.downloadUrl("{server}/emby/Users/{userid}/Items/" + item_id + "?format=json")
|
||||
result = json.loads(jsonData)
|
||||
prompt_to_delete = False
|
||||
runtime = result.get("RunTimeTicks", 0)
|
||||
@ -142,16 +142,17 @@ def promptForStopActions(item_id, current_possition):
|
||||
log.debug("No episode number, can not prompt for next episode")
|
||||
return
|
||||
|
||||
jsonData = download_utils.downloadUrl('{server}/emby/Users/{userid}/Items?' +
|
||||
'?Recursive=true' +
|
||||
'&ParentId=' + parendId +
|
||||
#'&Filters=IsUnplayed,IsNotFolder' +
|
||||
'&IsVirtualUnaired=false' +
|
||||
'&IsMissing=False' +
|
||||
'&IncludeItemTypes=Episode' +
|
||||
'&ImageTypeLimit=1' +
|
||||
'&format=json',
|
||||
suppress=False, popup=1)
|
||||
url = ( '{server}/emby/Users/{userid}/Items?' +
|
||||
'?Recursive=true' +
|
||||
'&ParentId=' + parendId +
|
||||
# '&Filters=IsUnplayed,IsNotFolder' +
|
||||
'&IsVirtualUnaired=false' +
|
||||
'&IsMissing=False' +
|
||||
'&IncludeItemTypes=Episode' +
|
||||
'&ImageTypeLimit=1' +
|
||||
'&format=json')
|
||||
|
||||
jsonData = download_utils.downloadUrl(url)
|
||||
|
||||
items_result = json.loads(jsonData)
|
||||
log.debug("Prompt Next Item Details: %s" % items_result)
|
||||
@ -163,7 +164,7 @@ def promptForStopActions(item_id, current_possition):
|
||||
|
||||
resp = True
|
||||
if play_prompt:
|
||||
#next_epp_name = str(index) + " of " + str(item_list[-1].get("IndexNumber", -1)) + " - " + item.get("Name", "n/a")
|
||||
# next_epp_name = str(index) + " of " + str(item_list[-1].get("IndexNumber", -1)) + " - " + item.get("Name", "n/a")
|
||||
next_epp_name = ("%02d - " % (index,)) + item.get("Name", "n/a")
|
||||
resp = xbmcgui.Dialog().yesno(i18n("play_next_title"), i18n("play_next_question"), next_epp_name, autoclose=10000)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user