m3u8_download/m3u8_To_MP4/helpers/printer_helper.py

62 lines
1.8 KiB
Python
Raw Normal View History

2025-03-16 14:11:13 +08:00
# -*- coding: utf-8 -*-
import logging
import os
import sys
def config_logging():
str_format = '%(asctime)s | %(levelname)s | %(message)s'
logging.basicConfig(format=str_format, level=logging.INFO)
class ProcessBar:
def __init__(self, progress, max_iter, prefix='Progress',
suffix='downloading', completed_suffix='completed',
bar_length=50):
self.progress = progress
self.max_iter = max_iter
self.bar_length = bar_length
self.prefix = prefix
self.suffix = suffix
self.completed_suffix = completed_suffix
def display(self):
progress_rate = self.progress / self.max_iter
percent = 100 * progress_rate
filled_length = round(self.bar_length * progress_rate)
bar = '#' * filled_length + '-' * (self.bar_length - filled_length)
sys.stdout.write(
'\r{}: |{}| {:.1f}% {}'.format(self.prefix, bar, percent,
self.suffix))
if self.progress == self.max_iter:
sys.stdout.write(
'\r{}: |{}| {:.1f}% {}'.format(self.prefix, bar, percent,
self.completed_suffix))
sys.stdout.write('\n')
sys.stdout.flush()
def update(self):
self.progress += 1
self.display()
def display_speed(start_time, fetch_end_time, task_end_time, target_mp4_file_path):
download_time = fetch_end_time - start_time
total_time = task_end_time - start_time
if download_time < 0.01:
download_speed = os.path.getsize(target_mp4_file_path) / 1024
else:
download_speed = os.path.getsize( target_mp4_file_path) / download_time / 1024
logging.info( "download successfully take {:.2f}s, average download speed is {:.2f}KB/s".format( total_time, download_speed))