feat: dl progress
This commit is contained in:
@@ -204,20 +204,29 @@ func downloadPlaylist(ctx context.Context, client *http.Client, parsed *url.URL,
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
segments := collectSegments(mediaPlaylist)
|
segments := collectSegments(mediaPlaylist)
|
||||||
|
totalSegments := len(segments)
|
||||||
|
fmt.Fprintf(os.Stderr, "Downloading %d segments...\n", totalSegments)
|
||||||
|
|
||||||
for i, segment := range segments {
|
for i, segment := range segments {
|
||||||
if err := downloadSegment(ctx, client, finalURL, segment, tempTS); err != nil {
|
if err := downloadSegment(ctx, client, finalURL, segment, tempTS); err != nil {
|
||||||
return fmt.Errorf("download segment %d: %w", i, err)
|
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 {
|
if _, err := tempTS.Seek(0, io.SeekStart); err != nil {
|
||||||
return fmt.Errorf("rewind temp file: %w", err)
|
return fmt.Errorf("rewind temp file: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
mp4Name := ensureMP4Extension(name)
|
mp4Name := ensureMP4Extension(name)
|
||||||
|
fmt.Fprintf(os.Stderr, "Converting to MP4...\n")
|
||||||
if err := transmuxToMP4(ctx, tempPath, mp4Name); err != nil {
|
if err := transmuxToMP4(ctx, tempPath, mp4Name); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
fmt.Fprintf(os.Stderr, "Complete: %s\n", mp4Name)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user