Files
aiData/DouYin/dy-downloader/cli/progress_display.py

59 lines
2.1 KiB
Python
Raw Normal View History

2026-01-20 14:05:19 +08:00
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}")