|
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): |
|
|
|
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' |
|
|