Change logging to use function args and render the log line only if debug logging is enabled
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="plugin.video.embycon"
|
||||
name="EmbyCon"
|
||||
version="1.4.14"
|
||||
version="1.4.15"
|
||||
provider-name="Team B">
|
||||
<requires>
|
||||
<import addon="xbmc.python" version="2.24.0"/>
|
||||
|
||||
@@ -35,7 +35,7 @@ class ActionMenu(xbmcgui.WindowXMLDialog):
|
||||
def onClick(self, controlID):
|
||||
if (controlID == 3000):
|
||||
self.selected_action = self.listControl.getSelectedItem()
|
||||
log.debug("ActionMenu: Selected Item:" + str(self.selected_action))
|
||||
log.debug("ActionMenu: Selected Item: {0}", self.selected_action)
|
||||
self.close()
|
||||
|
||||
def setActionItems(self, action_items):
|
||||
|
||||
@@ -21,20 +21,20 @@ class ClientInformation():
|
||||
return client_id
|
||||
|
||||
emby_guid_path = xbmc.translatePath("special://temp/embycon_guid").decode('utf-8')
|
||||
log.debug("emby_guid_path: " + emby_guid_path)
|
||||
log.debug("emby_guid_path: {0}", emby_guid_path)
|
||||
guid = xbmcvfs.File(emby_guid_path)
|
||||
client_id = guid.read()
|
||||
guid.close()
|
||||
|
||||
if not client_id:
|
||||
client_id = str("%012X" % uuid4())
|
||||
log.debug("Generating a new guid: " + client_id)
|
||||
log.debug("Generating a new guid: {0}", client_id)
|
||||
guid = xbmcvfs.File(emby_guid_path, 'w')
|
||||
guid.write(client_id)
|
||||
guid.close()
|
||||
log.debug("emby_client_id (NEW): " + client_id)
|
||||
log.debug("emby_client_id (NEW): {0}", client_id)
|
||||
else:
|
||||
log.debug("emby_client_id: " + client_id)
|
||||
log.debug("emby_client_id: {0}", client_id)
|
||||
|
||||
WINDOW.setProperty("client_id", client_id)
|
||||
return client_id
|
||||
|
||||
@@ -1,19 +1,10 @@
|
||||
# Gnu General Public License - see LICENSE.TXT
|
||||
|
||||
import hashlib
|
||||
import os
|
||||
import threading
|
||||
import json
|
||||
import encodings
|
||||
from collections import defaultdict
|
||||
|
||||
import xbmcaddon
|
||||
import xbmc
|
||||
|
||||
from downloadutils import DownloadUtils
|
||||
from simple_logging import SimpleLogging
|
||||
from utils import getChecksum
|
||||
from kodi_utils import HomeWindow
|
||||
|
||||
log = SimpleLogging(__name__)
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ class DownloadUtils():
|
||||
|
||||
# if user entered a full path i.e. http://some_host:port
|
||||
if host.lower().strip().startswith("http://") or host.lower().strip().startswith("https://"):
|
||||
log.debug("Extracting host info from url: " + host)
|
||||
log.debug("Extracting host info from url: {0}", host)
|
||||
url_bits = urlparse(host.strip())
|
||||
if url_bits.hostname is not None and len(url_bits.hostname) > 0:
|
||||
host = url_bits.hostname
|
||||
@@ -82,14 +82,14 @@ class DownloadUtils():
|
||||
BGTags = data["BackdropImageTags"]
|
||||
if BGTags is not None and len(BGTags) > index:
|
||||
imageTag = BGTags[index]
|
||||
log.debug("Background Image Tag:" + imageTag)
|
||||
log.debug("Background Image Tag: {0}", imageTag)
|
||||
elif parent is False:
|
||||
image_tags = data["ImageTags"]
|
||||
if image_tags is not None:
|
||||
image_tag_type = image_tags[art_type]
|
||||
if image_tag_type is not None:
|
||||
imageTag = image_tag_type
|
||||
log.debug("Image Tag:" + imageTag)
|
||||
log.debug("Image Tag: {0}", imageTag)
|
||||
elif parent is True:
|
||||
if (item_type == "Episode" or item_type == "Season") and art_type == 'Primary':
|
||||
tagName = 'SeriesPrimaryImageTag'
|
||||
@@ -102,17 +102,17 @@ class DownloadUtils():
|
||||
if parent_image_id is not None and parent_image_tag is not None:
|
||||
id = parent_image_id
|
||||
imageTag = parent_image_tag
|
||||
log.debug("Parent Image Tag:" + imageTag)
|
||||
log.debug("Parent Image Tag: {0}", imageTag)
|
||||
|
||||
if (imageTag == "" or imageTag == None) and (art_type != 'Banner'): # ParentTag not passed for Banner
|
||||
log.debug("No Image Tag for request:" + art_type + " item:" + item_type + " parent:" + str(parent))
|
||||
log.debug("No Image Tag for request:{0} item:{1} parent:{2}", art_type, item_type, parent)
|
||||
return ""
|
||||
|
||||
query = ""
|
||||
|
||||
artwork = "%s/emby/Items/%s/Images/%s/%s?MaxWidth=%s&MaxHeight=%s&Format=original&Tag=%s%s" % (server, id, art_type, index, width, height, imageTag, query)
|
||||
|
||||
log.debug("getArtwork : " + artwork)
|
||||
log.debug("getArtwork: {0}", artwork)
|
||||
|
||||
'''
|
||||
# do not return non-existing images
|
||||
@@ -141,7 +141,7 @@ class DownloadUtils():
|
||||
userid = WINDOW.getProperty("userid")
|
||||
|
||||
if (userid != None and userid != ""):
|
||||
log.debug("EmbyCon DownloadUtils -> Returning saved UserID : " + userid)
|
||||
log.debug("EmbyCon DownloadUtils -> Returning saved UserID: {0}", userid)
|
||||
return userid
|
||||
|
||||
settings = xbmcaddon.Addon('plugin.video.embycon')
|
||||
@@ -149,37 +149,36 @@ class DownloadUtils():
|
||||
|
||||
if not userName:
|
||||
return ""
|
||||
log.debug("Looking for user name: " + userName)
|
||||
log.debug("Looking for user name: {0}", userName)
|
||||
|
||||
jsonData = None
|
||||
try:
|
||||
jsonData = self.downloadUrl("{server}/emby/Users/Public?format=json", suppress=True, authenticate=False)
|
||||
except Exception, msg:
|
||||
error = "Get User unable to connect: " + str(msg)
|
||||
log.error(error)
|
||||
log.error("Get User unable to connect: {0}", msg)
|
||||
return ""
|
||||
|
||||
log.debug("GETUSER_JSONDATA_01:" + str(jsonData))
|
||||
log.debug("GETUSER_JSONDATA_01: {0}", jsonData)
|
||||
|
||||
result = []
|
||||
|
||||
try:
|
||||
result = json.loads(jsonData)
|
||||
except Exception, e:
|
||||
log.debug("jsonload : " + str(e) + " (" + jsonData + ")")
|
||||
log.debug("Could not load user data: {0}", e)
|
||||
return ""
|
||||
|
||||
if result is None:
|
||||
return ""
|
||||
|
||||
log.debug("GETUSER_JSONDATA_02:" + str(result))
|
||||
log.debug("GETUSER_JSONDATA_02: {0}", result)
|
||||
|
||||
userid = ""
|
||||
secure = False
|
||||
for user in result:
|
||||
if (user.get("Name") == userName):
|
||||
userid = user.get("Id")
|
||||
log.debug("Username Found: " + user.get("Name"))
|
||||
log.debug("Username Found: {0}", user.get("Name"))
|
||||
if (user.get("HasPassword") == True):
|
||||
secure = True
|
||||
log.debug("Username Is Secure (HasPassword=True)")
|
||||
@@ -200,7 +199,7 @@ class DownloadUtils():
|
||||
i18n('username_not_found'),
|
||||
icon="special://home/addons/plugin.video.embycon/icon.png")
|
||||
|
||||
log.debug("userid : " + userid)
|
||||
log.debug("userid: {0}", userid)
|
||||
|
||||
WINDOW.setProperty("userid", userid)
|
||||
|
||||
@@ -212,7 +211,7 @@ class DownloadUtils():
|
||||
|
||||
token = WINDOW.getProperty("AccessToken")
|
||||
if token is not None and token != "":
|
||||
log.debug("EmbyCon DownloadUtils -> Returning saved AccessToken : " + token)
|
||||
log.debug("EmbyCon DownloadUtils -> Returning saved AccessToken: {0}", token)
|
||||
return token
|
||||
|
||||
settings = xbmcaddon.Addon('plugin.video.embycon')
|
||||
@@ -239,7 +238,7 @@ class DownloadUtils():
|
||||
pass
|
||||
|
||||
if accessToken is not None:
|
||||
log.debug("User Authenticated : " + accessToken)
|
||||
log.debug("User Authenticated: {0}", accessToken)
|
||||
WINDOW.setProperty("AccessToken", accessToken)
|
||||
WINDOW.setProperty("userid", userid)
|
||||
return accessToken
|
||||
@@ -278,7 +277,7 @@ class DownloadUtils():
|
||||
if (authToken != ""):
|
||||
headers["X-MediaBrowser-Token"] = authToken
|
||||
|
||||
log.debug("EmbyCon Authentication Header : " + str(headers))
|
||||
log.debug("EmbyCon Authentication Header: {0}", headers)
|
||||
return headers
|
||||
|
||||
def downloadUrl(self, url, suppress=False, postBody=None, method="GET", authenticate=True, headers=None):
|
||||
@@ -290,7 +289,7 @@ class DownloadUtils():
|
||||
if settings.getSetting("suppressErrors") == "true":
|
||||
suppress = True
|
||||
|
||||
log.debug(url)
|
||||
log.debug("Before: {0}", url)
|
||||
if url.find("{server}") != -1:
|
||||
server = self.getServer()
|
||||
if server is None:
|
||||
@@ -318,7 +317,7 @@ class DownloadUtils():
|
||||
url = url.replace("{IsUnplayed,}", "IsUnplayed,")
|
||||
elif url.find("{,IsUnplayed,}") != -1:
|
||||
url = url.replace("{,IsUnplayed,}", ",IsUnplayed,")
|
||||
log.debug(url)
|
||||
log.debug("After: {0}", url)
|
||||
|
||||
try:
|
||||
if url.startswith('http'):
|
||||
@@ -331,9 +330,9 @@ class DownloadUtils():
|
||||
server = url.split('/')[serversplit]
|
||||
urlPath = "/" + "/".join(url.split('/')[urlsplit:])
|
||||
|
||||
log.debug("DOWNLOAD_URL = " + url)
|
||||
log.debug("server = " + str(server))
|
||||
log.debug("urlPath = " + str(urlPath))
|
||||
log.debug("DOWNLOAD_URL: {0}", url)
|
||||
log.debug("server: {0}", server)
|
||||
log.debug("urlPath: {0}", urlPath)
|
||||
|
||||
# check the server details
|
||||
tokens = server.split(':')
|
||||
@@ -356,7 +355,7 @@ class DownloadUtils():
|
||||
conn = httplib.HTTPConnection(server, timeout=40)
|
||||
|
||||
head = self.getAuthHeader(authenticate)
|
||||
log.debug("HEADERS : " + str(head))
|
||||
log.debug("HEADERS: {0}", head)
|
||||
|
||||
if (postBody != None):
|
||||
if isinstance(postBody, dict):
|
||||
@@ -366,20 +365,20 @@ class DownloadUtils():
|
||||
content_type = "application/x-www-form-urlencoded"
|
||||
|
||||
head["Content-Type"] = content_type
|
||||
log.debug("Content-Type : " + content_type)
|
||||
log.debug("Content-Type: {0}", content_type)
|
||||
|
||||
log.debug("POST DATA : " + postBody)
|
||||
log.debug("POST DATA: {0}", postBody)
|
||||
conn.request(method=method, url=urlPath, body=postBody, headers=head)
|
||||
else:
|
||||
conn.request(method=method, url=urlPath, headers=head)
|
||||
|
||||
data = conn.getresponse()
|
||||
log.debug("GET URL HEADERS : " + str(data.getheaders()))
|
||||
log.debug("GET URL HEADERS: {0}", data.getheaders())
|
||||
|
||||
if int(data.status) == 200:
|
||||
retData = data.read()
|
||||
contentType = data.getheader('content-encoding')
|
||||
log.debug("Data Len Before : " + str(len(retData)))
|
||||
log.debug("Data Len Before: {0}", len(retData))
|
||||
if (contentType == "gzip"):
|
||||
retData = StringIO.StringIO(retData)
|
||||
gzipper = gzip.GzipFile(fileobj=retData)
|
||||
@@ -388,24 +387,21 @@ class DownloadUtils():
|
||||
return_data = retData
|
||||
if headers is not None and isinstance(headers, dict):
|
||||
headers.update(data.getheaders())
|
||||
log.debug("Data Len After : " + str(len(return_data)))
|
||||
log.debug("Data Len After: {0}", len(return_data))
|
||||
log.debug("====== 200 returned =======")
|
||||
log.debug("Content-Type : " + str(contentType))
|
||||
log.debug(return_data)
|
||||
log.debug("Content-Type: {0}", contentType)
|
||||
log.debug("{0}", return_data)
|
||||
log.debug("====== 200 finished ======")
|
||||
|
||||
elif int(data.status) >= 400:
|
||||
error = "HTTP response error: " + str(data.status) + " " + str(data.reason)
|
||||
log.error(error)
|
||||
log.error("HTTP response error: {0} {1}", data.status, data.reason)
|
||||
if suppress is False:
|
||||
xbmcgui.Dialog().notification(i18n("connection_error"),
|
||||
i18n('url_error_') % str(data.reason),
|
||||
icon="special://home/addons/plugin.video.embycon/icon.png")
|
||||
log.error(error)
|
||||
|
||||
except Exception, msg:
|
||||
error = "Unable to connect to " + str(server) + " : " + str(msg)
|
||||
log.error(error)
|
||||
log.error("Unable to connect to {0} : {1}", server, msg)
|
||||
if suppress is False:
|
||||
xbmcgui.Dialog().notification(i18n("connection_error"),
|
||||
str(msg),
|
||||
@@ -413,7 +409,7 @@ class DownloadUtils():
|
||||
|
||||
finally:
|
||||
try:
|
||||
log.debug("Closing HTTP connection: " + str(conn))
|
||||
log.debug("Closing HTTP connection: {0}", conn)
|
||||
conn.close()
|
||||
except:
|
||||
pass
|
||||
|
||||
@@ -28,7 +28,7 @@ def catch_except(errors=(Exception, ), default_value=False):
|
||||
try:
|
||||
submit_error_data()
|
||||
except Exception as error:
|
||||
log.debug("Sending Error Data Failed: " + str(error))
|
||||
log.debug("Sending Error Data Failed: {0}", error)
|
||||
raise
|
||||
return default_value
|
||||
return wrapper
|
||||
@@ -56,7 +56,7 @@ def submit_error_data():
|
||||
data["report_error"] = str(error)
|
||||
|
||||
post_data = json.dumps(data)
|
||||
log.debug("ERROR_DATA: " + post_data)
|
||||
log.debug("ERROR_DATA: {0}", post_data)
|
||||
|
||||
server = "allthedata.pythonanywhere.com"
|
||||
url_path = "/submit"
|
||||
@@ -65,7 +65,7 @@ def submit_error_data():
|
||||
head["Content-Type"] = "application/json"
|
||||
conn.request(method="POST", url=url_path, body=post_data, headers=head)
|
||||
data = conn.getresponse()
|
||||
log.debug("Submit Responce Code: " + str(data.status))
|
||||
log.debug("Submit Responce Code: {0}", data.status)
|
||||
|
||||
|
||||
def format_exception():
|
||||
@@ -126,7 +126,7 @@ def format_exception():
|
||||
# log.error(str(fileStackTrace))
|
||||
except Exception as e:
|
||||
fileStackTrace = None
|
||||
log.error(e)
|
||||
log.error("{0}", e)
|
||||
|
||||
errorType = "NA"
|
||||
errorFile = "NA"
|
||||
|
||||
@@ -59,11 +59,11 @@ def mainEntryPoint():
|
||||
pr.enable()
|
||||
|
||||
ADDON_VERSION = ClientInformation().getVersion()
|
||||
log.debug("Running Python: " + str(sys.version_info))
|
||||
log.debug("Running EmbyCon: " + str(ADDON_VERSION))
|
||||
log.debug("Kodi BuildVersion: " + xbmc.getInfoLabel("System.BuildVersion"))
|
||||
log.debug("Kodi Version: " + str(kodi_version))
|
||||
log.debug("Script argument data: " + str(sys.argv))
|
||||
log.debug("Running Python: {0}", sys.version_info)
|
||||
log.debug("Running EmbyCon: {0}", ADDON_VERSION)
|
||||
log.debug("Kodi BuildVersion: {0}", xbmc.getInfoLabel("System.BuildVersion"))
|
||||
log.debug("Kodi Version: {0}", kodi_version)
|
||||
log.debug("Script argument data: {0}", sys.argv)
|
||||
|
||||
try:
|
||||
params = get_params(sys.argv[2])
|
||||
@@ -74,7 +74,7 @@ def mainEntryPoint():
|
||||
|
||||
if (len(params) == 0):
|
||||
windowParams = home_window.getProperty("Params")
|
||||
log.debug("windowParams : " + windowParams)
|
||||
log.debug("windowParams: {0}", windowParams)
|
||||
# home_window.clearProperty("Params")
|
||||
if (windowParams):
|
||||
try:
|
||||
@@ -82,7 +82,7 @@ def mainEntryPoint():
|
||||
except:
|
||||
params = {}
|
||||
|
||||
log.debug("Script params = " + str(params))
|
||||
log.debug("Script params: {0}", params)
|
||||
|
||||
param_url = params.get('url', None)
|
||||
|
||||
@@ -173,8 +173,8 @@ def mainEntryPoint():
|
||||
trakttokodi.entry_point(params)
|
||||
else:
|
||||
checkServer(notify=False)
|
||||
log.debug("EmbyCon -> Mode: " + str(mode))
|
||||
log.debug("EmbyCon -> URL: " + str(param_url))
|
||||
log.debug("EmbyCon -> Mode: {0}", mode)
|
||||
log.debug("EmbyCon -> URL: {0}", param_url)
|
||||
|
||||
if mode == "GET_CONTENT":
|
||||
getContent(param_url, params)
|
||||
@@ -204,7 +204,7 @@ def mainEntryPoint():
|
||||
|
||||
|
||||
def markWatched(item_id):
|
||||
log.debug("Mark Item Watched : " + item_id)
|
||||
log.debug("Mark Item Watched: {0}", item_id)
|
||||
url = "{server}/emby/Users/{userid}/PlayedItems/" + item_id
|
||||
downloadUtils.downloadUrl(url, postBody="", method="POST")
|
||||
home_window = HomeWindow()
|
||||
@@ -214,7 +214,7 @@ def markWatched(item_id):
|
||||
|
||||
|
||||
def markUnwatched(item_id):
|
||||
log.debug("Mark Item UnWatched : " + item_id)
|
||||
log.debug("Mark Item UnWatched: {0}", item_id)
|
||||
url = "{server}/emby/Users/{userid}/PlayedItems/" + item_id
|
||||
downloadUtils.downloadUrl(url, method="DELETE")
|
||||
home_window = HomeWindow()
|
||||
@@ -224,7 +224,7 @@ def markUnwatched(item_id):
|
||||
|
||||
|
||||
def markFavorite(item_id):
|
||||
log.debug("Add item to favourites : " + item_id)
|
||||
log.debug("Add item to favourites: {0}", item_id)
|
||||
url = "{server}/emby/Users/{userid}/FavoriteItems/" + item_id
|
||||
downloadUtils.downloadUrl(url, postBody="", method="POST")
|
||||
home_window = HomeWindow()
|
||||
@@ -234,7 +234,7 @@ def markFavorite(item_id):
|
||||
|
||||
|
||||
def unmarkFavorite(item_id):
|
||||
log.debug("Remove item from favourites : " + item_id)
|
||||
log.debug("Remove item from favourites: {0}", item_id)
|
||||
url = "{server}/emby/Users/{userid}/FavoriteItems/" + item_id
|
||||
downloadUtils.downloadUrl(url, method="DELETE")
|
||||
home_window = HomeWindow()
|
||||
@@ -246,7 +246,7 @@ def unmarkFavorite(item_id):
|
||||
def delete(item_id):
|
||||
return_value = xbmcgui.Dialog().yesno(i18n('confirm_file_delete'), i18n('file_delete_confirm'))
|
||||
if return_value:
|
||||
log.debug('Deleting Item : ' + item_id)
|
||||
log.debug('Deleting Item: {0}', item_id)
|
||||
url = '{server}/emby/Items/' + item_id
|
||||
progress = xbmcgui.DialogProgress()
|
||||
progress.create(i18n('deleting'), i18n('waiting_server_delete'))
|
||||
@@ -258,7 +258,7 @@ def delete(item_id):
|
||||
|
||||
|
||||
def get_params(paramstring):
|
||||
log.debug("Parameter string: " + paramstring)
|
||||
log.debug("Parameter string: {0}", paramstring)
|
||||
param = {}
|
||||
if len(paramstring) >= 2:
|
||||
params = paramstring
|
||||
@@ -280,12 +280,12 @@ def get_params(paramstring):
|
||||
elif (len(splitparams)) == 3:
|
||||
param[splitparams[0]] = splitparams[1] + "=" + splitparams[2]
|
||||
|
||||
log.debug("EmbyCon -> Detected parameters: " + str(param))
|
||||
log.debug("EmbyCon -> Detected parameters: {0}", param)
|
||||
return param
|
||||
|
||||
|
||||
def setSort(pluginhandle, viewType):
|
||||
log.debug("SETTING_SORT for media type: " + str(viewType))
|
||||
log.debug("SETTING_SORT for media type: {0}", viewType)
|
||||
if viewType == "BoxSets":
|
||||
xbmcplugin.addSortMethod(pluginhandle, xbmcplugin.SORT_METHOD_VIDEO_YEAR)
|
||||
xbmcplugin.addSortMethod(pluginhandle, xbmcplugin.SORT_METHOD_VIDEO_SORT_TITLE_IGNORE_THE)
|
||||
@@ -307,8 +307,8 @@ def getContent(url, params):
|
||||
if not media_type:
|
||||
xbmcgui.Dialog().ok(i18n('error'), i18n('no_media_type'))
|
||||
|
||||
log.debug("URL: " + str(url))
|
||||
log.debug("MediaType: " + str(media_type))
|
||||
log.debug("URL: {0}", url)
|
||||
log.debug("MediaType: {0}", media_type)
|
||||
pluginhandle = int(sys.argv[1])
|
||||
|
||||
settings = xbmcaddon.Addon(id='plugin.video.embycon')
|
||||
@@ -330,7 +330,7 @@ def getContent(url, params):
|
||||
elif media_type == "season" or media_type == "episodes":
|
||||
viewType = "Episodes"
|
||||
xbmcplugin.setContent(pluginhandle, 'episodes')
|
||||
log.debug("ViewType: " + viewType)
|
||||
log.debug("ViewType: {0}", viewType)
|
||||
|
||||
setSort(pluginhandle, viewType)
|
||||
|
||||
@@ -512,7 +512,7 @@ def processDirectory(results, progress, params):
|
||||
return dirItems
|
||||
|
||||
def showMenu(params):
|
||||
log.debug("showMenu(): " + str(params))
|
||||
log.debug("showMenu(): {0}", params)
|
||||
|
||||
action_items = []
|
||||
li = xbmcgui.ListItem("Play")
|
||||
@@ -540,14 +540,14 @@ def showMenu(params):
|
||||
selected_action = ""
|
||||
if selected_action_item is not None:
|
||||
selected_action = selected_action_item.getProperty('menu_id')
|
||||
log.debug("Menu Action Selected: " + str(selected_action_item))
|
||||
log.debug("Menu Action Selected: {0}", selected_action_item)
|
||||
del action_menu
|
||||
|
||||
if selected_action == "play":
|
||||
log.debug("Play Item")
|
||||
#list_item = populate_listitem(params["item_id"])
|
||||
#result = xbmcgui.Dialog().info(list_item)
|
||||
#log.debug("xbmcgui.Dialog().info: " + str(result))
|
||||
#log.debug("xbmcgui.Dialog().info: {0}", result)
|
||||
PLAY(params)
|
||||
elif selected_action == "transcode":
|
||||
params['force_transcode'] = 'true'
|
||||
@@ -564,12 +564,12 @@ def showMenu(params):
|
||||
|
||||
|
||||
def populate_listitem(item_id):
|
||||
log.debug("populate_listitem: " + item_id)
|
||||
log.debug("populate_listitem: {0}", item_id)
|
||||
|
||||
url = "{server}/emby/Users/{userid}/Items/" + item_id + "?format=json"
|
||||
jsonData = downloadUtils.downloadUrl(url)
|
||||
result = json.loads(jsonData)
|
||||
log.debug("populate_listitem item info: " + str(result))
|
||||
log.debug("populate_listitem item info: {0}", result)
|
||||
|
||||
'''
|
||||
server = downloadUtils.getServer()
|
||||
@@ -584,7 +584,7 @@ def populate_listitem(item_id):
|
||||
details, extraData = extract_item_info(result,gui_options )
|
||||
u, list_item, folder = add_gui_item(result["Id"], details, extraData, {}, folder=False)
|
||||
|
||||
log.debug("list_item path: " + u)
|
||||
log.debug("list_item path: {0}", u)
|
||||
|
||||
#list_item.setProperty('IsPlayable', 'false')
|
||||
#list_item.setPath(u)
|
||||
@@ -618,7 +618,7 @@ def populate_listitem(item_id):
|
||||
|
||||
|
||||
def showContent(pluginName, handle, params):
|
||||
log.debug("showContent Called: " + str(params))
|
||||
log.debug("showContent Called: {0}", params)
|
||||
|
||||
item_type = params.get("item_type")
|
||||
|
||||
@@ -632,11 +632,11 @@ def showContent(pluginName, handle, params):
|
||||
"&IsMissing=False"
|
||||
"&IncludeItemTypes=" + item_type)
|
||||
|
||||
log.debug("showContent Content Url : " + str(contentUrl))
|
||||
log.debug("showContent Content Url: {0}", contentUrl)
|
||||
getContent(contentUrl, params)
|
||||
|
||||
def showParentContent(pluginName, handle, params):
|
||||
log.debug("showParentContent Called: " + str(params))
|
||||
log.debug("showParentContent Called: {0}", params)
|
||||
|
||||
settings = xbmcaddon.Addon(id='plugin.video.embycon')
|
||||
|
||||
@@ -651,7 +651,7 @@ def showParentContent(pluginName, handle, params):
|
||||
"&Fields=" + detailsString +
|
||||
"&format=json")
|
||||
|
||||
log.debug("showParentContent Content Url : " + str(contentUrl))
|
||||
log.debug("showParentContent Content Url: {0}", contentUrl)
|
||||
getContent(contentUrl, params)
|
||||
|
||||
|
||||
@@ -683,7 +683,7 @@ def searchResults(params):
|
||||
|
||||
home_window.setProperty("last_search", user_input)
|
||||
|
||||
log.debug('searchResults Called: ' + str(params))
|
||||
log.debug('searchResults Called: {0}', params)
|
||||
|
||||
handle = int(sys.argv[1])
|
||||
query = user_input
|
||||
@@ -732,7 +732,7 @@ def searchResults(params):
|
||||
progress.update(0, i18n('retrieving_data'))
|
||||
|
||||
result = dataManager.GetContent(content_url)
|
||||
log.debug('SearchHints jsonData: ' + str(result))
|
||||
log.debug('SearchHints jsonData: {0}', result)
|
||||
|
||||
results = result.get('SearchHints')
|
||||
if results is None:
|
||||
@@ -740,13 +740,13 @@ def searchResults(params):
|
||||
|
||||
item_count = 1
|
||||
total_results = int(result.get('TotalRecordCount', 0))
|
||||
log.debug('SEARCH_TOTAL_RESULTS: ' + str(total_results))
|
||||
log.debug('SEARCH_TOTAL_RESULTS: {0}', total_results)
|
||||
list_items = []
|
||||
|
||||
for item in results:
|
||||
item_id = item.get('ItemId')
|
||||
name = title = item.get('Name')
|
||||
log.debug('SEARCH_RESULT_NAME: ' + name)
|
||||
log.debug('SEARCH_RESULT_NAME: {0}', name)
|
||||
|
||||
if progress is not None:
|
||||
percent_complete = (float(item_count) / float(total_results)) * 100
|
||||
@@ -805,7 +805,7 @@ def searchResults(params):
|
||||
list_item = xbmcgui.ListItem(label=name, iconImage=art['thumb'])
|
||||
|
||||
info = {'title': title, 'tvshowtitle': tvshowtitle, 'mediatype': media_type}
|
||||
log.debug('SEARCH_RESULT_ART: ' + str(art))
|
||||
log.debug('SEARCH_RESULT_ART: {0}', art)
|
||||
list_item.setProperty('fanart_image', art['fanart'])
|
||||
list_item.setProperty('discart', art['discart'])
|
||||
list_item.setArt(art)
|
||||
@@ -843,7 +843,7 @@ def searchResults(params):
|
||||
|
||||
info['year'] = item.get('ProductionYear', '')
|
||||
|
||||
log.debug('SEARCH_RESULT_INFO: ' + str(info))
|
||||
log.debug('SEARCH_RESULT_INFO: {0}', info)
|
||||
list_item.setInfo('Video', infoLabels=info)
|
||||
|
||||
item_tuple = (list_item_url, list_item, is_folder)
|
||||
@@ -860,20 +860,20 @@ def searchResults(params):
|
||||
def PLAY(params):
|
||||
log.debug("== ENTER: PLAY ==")
|
||||
|
||||
log.debug("PLAY ACTION PARAMS: " + str(params))
|
||||
log.debug("PLAY ACTION PARAMS: {0}", params)
|
||||
item_id = params.get("item_id")
|
||||
|
||||
auto_resume = int(params.get("auto_resume", "-1"))
|
||||
log.debug("AUTO_RESUME: " + str(auto_resume))
|
||||
log.debug("AUTO_RESUME: {0}", auto_resume)
|
||||
|
||||
forceTranscode = params.get("force_transcode", None) is not None
|
||||
log.debug("FORCE_TRANSCODE: " + str(forceTranscode))
|
||||
log.debug("FORCE_TRANSCODE: {0}", forceTranscode)
|
||||
|
||||
media_source_id = params.get("media_source_id", "")
|
||||
log.debug("media_source_id: " + str(media_source_id))
|
||||
log.debug("media_source_id: {0}", media_source_id)
|
||||
|
||||
use_default = params.get("use_default", "false") == "true"
|
||||
log.debug("use_default: " + str(use_default))
|
||||
log.debug("use_default: {0}", use_default)
|
||||
|
||||
# set the current playing item id
|
||||
# set all the playback info, this will be picked up by the service
|
||||
@@ -902,7 +902,7 @@ def playTrailer(id):
|
||||
|
||||
jsonData = downloadUtils.downloadUrl(url)
|
||||
result = json.loads(jsonData)
|
||||
log.debug("LocalTrailers" + str(result))
|
||||
log.debug("LocalTrailers {0}", result)
|
||||
|
||||
trailer_list = []
|
||||
for trailer in result:
|
||||
@@ -915,7 +915,7 @@ def playTrailer(id):
|
||||
url = ("{server}/emby/Users/{userid}/Items/%s?format=json&Fields=RemoteTrailers" % id)
|
||||
jsonData = downloadUtils.downloadUrl(url)
|
||||
result = json.loads(jsonData)
|
||||
log.debug("RemoteTrailers" + str(result))
|
||||
log.debug("RemoteTrailers: {0}", result)
|
||||
|
||||
remote_trailers = result.get("RemoteTrailers", [])
|
||||
for trailer in remote_trailers:
|
||||
@@ -927,7 +927,7 @@ def playTrailer(id):
|
||||
info["url"] = url
|
||||
trailer_list.append(info)
|
||||
|
||||
log.debug("TrailerList: " + str(trailer_list))
|
||||
log.debug("TrailerList: {0}", trailer_list)
|
||||
|
||||
trailer_text = []
|
||||
for trailer in trailer_list:
|
||||
@@ -938,7 +938,7 @@ def playTrailer(id):
|
||||
resp = dialog.select(i18n('select_trailer'), trailer_text)
|
||||
if resp > -1:
|
||||
trailer = trailer_list[resp]
|
||||
log.debug("SelectedTrailer: " + str(trailer))
|
||||
log.debug("SelectedTrailer: {0}", trailer)
|
||||
|
||||
if trailer.get("type") == "local":
|
||||
params = {}
|
||||
@@ -947,7 +947,7 @@ def playTrailer(id):
|
||||
|
||||
elif trailer.get("type") == "remote":
|
||||
youtube_id = trailer.get("url").rsplit('=', 1)[1]
|
||||
log.debug("YoutubeID: " + str(youtube_id))
|
||||
log.debug("YoutubeID: {0}", youtube_id)
|
||||
youtube_plugin = "PlayMedia(plugin://plugin.video.youtube/?action=play_video&videoid=%s)" % youtube_id
|
||||
xbmc.executebuiltin(youtube_plugin)
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ def extract_item_info(item, gui_options):
|
||||
nameInfo["SeriesName"] = ""
|
||||
nameInfo["SeasonIndex"] = "%02d" % item_details.season_number
|
||||
nameInfo["EpisodeIndex"] = "%02d" % item_details.episode_number
|
||||
log.debug("FormatName : %s | %s" % (name_format, nameInfo))
|
||||
log.debug("FormatName: {0} | {1}", name_format, nameInfo)
|
||||
item_details.name = name_format.format(**nameInfo).strip()
|
||||
|
||||
else:
|
||||
@@ -188,7 +188,7 @@ def extract_item_info(item, gui_options):
|
||||
elif person_type == "Writing":
|
||||
item_details.writer = person["Name"]
|
||||
elif person_type == "Actor":
|
||||
log.debug("Person : %s" % person)
|
||||
log.debug("Person: {0}", person)
|
||||
person_name = person["Name"]
|
||||
person_role = person["Role"]
|
||||
person_id = person["Id"]
|
||||
@@ -275,8 +275,7 @@ def add_gui_item(url, item_details, display_options, folder=True):
|
||||
|
||||
url = url.encode('utf-8')
|
||||
|
||||
log.debug("Adding GuiItem for [%s]" % item_details.name)
|
||||
log.debug("Passed extraData: " + str(item_details.__dict__))
|
||||
log.debug("Passed item_details: {0}", item_details.__dict__)
|
||||
|
||||
if not item_details.name:
|
||||
return
|
||||
@@ -335,7 +334,7 @@ def add_gui_item(url, item_details, display_options, folder=True):
|
||||
else:
|
||||
list_item = xbmcgui.ListItem(listItemName, iconImage=thumbPath, thumbnailImage=thumbPath)
|
||||
|
||||
log.debug("Setting thumbnail as " + thumbPath)
|
||||
log.debug("Setting thumbnail as: {0}", thumbPath)
|
||||
|
||||
# calculate percentage
|
||||
if (cappedPercentage != 0):
|
||||
|
||||
@@ -23,17 +23,17 @@ class HomeWindow():
|
||||
def getProperty(self, key):
|
||||
key = self.id_string % key
|
||||
value = self.window.getProperty(key)
|
||||
# log.debug('HomeWindow: getProperty |%s| -> |%s|' % (key, value))
|
||||
# log.debug('HomeWindow: getProperty |{0}| -> |{1}|', key, value)
|
||||
return value
|
||||
|
||||
def setProperty(self, key, value):
|
||||
key = self.id_string % key
|
||||
# log.debug('HomeWindow: setProperty |%s| -> |%s|' % (key, value))
|
||||
# log.debug('HomeWindow: setProperty |{0}| -> |{1}|', key, value)
|
||||
self.window.setProperty(key, value)
|
||||
|
||||
def clearProperty(self, key):
|
||||
key = self.id_string % key
|
||||
# log.debug('HomeWindow: clearProperty |%s|' % key)
|
||||
# log.debug('HomeWindow: clearProperty |{0}|', key)
|
||||
self.window.clearProperty(key)
|
||||
|
||||
|
||||
@@ -59,9 +59,9 @@ def getKodiVersion():
|
||||
result = result.get("result")
|
||||
versionData = result.get("version")
|
||||
version = float(str(versionData.get("major")) + "." + str(versionData.get("minor")))
|
||||
log.debug("Version : " + str(version) + " - " + str(versionData))
|
||||
log.debug("Version: {0} - {1}", version, versionData)
|
||||
except:
|
||||
version = 0.0
|
||||
log.error("Version Error : RAW Version Data : " + str(result))
|
||||
log.error("Version Error : RAW Version Data: {0}", result)
|
||||
|
||||
return version
|
||||
|
||||
@@ -69,7 +69,7 @@ def showGenreList(item_type=None):
|
||||
url = sys.argv[0] + ("?url=" + urllib.quote(collection['path']) +
|
||||
"&mode=GET_CONTENT" +
|
||||
"&media_type=" + collection["media_type"])
|
||||
log.debug("addMenuDirectoryItem: " + collection.get('title', i18n('unknown')) + " " + str(url))
|
||||
log.debug("addMenuDirectoryItem: {0} ({1})", collection.get('title'), url)
|
||||
addMenuDirectoryItem(collection.get('title', i18n('unknown')), url, thumbnail=collection.get("thumbnail"))
|
||||
|
||||
xbmcplugin.endOfDirectory(int(sys.argv[1]))
|
||||
@@ -115,7 +115,7 @@ def showMovieAlphaList():
|
||||
for collection in collections:
|
||||
url = (sys.argv[0] + "?url=" + urllib.quote(collection['path']) +
|
||||
"&mode=GET_CONTENT&media_type=" + collection["media_type"])
|
||||
log.debug("addMenuDirectoryItem: " + collection.get('title', i18n('unknown')) + " " + str(url))
|
||||
log.debug("addMenuDirectoryItem: {0} ({1})", collection.get('title'), url)
|
||||
addMenuDirectoryItem(collection.get('title', i18n('unknown')), url)
|
||||
|
||||
xbmcplugin.endOfDirectory(int(sys.argv[1]))
|
||||
@@ -135,7 +135,7 @@ def showYearsList():
|
||||
"&Recursive=true" +
|
||||
"&UserId={userid}" +
|
||||
"&format=json")
|
||||
log.debug("YEAR_LIST_DATA : %s" % jsonData)
|
||||
log.debug("YEAR_LIST_DATA: {0}", jsonData)
|
||||
|
||||
result = json.loads(jsonData)
|
||||
if result is not None:
|
||||
@@ -163,7 +163,7 @@ def showYearsList():
|
||||
url = sys.argv[0] + ("?url=" + urllib.quote(collection['path']) +
|
||||
"&mode=GET_CONTENT" +
|
||||
"&media_type=" + collection["media_type"])
|
||||
log.debug("addMenuDirectoryItem: " + collection.get('title', i18n('unknown')) + " " + str(url))
|
||||
log.debug("addMenuDirectoryItem: {0} ({1})", collection.get('title'), url)
|
||||
addMenuDirectoryItem(collection.get('title', i18n('unknown')), url)#, thumbnail=collection.get("thumbnail"))
|
||||
|
||||
xbmcplugin.addSortMethod(int(sys.argv[1]), xbmcplugin.SORT_METHOD_LABEL)
|
||||
@@ -188,7 +188,7 @@ def displaySections():
|
||||
"&mode=GET_CONTENT&media_type=" + collection["media_type"])
|
||||
if collection.get("name_format") is not None:
|
||||
url += "&name_format=" + urllib.quote(collection.get("name_format"))
|
||||
log.debug("addMenuDirectoryItem: " + collection.get('title', i18n('unknown')) + " " + str(url))
|
||||
log.debug("addMenuDirectoryItem: {0} ({1})", collection.get('title'), url)
|
||||
addMenuDirectoryItem(collection.get('title', i18n('unknown')), url, thumbnail=collection.get("thumbnail"))
|
||||
|
||||
addMenuDirectoryItem(i18n('movies_year'), "plugin://plugin.video.embycon/?mode=MOVIE_YEARS")
|
||||
@@ -230,7 +230,7 @@ def getCollections(detailsString):
|
||||
return []
|
||||
|
||||
parentid = result.get("Id")
|
||||
log.debug("parentid : " + parentid)
|
||||
log.debug("parentid: {0}", parentid)
|
||||
|
||||
htmlpath = "{server}/emby/Users/{userid}/items?ParentId=" + parentid + "&Sortby=SortName&format=json"
|
||||
result = data_manager.GetContent(htmlpath)
|
||||
@@ -246,8 +246,8 @@ def getCollections(detailsString):
|
||||
item_name = (item.get("Name")).encode('utf-8')
|
||||
|
||||
collection_type = item.get('CollectionType', None)
|
||||
log.debug("CollectionType: " + str(collection_type))
|
||||
log.debug("Title: " + item_name)
|
||||
log.debug("CollectionType: {0}", collection_type)
|
||||
log.debug("Title: {0}", item_name)
|
||||
|
||||
if collection_type in ["tvshows", "movies", "boxsets"]:
|
||||
collections.append({
|
||||
|
||||
@@ -31,7 +31,7 @@ def playFile(play_info):
|
||||
media_source_id = play_info.get("media_source_id", "")
|
||||
use_default = play_info.get("use_default", False)
|
||||
|
||||
log.debug("playFile id(%s) resume(%s) force_transcode(%s)" % (id, auto_resume, force_transcode))
|
||||
log.debug("playFile id({0}) resume({1}) force_transcode({2})", id, auto_resume, force_transcode)
|
||||
|
||||
settings = xbmcaddon.Addon('plugin.video.embycon')
|
||||
addon_path = settings.getAddonInfo('path')
|
||||
@@ -42,7 +42,7 @@ def playFile(play_info):
|
||||
url = "{server}/emby/Users/{userid}/Items/" + id + "?format=json"
|
||||
data_manager = DataManager()
|
||||
result = data_manager.GetContent(url)
|
||||
log.debug("Playfile item info: " + str(result))
|
||||
log.debug("Playfile item info: {0}", result)
|
||||
|
||||
if result is None:
|
||||
log.debug("Playfile item was None, so can not play!")
|
||||
@@ -101,13 +101,13 @@ def playFile(play_info):
|
||||
resumeDialog.doModal()
|
||||
resume_result = resumeDialog.getResumeAction()
|
||||
del resumeDialog
|
||||
log.debug("Resume Dialog Result: " + str(resume_result))
|
||||
log.debug("Resume Dialog Result: {0}", resume_result)
|
||||
|
||||
# check system settings for play action
|
||||
# if prompt is set ask to set it to auto resume
|
||||
params = {"setting": "myvideos.selectaction"}
|
||||
setting_result = json_rpc('Settings.getSettingValue').execute(params)
|
||||
log.debug("Current Setting (myvideos.selectaction): %s" % setting_result)
|
||||
log.debug("Current Setting (myvideos.selectaction): {0}", setting_result)
|
||||
current_value = setting_result.get("result", None)
|
||||
if current_value is not None:
|
||||
current_value = current_value.get("value", -1)
|
||||
@@ -116,7 +116,7 @@ def playFile(play_info):
|
||||
if return_value:
|
||||
params = {"setting": "myvideos.selectaction", "value": 2}
|
||||
json_rpc_result = json_rpc('Settings.setSettingValue').execute(params)
|
||||
log.debug("Save Setting (myvideos.selectaction): %s" % json_rpc_result)
|
||||
log.debug("Save Setting (myvideos.selectaction): {0}", json_rpc_result)
|
||||
|
||||
if resume_result == 1:
|
||||
seekTime = 0
|
||||
@@ -127,7 +127,7 @@ def playFile(play_info):
|
||||
playback_type = "0"
|
||||
playurl = None
|
||||
play_session_id = id_generator()
|
||||
log.debug("play_session_id: %s" % play_session_id)
|
||||
log.debug("play_session_id: {0}", play_session_id)
|
||||
|
||||
# check if strm file, path will contain contain strm contents
|
||||
if selected_media_source.get('Container') == 'strm':
|
||||
@@ -138,7 +138,7 @@ def playFile(play_info):
|
||||
if not playurl:
|
||||
playurl, playback_type = PlayUtils().getPlayUrl(id, selected_media_source, force_transcode, play_session_id)
|
||||
|
||||
log.debug("Play URL: " + str(playurl) + " ListItem Properties: " + str(listitem_props))
|
||||
log.debug("Play URL: {0} ListItem Properties: {1}", playurl, listitem_props)
|
||||
|
||||
playback_type_string = "DirectPlay"
|
||||
if playback_type == "2":
|
||||
@@ -174,7 +174,7 @@ def playFile(play_info):
|
||||
|
||||
if playback_type == "2": # if transcoding then prompt for audio and subtitle
|
||||
playurl = audioSubsPref(playurl, list_item, selected_media_source, id, use_default)
|
||||
log.debug("New playurl for transcoding : " + playurl)
|
||||
log.debug("New playurl for transcoding: {0}", playurl)
|
||||
|
||||
elif playback_type == "1": # for direct stream add any streamable subtitles
|
||||
externalSubs(selected_media_source, list_item, id)
|
||||
@@ -336,7 +336,7 @@ def audioSubsPref(url, list_item, media_source, item_id, use_default):
|
||||
if selectSubsIndex in downloadableStreams:
|
||||
url = [("%s/Videos/%s/%s/Subtitles/%s/Stream.srt"
|
||||
% (downloadUtils.getServer(), item_id, item_id, selectSubsIndex))]
|
||||
log.debug("Streaming subtitles url: %s %s" % (selectSubsIndex, url))
|
||||
log.debug("Streaming subtitles url: {0} {1}", selectSubsIndex, url)
|
||||
list_item.setSubtitles(url)
|
||||
else:
|
||||
# Burn subtitles
|
||||
|
||||
@@ -35,8 +35,8 @@ def getServerDetails():
|
||||
sock.setsockopt(socket.SOL_IP, socket.IP_MULTICAST_LOOP, 1)
|
||||
sock.setsockopt(socket.IPPROTO_IP, socket.SO_REUSEADDR, 1)
|
||||
|
||||
log.debug("MutliGroup : " + str(MULTI_GROUP))
|
||||
log.debug("Sending UDP Data : " + MESSAGE)
|
||||
log.debug("MutliGroup: {0}", MULTI_GROUP)
|
||||
log.debug("Sending UDP Data: {0}", MESSAGE)
|
||||
sock.sendto(MESSAGE, MULTI_GROUP)
|
||||
|
||||
servers = []
|
||||
@@ -46,10 +46,10 @@ def getServerDetails():
|
||||
data, addr = sock.recvfrom(1024) # buffer size
|
||||
servers.append(json.loads(data))
|
||||
except Exception as e:
|
||||
log.error("Read UPD responce: %s" % e)
|
||||
log.error("Read UPD responce: {0}", e)
|
||||
# break
|
||||
|
||||
log.debug("Found Servers: %s" % servers)
|
||||
log.debug("Found Servers: {0}", servers)
|
||||
return servers
|
||||
|
||||
|
||||
@@ -83,14 +83,14 @@ def checkServer(force=False, change_user=False, notify=False):
|
||||
return
|
||||
|
||||
serverUrl = serverInfo[return_index]["Address"]
|
||||
log.debug("Selected server: " + serverUrl)
|
||||
log.debug("Selected server: {0}", serverUrl)
|
||||
|
||||
# parse the url
|
||||
url_bits = urlparse(serverUrl)
|
||||
server_address = url_bits.hostname
|
||||
server_port = str(url_bits.port)
|
||||
server_protocol = url_bits.scheme
|
||||
log.debug("Detected server info " + server_protocol + " - " + server_address + " - " + server_port)
|
||||
log.debug("Detected server info {0} - {1} - {2}", server_protocol, server_address, server_port)
|
||||
|
||||
# save the server info
|
||||
settings.setSetting("port", server_port)
|
||||
@@ -114,7 +114,7 @@ def checkServer(force=False, change_user=False, notify=False):
|
||||
log.debug("Getting user list")
|
||||
jsonData = downloadUtils.downloadUrl(serverUrl + "/emby/Users/Public?format=json", authenticate=False)
|
||||
|
||||
log.debug("jsonData : " + str(jsonData))
|
||||
log.debug("jsonData: {0}", jsonData)
|
||||
result = json.loads(jsonData)
|
||||
if result is None:
|
||||
xbmcgui.Dialog().ok(i18n('error'),
|
||||
@@ -145,13 +145,13 @@ def checkServer(force=False, change_user=False, notify=False):
|
||||
names.insert(0, i18n('username_userinput'))
|
||||
user_list.insert(0, '')
|
||||
secured.insert(0, True)
|
||||
log.debug("User List : " + str(names))
|
||||
log.debug("User List : " + str(user_list))
|
||||
log.debug("User List: {0}", names)
|
||||
log.debug("User List: {0}", user_list)
|
||||
|
||||
return_value = xbmcgui.Dialog().select(i18n('select_user'), names)
|
||||
|
||||
if (return_value > -1):
|
||||
log.debug("Selected User Index : " + str(return_value))
|
||||
log.debug("Selected User Index: {0}", return_value)
|
||||
if return_value == 0:
|
||||
kb = xbmc.Keyboard()
|
||||
kb.setHeading(i18n('username:'))
|
||||
@@ -163,11 +163,11 @@ def checkServer(force=False, change_user=False, notify=False):
|
||||
else:
|
||||
selected_user = user_list[return_value]
|
||||
|
||||
log.debug("Selected User Name : " + str(selected_user))
|
||||
log.debug("Selected User Name: {0}", selected_user)
|
||||
|
||||
if selected_user:
|
||||
# we have a user so save it
|
||||
log.debug("Saving Username : " + selected_user)
|
||||
log.debug("Saving Username: {0}", selected_user)
|
||||
settings.setSetting("username", selected_user)
|
||||
if secured[return_value] is True:
|
||||
kb = xbmc.Keyboard()
|
||||
@@ -175,7 +175,7 @@ def checkServer(force=False, change_user=False, notify=False):
|
||||
kb.setHiddenInput(True)
|
||||
kb.doModal()
|
||||
if kb.isConfirmed():
|
||||
log.debug("Saving Password for Username : " + selected_user)
|
||||
log.debug("Saving Password for Username: {0}", selected_user)
|
||||
settings.setSetting('password', kb.getText())
|
||||
else:
|
||||
settings.setSetting('password', '')
|
||||
|
||||
@@ -35,27 +35,27 @@ def showServerSessions():
|
||||
if play_state is not None:
|
||||
runtime = 0
|
||||
media_id = play_state.get("MediaSourceId", None)
|
||||
log.debug("Media ID " + str(media_id))
|
||||
log.debug("Media ID: {0}", media_id)
|
||||
if media_id is not None:
|
||||
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))
|
||||
log.debug("Media Info: {0}", media_info)
|
||||
runtime = media_info.get("RunTimeTicks", 0)
|
||||
log.debug("Media Runtime " + str(runtime))
|
||||
log.debug("Media Runtime: {0}", runtime)
|
||||
|
||||
position_ticks = play_state.get("PositionTicks", 0)
|
||||
log.debug("Media PositionTicks " + str(position_ticks))
|
||||
log.debug("Media PositionTicks: {0}", position_ticks)
|
||||
if position_ticks > 0 and runtime > 0:
|
||||
percenatge_played = (position_ticks / float(runtime)) * 100.0
|
||||
percenatge_played = int(percenatge_played)
|
||||
|
||||
now_playing = session.get("NowPlayingItem", None)
|
||||
log.debug("NOW_PLAYING: " + str(now_playing))
|
||||
log.debug("NOW_PLAYING: {0}", now_playing)
|
||||
if now_playing is not None:
|
||||
session_info += " (" + now_playing.get("Name", "na") + " " + str(percenatge_played) + "%)"
|
||||
|
||||
log.debug(session_info)
|
||||
log.debug("session_info: {0}", session_info)
|
||||
list_item = xbmcgui.ListItem(label=session_info)
|
||||
item_tuple = ("", list_item, False)
|
||||
list_items.append(item_tuple)
|
||||
|
||||
@@ -19,23 +19,22 @@ class SimpleLogging():
|
||||
current_value = setting_result.get("result", None)
|
||||
if current_value is not None:
|
||||
self.enable_logging = current_value.get("value", False)
|
||||
#xbmc.log("LOGGING_ENABLED %s: %s" % (self.name, str(self.enable_logging)), level=xbmc.LOGDEBUG)
|
||||
xbmc.log("LOGGING_ENABLED %s : %s" % (self.name, str(self.enable_logging)), level=xbmc.LOGDEBUG)
|
||||
|
||||
def __str__(self):
|
||||
return "LoggingEnabled: " + str(self.enable_logging)
|
||||
|
||||
def error(self, msg):
|
||||
def error(self, fmt, *args, **kwargs):
|
||||
log_line = self.name + " (ERROR) -> " + fmt.format(*args, **kwargs)
|
||||
try:
|
||||
xbmc.log(self.format(msg, "ERROR"), level=xbmc.LOGERROR)
|
||||
xbmc.log(log_line, level=xbmc.LOGERROR)
|
||||
except UnicodeEncodeError:
|
||||
xbmc.log(self.format(msg, "ERROR").encode('utf-8'), level=xbmc.LOGERROR)
|
||||
xbmc.log(log_line.encode('utf-8'), level=xbmc.LOGERROR)
|
||||
|
||||
def debug(self, msg):
|
||||
if (self.enable_logging):
|
||||
def debug(self, fmt, *args, **kwargs):
|
||||
if self.enable_logging:
|
||||
log_line = self.name + " (DEBUG) -> " + fmt.format(*args, **kwargs)
|
||||
try:
|
||||
xbmc.log(self.format(msg, "DEBUG"), level=xbmc.LOGDEBUG)
|
||||
xbmc.log(log_line, level=xbmc.LOGDEBUG)
|
||||
except UnicodeEncodeError:
|
||||
xbmc.log(self.format(msg, "DEBUG").encode('utf-8'), level=xbmc.LOGDEBUG)
|
||||
|
||||
def format(self, msg, levelValue):
|
||||
return self.name + "(" + str(levelValue) + ") -> " + msg
|
||||
xbmc.log(log_line.encode('utf-8'), level=xbmc.LOGDEBUG)
|
||||
|
||||
@@ -111,7 +111,7 @@ def get_match(item_type, title, year, imdb_id):
|
||||
results = results.get('SearchHints')
|
||||
if results is None:
|
||||
results = []
|
||||
log.debug('SearchHints jsonData: ' + str(results))
|
||||
log.debug('SearchHints jsonData: {0}', results)
|
||||
|
||||
potential_matches = []
|
||||
|
||||
@@ -121,12 +121,12 @@ def get_match(item_type, title, year, imdb_id):
|
||||
if (name == title and int(year) == production_year) or (int(year) == production_year):
|
||||
potential_matches.append(item)
|
||||
|
||||
log.debug('Potential matches: ' + str(potential_matches))
|
||||
log.debug('Potential matches: {0}', potential_matches)
|
||||
|
||||
for item in potential_matches:
|
||||
item_imdb_id = get_imdb_id(item.get('ItemId'))
|
||||
if item_imdb_id == imdb_id:
|
||||
log.debug('Found match: ' + str(item))
|
||||
log.debug('Found match: {0}', item)
|
||||
return item
|
||||
|
||||
return None
|
||||
|
||||
@@ -10,7 +10,7 @@ def i18n(string_id):
|
||||
try:
|
||||
return addon.getLocalizedString(STRINGS[string_id]).encode('utf-8', 'ignore')
|
||||
except Exception as e:
|
||||
log.error('Failed String Lookup: %s (%s)' % (string_id, e))
|
||||
log.error('Failed String Lookup: {0} ({1})', string_id, e)
|
||||
return string_id
|
||||
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ from simple_logging import SimpleLogging
|
||||
from clientinfo import ClientInformation
|
||||
from json_rpc import json_rpc
|
||||
from translation import i18n
|
||||
from datamanager import DataManager
|
||||
|
||||
# define our global download utils
|
||||
downloadUtils = DownloadUtils()
|
||||
@@ -31,13 +32,13 @@ class PlayUtils():
|
||||
addonSettings = xbmcaddon.Addon(id='plugin.video.embycon')
|
||||
playback_type = addonSettings.getSetting("playback_type")
|
||||
server = downloadUtils.getServer()
|
||||
log.debug("playback_type: " + playback_type)
|
||||
log.debug("playback_type: {0}", playback_type)
|
||||
if force_transcode:
|
||||
log.debug("playback_type: FORCED_TRANSCODE")
|
||||
playurl = None
|
||||
log.debug("play_session_id: " + play_session_id)
|
||||
log.debug("play_session_id: {0}", play_session_id)
|
||||
media_source_id = media_source.get("Id")
|
||||
log.debug("media_source_id: " + media_source_id)
|
||||
log.debug("media_source_id: {0}", media_source_id)
|
||||
|
||||
is_h265 = False
|
||||
streams = media_source.get("MediaStreams", [])
|
||||
@@ -62,7 +63,7 @@ class PlayUtils():
|
||||
if playback_type == "2":
|
||||
|
||||
playback_bitrate = addonSettings.getSetting("playback_bitrate")
|
||||
log.debug("playback_bitrate: " + playback_bitrate)
|
||||
log.debug("playback_bitrate: {0}", playback_bitrate)
|
||||
|
||||
playback_max_width = addonSettings.getSetting("playback_max_width")
|
||||
playback_video_force_8 = addonSettings.getSetting("playback_video_force_8") == "true"
|
||||
@@ -117,7 +118,7 @@ class PlayUtils():
|
||||
user_token = downloadUtils.authenticate()
|
||||
playurl = playurl + "&api_key=" + user_token
|
||||
|
||||
log.debug("Playback URL: " + playurl)
|
||||
log.debug("Playback URL: {0}", playurl)
|
||||
return playurl.encode('utf-8'), playback_type
|
||||
|
||||
def getStrmDetails(self, media_source):
|
||||
@@ -135,12 +136,14 @@ class PlayUtils():
|
||||
lines = contents.split(line_break)
|
||||
for line in lines:
|
||||
line = line.strip()
|
||||
log.debug("STRM Line: " + line)
|
||||
log.debug("STRM Line: {0}", line)
|
||||
if line.startswith('#KODIPROP:'):
|
||||
match = re.search('#KODIPROP:(?P<item_property>[^=]+?)=(?P<property_value>.+)', line)
|
||||
if match:
|
||||
log.debug("STRM property found: " + match.group('item_property') + " Value: " + match.group('property_value'))
|
||||
listitem_props.append((match.group('item_property'), match.group('property_value')))
|
||||
item_property = match.group('item_property')
|
||||
property_value = match.group('property_value')
|
||||
log.debug("STRM property found: {0} value: {1}", item_property, property_value)
|
||||
listitem_props.append((item_property, property_value))
|
||||
else:
|
||||
log.debug("STRM #KODIPROP incorrect format")
|
||||
elif line.startswith('#'):
|
||||
@@ -150,7 +153,7 @@ class PlayUtils():
|
||||
playurl = line
|
||||
log.debug("STRM playback url found")
|
||||
|
||||
log.debug("Playback URL: " + str(playurl) + " ListItem Properties: " + str(listitem_props))
|
||||
log.debug("Playback URL: {0} ListItem Properties: {1}", playurl, listitem_props)
|
||||
return playurl, listitem_props
|
||||
|
||||
|
||||
@@ -276,13 +279,13 @@ def cache_artwork():
|
||||
web_port = {"setting": "services.webserverport"}
|
||||
result = json_rpc('Settings.GetSettingValue').execute(web_port)
|
||||
xbmc_port = result['result']['value']
|
||||
log.debug("xbmc_port: " + str(xbmc_port))
|
||||
log.debug("xbmc_port: {0}", xbmc_port)
|
||||
|
||||
# get the user
|
||||
web_user = {"setting": "services.webserverusername"}
|
||||
result = json_rpc('Settings.GetSettingValue').execute(web_user)
|
||||
xbmc_username = result['result']['value']
|
||||
log.debug("xbmc_username: " + str(xbmc_username))
|
||||
log.debug("xbmc_username: {0}", xbmc_username)
|
||||
|
||||
# get the password
|
||||
web_pass = {"setting": "services.webserverpassword"}
|
||||
@@ -298,7 +301,7 @@ def cache_artwork():
|
||||
|
||||
json_result = json_rpc('Textures.GetTextures').execute()
|
||||
textures = json_result.get("result", {}).get("textures", [])
|
||||
log.debug("texture ids: " + str(textures))
|
||||
log.debug("texture ids: {0}", textures)
|
||||
total = len(textures)
|
||||
for texture in textures:
|
||||
texture_id = texture["textureid"]
|
||||
@@ -340,11 +343,10 @@ def cache_artwork():
|
||||
'&ImageTypeLimit=1' +
|
||||
'&format=json')
|
||||
|
||||
results = downloadUtils.downloadUrl(url, method="GET")
|
||||
data_manager = DataManager()
|
||||
results = data_manager.GetContent(url)
|
||||
if results is None:
|
||||
results = []
|
||||
else:
|
||||
results = json.loads(results)
|
||||
|
||||
if isinstance(results, dict):
|
||||
results = results.get("Items")
|
||||
@@ -360,10 +362,10 @@ def cache_artwork():
|
||||
if image_url not in texture_urls and not image_url.endswith("&Tag=") and len(image_url) > 0:
|
||||
missing_texture_urls.add(image_url)
|
||||
|
||||
log.debug("texture_urls:" + str(texture_urls))
|
||||
log.debug("missing_texture_urls: " + str(missing_texture_urls))
|
||||
log.debug("Number of existing textures: %s" % len(texture_urls))
|
||||
log.debug("Number of missing textures: %s" % len(missing_texture_urls))
|
||||
log.debug("texture_urls: {0}", texture_urls)
|
||||
log.debug("missing_texture_urls: {0}", missing_texture_urls)
|
||||
log.debug("Number of existing textures: {0}", len(texture_urls))
|
||||
log.debug("Number of missing textures: {0}", len(missing_texture_urls))
|
||||
|
||||
kodi_http_server = "localhost:" + str(xbmc_port)
|
||||
headers = {}
|
||||
@@ -378,10 +380,10 @@ def cache_artwork():
|
||||
|
||||
count_done = 0
|
||||
for get_url in missing_texture_urls:
|
||||
log.debug("texture_url:" + get_url)
|
||||
log.debug("texture_url: {0}", get_url)
|
||||
url = double_urlencode(get_url)
|
||||
kodi_texture_url = ("/image/image://%s" % url)
|
||||
log.debug("kodi_texture_url: " + kodi_texture_url)
|
||||
log.debug("kodi_texture_url: {0}", kodi_texture_url)
|
||||
|
||||
percentage = int((float(index) / float(total)) * 100)
|
||||
message = "%s of %s" % (index, total)
|
||||
@@ -392,7 +394,7 @@ def cache_artwork():
|
||||
data = conn.getresponse()
|
||||
if data.status == 200:
|
||||
count_done += 1
|
||||
log.debug("Get Image Result: " + str(data.status))
|
||||
log.debug("Get Image Result: {0}", data.status)
|
||||
|
||||
index += 1
|
||||
if pdialog.iscanceled():
|
||||
|
||||
@@ -48,17 +48,17 @@ class WebSocketClient(threading.Thread):
|
||||
self._playstate(data)
|
||||
|
||||
elif message_type == "UserDataChanged":
|
||||
log.debug("WebSocket Message UserDataChanged: %s" % message)
|
||||
log.debug("WebSocket Message UserDataChanged: {0}", message)
|
||||
|
||||
elif message_type == "LibraryChanged":
|
||||
log.debug("WebSocket Message LibraryChanged: %s" % message)
|
||||
log.debug("WebSocket Message LibraryChanged: {0}", message)
|
||||
|
||||
elif message_type == "GeneralCommand":
|
||||
data = result['Data']
|
||||
self._general_commands(data)
|
||||
|
||||
else:
|
||||
log.debug("WebSocket Message Type: %s" % message)
|
||||
log.debug("WebSocket Message Type: {0}", message)
|
||||
|
||||
def _play(cls, data):
|
||||
|
||||
@@ -67,7 +67,7 @@ class WebSocketClient(threading.Thread):
|
||||
|
||||
if command == 'PlayNow':
|
||||
startat = data.get('StartPositionTicks', 0)
|
||||
log.debug("WebSocket Message PlayNow: %s" % data)
|
||||
log.debug("WebSocket Message PlayNow: {0}", data)
|
||||
|
||||
media_source_id = data.get("MediaSourceId", "")
|
||||
|
||||
@@ -99,14 +99,14 @@ class WebSocketClient(threading.Thread):
|
||||
seek_to = data['SeekPositionTicks']
|
||||
seek_time = seek_to / 10000000.0
|
||||
player.seekTime(seek_time)
|
||||
log.debug("Seek to %s" % seek_time)
|
||||
log.debug("Seek to {0}", seek_time)
|
||||
|
||||
elif command in actions:
|
||||
actions[command]()
|
||||
log.debug("Command: %s completed" % command)
|
||||
log.debug("Command: {0} completed", command)
|
||||
|
||||
else:
|
||||
log.debug("Unknown command: %s" % command)
|
||||
log.debug("Unknown command: {0}", command)
|
||||
return
|
||||
|
||||
def _general_commands(cls, data):
|
||||
@@ -146,7 +146,7 @@ class WebSocketClient(threading.Thread):
|
||||
header = arguments['Header']
|
||||
text = arguments['Text']
|
||||
# show notification here
|
||||
log.debug("WebSocket DisplayMessage: %s" % text)
|
||||
log.debug("WebSocket DisplayMessage: {0}", text)
|
||||
xbmcgui.Dialog().notification("EmbyCon", text)
|
||||
|
||||
elif command == 'SendString':
|
||||
@@ -204,7 +204,7 @@ class WebSocketClient(threading.Thread):
|
||||
self.post_capabilities()
|
||||
|
||||
def on_error(self, ws, error):
|
||||
log.debug("Error: %s" % error)
|
||||
log.debug("Error: {0}", error)
|
||||
|
||||
def run(self):
|
||||
|
||||
@@ -225,7 +225,7 @@ class WebSocketClient(threading.Thread):
|
||||
server = server.replace('http', "ws")
|
||||
|
||||
websocket_url = "%s/embywebsocket?api_key=%s&deviceId=%s" % (server, token, self.device_id)
|
||||
log.debug("websocket url: %s" % websocket_url)
|
||||
log.debug("websocket url: {0}", websocket_url)
|
||||
|
||||
self._client = websocket.WebSocketApp(websocket_url,
|
||||
on_message=self.on_message,
|
||||
@@ -298,5 +298,5 @@ class WebSocketClient(threading.Thread):
|
||||
|
||||
download_utils = downloadutils.DownloadUtils()
|
||||
download_utils.downloadUrl(url, postBody=data, method="POST")
|
||||
log.debug("Posted Capabilities: %s" % data)
|
||||
log.debug("Posted Capabilities: {0}", data)
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ def checkForNewContent():
|
||||
|
||||
added_result = downloadUtils.downloadUrl(added_url, suppress=True)
|
||||
result = json.loads(added_result)
|
||||
log.debug("LATEST_ADDED_ITEM:" + str(result))
|
||||
log.debug("LATEST_ADDED_ITEM: {0}", result)
|
||||
|
||||
last_added_date = ""
|
||||
if result is not None:
|
||||
@@ -43,7 +43,7 @@ def checkForNewContent():
|
||||
if len(items) > 0:
|
||||
item = items[0]
|
||||
last_added_date = item.get("Etag", "")
|
||||
log.debug("last_added_date: " + last_added_date)
|
||||
log.debug("last_added_date: {0}", last_added_date)
|
||||
|
||||
played_url = ('{server}/emby/Users/{userid}/Items' +
|
||||
'?Recursive=true' +
|
||||
@@ -57,7 +57,7 @@ def checkForNewContent():
|
||||
|
||||
played_result = downloadUtils.downloadUrl(played_url, suppress=True)
|
||||
result = json.loads(played_result)
|
||||
log.debug("LATEST_PLAYED_ITEM:" + str(result))
|
||||
log.debug("LATEST_PLAYED_ITEM: {0}", result)
|
||||
|
||||
last_played_date = ""
|
||||
if result is not None:
|
||||
@@ -65,29 +65,29 @@ def checkForNewContent():
|
||||
if len(items) > 0:
|
||||
item = items[0]
|
||||
last_played_date = item.get("Etag", "")
|
||||
log.debug("last_played_date: " + last_played_date)
|
||||
log.debug("last_played_date: {0}", last_played_date)
|
||||
|
||||
home_window = HomeWindow()
|
||||
current_widget_hash = home_window.getProperty("embycon_widget_reload")
|
||||
log.debug("Current Widget Hash: " + str(current_widget_hash))
|
||||
log.debug("Current Widget Hash: {0}", current_widget_hash)
|
||||
|
||||
m = hashlib.md5()
|
||||
m.update(last_played_date + last_added_date)
|
||||
new_widget_hash = m.hexdigest()
|
||||
log.debug("New Widget Hash: " + str(new_widget_hash))
|
||||
log.debug("New Widget Hash: {0}", new_widget_hash)
|
||||
|
||||
if current_widget_hash != new_widget_hash:
|
||||
home_window.setProperty("embycon_widget_reload", new_widget_hash)
|
||||
log.debug("Setting New Widget Hash: " + str(new_widget_hash))
|
||||
log.debug("Setting New Widget Hash: {0}", new_widget_hash)
|
||||
|
||||
|
||||
def getWidgetUrlContent(handle, params):
|
||||
log.debug("getWidgetUrlContent Called" + str(params))
|
||||
log.debug("getWidgetUrlContent Called: {0}", params)
|
||||
|
||||
request = params["url"]
|
||||
request = urllib.unquote(request)
|
||||
request = "{server}/emby/" + request + "&ImageTypeLimit=1&format=json"
|
||||
log.debug("getWidgetUrlContent URL:" + request)
|
||||
log.debug("getWidgetUrlContent URL: {0}", request)
|
||||
|
||||
select_action = params.get("action", None)
|
||||
|
||||
@@ -98,7 +98,7 @@ def getWidgetUrlContent(handle, params):
|
||||
|
||||
|
||||
def getSuggestions(handle, params):
|
||||
log.debug("getSuggestions Called" + str(params))
|
||||
log.debug("getSuggestions Called: {0}", params)
|
||||
|
||||
itemsUrl = ("{server}/emby/Movies/Recommendations" +
|
||||
"?userId={userid}" +
|
||||
@@ -114,7 +114,7 @@ def getSuggestions(handle, params):
|
||||
xbmcplugin.endOfDirectory(handle, cacheToDisc=False)
|
||||
|
||||
def getWidgetContentNextUp(handle, params):
|
||||
log.debug("getWidgetContentNextUp Called" + str(params))
|
||||
log.debug("getWidgetContentNextUp Called: {0}", params)
|
||||
|
||||
itemsUrl = ("{server}/emby/Shows/NextUp?SeriesId=" + params["id"] +
|
||||
"&userId={userid}" +
|
||||
@@ -130,7 +130,7 @@ def getWidgetContentNextUp(handle, params):
|
||||
|
||||
|
||||
def getWidgetContentSimilar(handle, params):
|
||||
log.debug("getWisgetContentSimilarMovies Called" + str(params))
|
||||
log.debug("getWisgetContentSimilarMovies Called: {0}", params)
|
||||
|
||||
itemsUrl = ("{server}/emby/Items/" + params["id"] + "/Similar"
|
||||
"?userId={userid}" +
|
||||
@@ -147,13 +147,13 @@ def getWidgetContentSimilar(handle, params):
|
||||
|
||||
|
||||
def getWidgetContentCast(handle, params):
|
||||
log.debug("getWigetContentCast Called" + str(params))
|
||||
log.debug("getWigetContentCast Called: {0}", params)
|
||||
server = downloadUtils.getServer()
|
||||
|
||||
id = params["id"]
|
||||
data_manager = DataManager()
|
||||
result = data_manager.GetContent("{server}/emby/Users/{userid}/Items/" + id + "?format=json")
|
||||
log.debug("ItemInfo: " + str(result))
|
||||
log.debug("ItemInfo: {0}", result)
|
||||
|
||||
listItems = []
|
||||
people = result.get("People")
|
||||
@@ -204,7 +204,7 @@ def populateWidgetItems(itemsUrl, override_select_action=None):
|
||||
if override_select_action is not None:
|
||||
select_action = str(override_select_action)
|
||||
|
||||
log.debug("WIDGET_DATE_URL: " + itemsUrl)
|
||||
log.debug("WIDGET_DATE_URL: {0}", itemsUrl)
|
||||
|
||||
# get the items
|
||||
data_manager = DataManager()
|
||||
@@ -225,7 +225,7 @@ def populateWidgetItems(itemsUrl, override_select_action=None):
|
||||
item_id = item["Id"]
|
||||
name = item["Name"]
|
||||
episodeDetails = ""
|
||||
log.debug("WIDGET_DATE_NAME: " + name)
|
||||
log.debug("WIDGET_DATE_NAME: {0}", name)
|
||||
|
||||
title = name
|
||||
tvshowtitle = ""
|
||||
@@ -318,7 +318,7 @@ def populateWidgetItems(itemsUrl, override_select_action=None):
|
||||
|
||||
|
||||
def getWidgetContent(handle, params):
|
||||
log.debug("getWigetContent Called" + str(params))
|
||||
log.debug("getWigetContent Called: {0}", params)
|
||||
|
||||
type = params.get("type")
|
||||
if (type == None):
|
||||
|
||||
34
service.py
34
service.py
@@ -30,7 +30,7 @@ download_utils = DownloadUtils()
|
||||
try:
|
||||
download_utils.authenticate()
|
||||
except Exception as error:
|
||||
log.error("Error with initial service auth: " + str(error))
|
||||
log.error("Error with initial service auth: {0}", error)
|
||||
|
||||
|
||||
def hasData(data):
|
||||
@@ -73,7 +73,7 @@ def sendProgress():
|
||||
'PlaySessionId': play_session_id
|
||||
}
|
||||
|
||||
log.debug("Sending POST progress started: %s." % postdata)
|
||||
log.debug("Sending POST progress started: {0}", postdata)
|
||||
|
||||
url = "{server}/emby/Sessions/Playing/Progress"
|
||||
download_utils.downloadUrl(url, postBody=postdata, method="POST")
|
||||
@@ -106,7 +106,7 @@ def promptForStopActions(item_id, current_possition):
|
||||
|
||||
# item percentage complete
|
||||
percenatge_complete = int(((current_possition * 10000000) / runtime) * 100)
|
||||
log.debug("Episode Percentage Complete: %s" % percenatge_complete)
|
||||
log.debug("Episode Percentage Complete: {0}", percenatge_complete)
|
||||
|
||||
if (prompt_delete_episode_percentage < 100 and
|
||||
result.get("Type", "na") == "Episode" and
|
||||
@@ -122,7 +122,7 @@ def promptForStopActions(item_id, current_possition):
|
||||
log.debug("Prompting for delete")
|
||||
resp = xbmcgui.Dialog().yesno(i18n('confirm_file_delete'), i18n('file_delete_confirm'), autoclose=10000)
|
||||
if resp:
|
||||
log.debug("Deleting item: %s" % item_id)
|
||||
log.debug("Deleting item: {0}", item_id)
|
||||
url = "{server}/emby/Items/%s?format=json" % item_id
|
||||
download_utils.downloadUrl(url, method="DELETE")
|
||||
xbmc.executebuiltin("Container.Refresh")
|
||||
@@ -155,7 +155,7 @@ def promptForStopActions(item_id, current_possition):
|
||||
jsonData = download_utils.downloadUrl(url)
|
||||
|
||||
items_result = json.loads(jsonData)
|
||||
log.debug("Prompt Next Item Details: %s" % items_result)
|
||||
log.debug("Prompt Next Item Details: {0}", items_result)
|
||||
# find next episode
|
||||
item_list = items_result.get("Items", [])
|
||||
for item in item_list:
|
||||
@@ -169,7 +169,7 @@ def promptForStopActions(item_id, current_possition):
|
||||
|
||||
if resp:
|
||||
next_item_id = item.get("Id")
|
||||
log.debug("Playing Next Episode: %s" % next_item_id)
|
||||
log.debug("Playing Next Episode: {0}", next_item_id)
|
||||
|
||||
play_info = {}
|
||||
play_info["item_id"] = next_item_id
|
||||
@@ -188,19 +188,19 @@ def stopAll(played_information):
|
||||
if len(played_information) == 0:
|
||||
return
|
||||
|
||||
log.debug("played_information : " + str(played_information))
|
||||
log.debug("played_information: {0}", played_information)
|
||||
|
||||
for item_url in played_information:
|
||||
data = played_information.get(item_url)
|
||||
if data is not None:
|
||||
log.debug("item_url : " + item_url)
|
||||
log.debug("item_data : " + str(data))
|
||||
log.debug("item_url: {0}", item_url)
|
||||
log.debug("item_data: {0}", data)
|
||||
|
||||
current_possition = data.get("currentPossition", 0)
|
||||
emby_item_id = data.get("item_id")
|
||||
|
||||
if hasData(emby_item_id):
|
||||
log.debug("Playback Stopped at: " + str(int(current_possition * 10000000)))
|
||||
log.debug("Playback Stopped at: {0}", current_possition)
|
||||
|
||||
url = "{server}/emby/Sessions/Playing/Stopped"
|
||||
postdata = {
|
||||
@@ -219,7 +219,7 @@ class Service(xbmc.Player):
|
||||
played_information = {}
|
||||
|
||||
def __init__(self, *args):
|
||||
log.debug("Starting monitor service: " + str(args))
|
||||
log.debug("Starting monitor service: {0}", args)
|
||||
self.played_information = {}
|
||||
|
||||
def onPlayBackStarted(self):
|
||||
@@ -227,7 +227,7 @@ class Service(xbmc.Player):
|
||||
stopAll(self.played_information)
|
||||
|
||||
current_playing_file = xbmc.Player().getPlayingFile()
|
||||
log.debug("onPlayBackStarted: " + current_playing_file)
|
||||
log.debug("onPlayBackStarted: {0}", current_playing_file)
|
||||
|
||||
home_window = HomeWindow()
|
||||
emby_item_id = home_window.getProperty("item_id")
|
||||
@@ -248,7 +248,7 @@ class Service(xbmc.Player):
|
||||
'PlaySessionId': play_session_id
|
||||
}
|
||||
|
||||
log.debug("Sending POST play started: %s." % postdata)
|
||||
log.debug("Sending POST play started: {0}", postdata)
|
||||
|
||||
url = "{server}/emby/Sessions/Playing"
|
||||
download_utils.downloadUrl(url, postBody=postdata, method="POST")
|
||||
@@ -260,8 +260,8 @@ class Service(xbmc.Player):
|
||||
data["play_session_id"] = play_session_id
|
||||
self.played_information[current_playing_file] = data
|
||||
|
||||
log.debug("ADDING_FILE : " + current_playing_file)
|
||||
log.debug("ADDING_FILE : " + str(self.played_information))
|
||||
log.debug("ADDING_FILE: {0}", current_playing_file)
|
||||
log.debug("ADDING_FILE: {0}", self.played_information)
|
||||
|
||||
def onPlayBackEnded(self):
|
||||
# Will be called when kodi stops playing a file
|
||||
@@ -341,8 +341,8 @@ while not xbmc.abortRequested:
|
||||
checkForNewContent()
|
||||
|
||||
except Exception as error:
|
||||
log.error("Exception in Playback Monitor : " + str(error))
|
||||
log.error(traceback.format_exc())
|
||||
log.error("Exception in Playback Monitor: {0}", error)
|
||||
log.error("{0}", traceback.format_exc())
|
||||
|
||||
xbmc.sleep(1000)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user