From 308dd6ad6e9d4a4b70280e7610fe291ea58994fc Mon Sep 17 00:00:00 2001 From: 0x1d Date: Tue, 18 Nov 2025 12:53:59 +0100 Subject: [PATCH] feat: dl progress --- internal/downloader/downloader.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/internal/downloader/downloader.go b/internal/downloader/downloader.go index 948b0c4..0449fac 100644 --- a/internal/downloader/downloader.go +++ b/internal/downloader/downloader.go @@ -204,20 +204,29 @@ func downloadPlaylist(ctx context.Context, client *http.Client, parsed *url.URL, }() segments := collectSegments(mediaPlaylist) + totalSegments := len(segments) + fmt.Fprintf(os.Stderr, "Downloading %d segments...\n", totalSegments) + for i, segment := range segments { if err := downloadSegment(ctx, client, finalURL, segment, tempTS); err != nil { return fmt.Errorf("download segment %d: %w", i, err) } + // Show progress: segment number, total, and percentage + progress := float64(i+1) / float64(totalSegments) * 100 + fmt.Fprintf(os.Stderr, "\rProgress: %d/%d segments (%.1f%%)", i+1, totalSegments, progress) } + fmt.Fprintf(os.Stderr, "\n") if _, err := tempTS.Seek(0, io.SeekStart); err != nil { return fmt.Errorf("rewind temp file: %w", err) } mp4Name := ensureMP4Extension(name) + fmt.Fprintf(os.Stderr, "Converting to MP4...\n") if err := transmuxToMP4(ctx, tempPath, mp4Name); err != nil { return err } + fmt.Fprintf(os.Stderr, "Complete: %s\n", mp4Name) return nil }