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