[downloader/fragment] Fix ETA calculation of resumed download #21992
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Please follow the guide below
x
into all the boxes [ ] relevant to your pull request (like that [x])Before submitting a pull request make sure you have:
In order to be accepted and merged into youtube-dl each piece of code must be in public domain or released under Unlicense. Check one of the following options:
What is the purpose of your pull request?
Description of your pull request and other information
When resuming a partially downloaded file with fragment (or derived) downloader, the displayed ETA is wildly inaccurate. This is because the call to
calc_eta
doesn't subtract the starting partial file size fromtotal
andcurrent
byte counters.For example: I have 1000MB out of a 2000MB video downloaded (youtube-dl killed for some reason, e.g. I needed to reboot or download something more important quickly). Later I run youtube-dl again to finish the download and the speed is ~1MB/s. After 5 seconds elapsed, ETA shows 5 seconds remaining, because the rate inside
calc_eta
is 1005MB/5s (instead of 5MB/5s), and so it predicts the remaining 995MB will be downloaded in ~5s (instead of 995s).This PR subtracts the starting partial file size from the ETA calculation, and thus makes the ETA somewhat useful when resuming a large partial download.