from proglog import ProgressBarLogger | |
import time | |
class MoviepyProgressLogger(ProgressBarLogger): | |
def __init__(self, callBackFunction = None): | |
super().__init__() | |
self.callBackFunction = callBackFunction | |
self.start_time = time.time() | |
def bars_callback(self, bar, attr, value, old_value=None): | |
# Every time the logger progress is updated, this function is called | |
percentage = (value / self.bars[bar]['total']) * 100 | |
elapsed_time = time.time() - self.start_time | |
estimated_time = (elapsed_time / percentage) * (100 - percentage) if percentage != 0 else 0 | |
progress_string = f'Rendering progress : {value}/{self.bars[bar]["total"]} | Time spent: {self.format_time(elapsed_time)} | Time left: {self.format_time(estimated_time)}' | |
if (self.callBackFunction): | |
self.callBackFunction(progress_string) | |
else: | |
print(progress_string) | |
def format_time(self, seconds): | |
minutes, seconds = divmod(seconds, 60) | |
return f'{int(minutes)}m {int(seconds)}s' | |