mirror of
https://github.com/k4yt3x/video2x.git
synced 2024-12-29 16:09:10 +00:00
74 lines
2.3 KiB
Python
Executable File
74 lines
2.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Name: Video2X Upscale Progress Monitor
|
|
Author: K4YT3X
|
|
Date Created: May 7, 2020
|
|
Last Modified: September 9, 2020
|
|
"""
|
|
|
|
# built-in imports
|
|
import contextlib
|
|
import threading
|
|
import time
|
|
|
|
# third-party imports
|
|
from tqdm import tqdm
|
|
|
|
|
|
class ProgressMonitor(threading.Thread):
|
|
"""progress monitor
|
|
|
|
This class provides progress monitoring functionalities
|
|
by keeping track of the amount of frames in the input
|
|
directory and the output directory. This is originally
|
|
suggested by @ArmandBernard.
|
|
"""
|
|
|
|
def __init__(self, upscaler, extracted_frames_directories):
|
|
threading.Thread.__init__(self)
|
|
self.upscaler = upscaler
|
|
self.extracted_frames_directories = extracted_frames_directories
|
|
self.running = False
|
|
|
|
def run(self):
|
|
self.running = True
|
|
|
|
with tqdm(
|
|
total=self.upscaler.total_frames,
|
|
ascii=True,
|
|
desc=_("Processing: {} (pass {}/{})").format(
|
|
self.upscaler.current_input_file.name,
|
|
self.upscaler.current_pass,
|
|
len(self.upscaler.scaling_jobs),
|
|
),
|
|
) as progress_bar:
|
|
# tqdm update method adds the value to the progress
|
|
# bar instead of setting the value. Therefore, a delta
|
|
# needs to be calculated.
|
|
previous_cycle_frames = 0
|
|
while self.running:
|
|
|
|
with contextlib.suppress(FileNotFoundError):
|
|
upscaled_frames = [
|
|
f
|
|
for f in self.upscaler.upscaled_frames.iterdir()
|
|
if str(f)
|
|
.lower()
|
|
.endswith(self.upscaler.extracted_frame_format.lower())
|
|
]
|
|
if len(upscaled_frames) >= 1:
|
|
self.upscaler.last_frame_upscaled = sorted(upscaled_frames)[-1]
|
|
self.upscaler.total_frames_upscaled = len(upscaled_frames)
|
|
|
|
# update progress bar
|
|
delta = self.upscaler.total_frames_upscaled - previous_cycle_frames
|
|
previous_cycle_frames = self.upscaler.total_frames_upscaled
|
|
progress_bar.update(delta)
|
|
|
|
time.sleep(1)
|
|
|
|
def stop(self):
|
|
self.running = False
|
|
self.join()
|