64 lines
2.7 KiB
Diff
64 lines
2.7 KiB
Diff
diff --git a/libraries/entropy/fetchers.py b/libraries/entropy/fetchers.py
|
|
index 3511762..8e53488 100644
|
|
--- a/libraries/entropy/fetchers.py
|
|
+++ b/libraries/entropy/fetchers.py
|
|
@@ -352,38 +352,35 @@ class UrlFetcher:
|
|
x_delta = self.__downloadedsize - self.__startingposition
|
|
x_delta_now = self.__downloadedsize - self.__last_downloadedsize
|
|
|
|
- f = self.__elapsed
|
|
+ el_factor = self.__elapsed
|
|
if self.__elapsed > 1:
|
|
- f = 1
|
|
+ el_factor = 1
|
|
|
|
- self.__datatransfer = 0.5 * self.__datatransfer + \
|
|
- 0.5 * ( \
|
|
- f * x_delta / self.__elapsed + \
|
|
- (1-f) * x_delta_now / last_elapsed \
|
|
- )
|
|
+ if (last_elapsed > 0) and (self.__elapsed > 0):
|
|
+ self.__datatransfer = 0.5 * self.__datatransfer + \
|
|
+ 0.5 * (el_factor * x_delta / self.__elapsed + \
|
|
+ (1-el_factor) * x_delta_now / last_elapsed)
|
|
+ else:
|
|
+ self.__datatransfer = 0.0
|
|
|
|
self.__last_update_time = cur_time
|
|
self.__last_downloadedsize = self.__downloadedsize
|
|
|
|
if self.__datatransfer < 0:
|
|
- self.__datatransfer = 0
|
|
- try:
|
|
- rounded_remote = int(round(self.__remotesize*1024, 0))
|
|
- rounded_downloaded = int(round(self.__downloadedsize, 0))
|
|
- x_delta = rounded_remote - rounded_downloaded
|
|
- tx_round = 0
|
|
- if self.__datatransfer > 0:
|
|
- tx_round = int(round(x_delta/self.__datatransfer, 0))
|
|
- self.__time_remaining_secs = tx_round
|
|
-
|
|
- if tx_round < 0:
|
|
- self.__time_remaining = "(%s)" % (_("infinite"),)
|
|
- else:
|
|
- self.__time_remaining = \
|
|
- convert_seconds_to_fancy_output(self.__time_remaining_secs)
|
|
+ self.__datatransfer = 0.0
|
|
|
|
- except (ValueError, TypeError,):
|
|
+ rounded_remote = int(round(self.__remotesize*1024, 0))
|
|
+ rounded_downloaded = int(round(self.__downloadedsize, 0))
|
|
+ x_delta = rounded_remote - rounded_downloaded
|
|
+ if self.__datatransfer > 0:
|
|
+ tx_round = round(x_delta/self.__datatransfer, 0)
|
|
+ self.__time_remaining_secs = int(tx_round)
|
|
+
|
|
+ if self.__time_remaining_secs < 0:
|
|
self.__time_remaining = "(%s)" % (_("infinite"),)
|
|
+ else:
|
|
+ self.__time_remaining = \
|
|
+ convert_seconds_to_fancy_output(self.__time_remaining_secs)
|
|
|
|
def get_transfer_rate(self):
|
|
return self.__datatransfer
|