remove popup error on connection errors

add option to surppress all connection errors
This commit is contained in:
Shaun 2017-12-27 16:50:22 +11:00
parent c57f205ebd
commit 7100a09daa
10 changed files with 60 additions and 66 deletions

View File

@ -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 ""

View File

@ -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

View File

@ -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))

View File

@ -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))

View File

@ -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))

View File

@ -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)

View File

@ -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
}

View File

@ -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)

View File

@ -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>

View File

@ -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)