59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
from rich.console import Console
|
||
from rich.progress import Progress, SpinnerColumn, TextColumn, BarColumn, TaskProgressColumn, TimeRemainingColumn
|
||
from rich.table import Table
|
||
from rich.panel import Panel
|
||
|
||
console = Console()
|
||
|
||
|
||
class ProgressDisplay:
|
||
def __init__(self):
|
||
self.console = console
|
||
|
||
def show_banner(self):
|
||
banner = """
|
||
╔══════════════════════════════════════════╗
|
||
║ Douyin Downloader v1.0.0 ║
|
||
║ 抖音批量下载工具 ║
|
||
╚══════════════════════════════════════════╝
|
||
"""
|
||
self.console.print(banner, style="bold cyan")
|
||
|
||
def create_progress(self) -> Progress:
|
||
return Progress(
|
||
SpinnerColumn(),
|
||
TextColumn("[progress.description]{task.description}"),
|
||
BarColumn(),
|
||
TaskProgressColumn(),
|
||
TimeRemainingColumn(),
|
||
console=self.console
|
||
)
|
||
|
||
def show_result(self, result):
|
||
table = Table(title="Download Summary", show_header=True, header_style="bold magenta")
|
||
table.add_column("Metric", style="cyan")
|
||
table.add_column("Count", justify="right", style="green")
|
||
|
||
table.add_row("Total", str(result.total))
|
||
table.add_row("Success", str(result.success))
|
||
table.add_row("Failed", str(result.failed))
|
||
table.add_row("Skipped", str(result.skipped))
|
||
|
||
if result.total > 0:
|
||
success_rate = (result.success / result.total) * 100
|
||
table.add_row("Success Rate", f"{success_rate:.1f}%")
|
||
|
||
self.console.print(table)
|
||
|
||
def print_info(self, message: str):
|
||
self.console.print(f"[blue]ℹ[/blue] {message}")
|
||
|
||
def print_success(self, message: str):
|
||
self.console.print(f"[green]✓[/green] {message}")
|
||
|
||
def print_warning(self, message: str):
|
||
self.console.print(f"[yellow]⚠[/yellow] {message}")
|
||
|
||
def print_error(self, message: str):
|
||
self.console.print(f"[red]✗[/red] {message}")
|