mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2024-12-25 02:06:09 +00:00
New throttle - will require testing
This commit is contained in:
parent
5e6e606031
commit
b12009f422
1 changed files with 61 additions and 6 deletions
|
@ -211,6 +211,8 @@ class Read_EmbyServer():
|
||||||
else:
|
else:
|
||||||
index = 0
|
index = 0
|
||||||
jump = self.limitIndex
|
jump = self.limitIndex
|
||||||
|
throttled = False
|
||||||
|
highestjump = 0
|
||||||
|
|
||||||
while index < total:
|
while index < total:
|
||||||
# Get items by chunk to increase retrieval speed at scale
|
# Get items by chunk to increase retrieval speed at scale
|
||||||
|
@ -239,13 +241,66 @@ class Read_EmbyServer():
|
||||||
"Tags,ProviderIds,ParentId,RemoteTrailers,SpecialEpisodeNumbers,"
|
"Tags,ProviderIds,ParentId,RemoteTrailers,SpecialEpisodeNumbers,"
|
||||||
"MediaSources"
|
"MediaSources"
|
||||||
)
|
)
|
||||||
result = doUtils.downloadUrl(url, parameters=params)
|
result = doUtils(url, parameters=params)
|
||||||
items['Items'].extend(result['Items'])
|
|
||||||
|
if result == "":
|
||||||
|
# Something happened to the connection.
|
||||||
|
if not throttled:
|
||||||
|
throttled = True
|
||||||
|
self.logMsg("Throttle activated.", 1)
|
||||||
|
elif jump == highestjump:
|
||||||
|
# We already adjusted to highestjump, but it failed. Reset value
|
||||||
|
self.logMsg("Reset highest value.", 1)
|
||||||
|
highestjump = 0
|
||||||
|
|
||||||
index += jump
|
# Lower the number by half
|
||||||
if dialog:
|
if highestjump:
|
||||||
percentage = int((float(index) / float(total))*100)
|
throttled = False
|
||||||
dialog.update(percentage)
|
jump = highestjump
|
||||||
|
else:
|
||||||
|
jump = int(jump/2)
|
||||||
|
|
||||||
|
self.logMsg("Set jump limit to recover: %s" % jump)
|
||||||
|
retry = 0
|
||||||
|
while utils.window('emby_online') != "true":
|
||||||
|
# Wait server to come back online
|
||||||
|
if retry == 3:
|
||||||
|
self.logMsg("Server never came back online.")
|
||||||
|
return
|
||||||
|
|
||||||
|
retry += 1
|
||||||
|
if xbmc.Monitor().waitForAbort(1):
|
||||||
|
# Abort was requested while waiting.
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
xbmc.Monitor().waitForAbort(3)
|
||||||
|
else:
|
||||||
|
items['Items'].extend(result['Items'])
|
||||||
|
index += jump
|
||||||
|
|
||||||
|
if dialog:
|
||||||
|
percentage = int((float(index) / float(total))*100)
|
||||||
|
dialog.update(percentage)
|
||||||
|
|
||||||
|
if jump > highestjump:
|
||||||
|
# Adjust with the latest number, if it's greater
|
||||||
|
highestjump = jump
|
||||||
|
|
||||||
|
if throttled:
|
||||||
|
# We needed to adjust the number, keep increasing until.
|
||||||
|
if jump < highestjump:
|
||||||
|
# Found a number that already works, use it.
|
||||||
|
throttled = False
|
||||||
|
jump = highestjump
|
||||||
|
self.logMsg("Throttle deactivated with jump limit set to: %s" % jump, 1)
|
||||||
|
else:
|
||||||
|
# keep increasing until the connection times out again
|
||||||
|
increment = int(jump*0.33)
|
||||||
|
if not increment: # Incase the increment is 0
|
||||||
|
increment += 10
|
||||||
|
|
||||||
|
jump += increment
|
||||||
|
self.logMsg("Increase jump limit to: %s" % jump, 1)
|
||||||
return items
|
return items
|
||||||
|
|
||||||
def getViews(self, type, root=False):
|
def getViews(self, type, root=False):
|
||||||
|
|
Loading…
Reference in a new issue