devine-dl / devine

Modular Movie, TV, and Music Archival Software
GNU General Public License v3.0
310 stars 73 forks source link

Progress bar doesn't display download/merge status for certain DASH downloads #106

Open stabbedbybrick opened 2 months ago

stabbedbybrick commented 2 months ago

Describe the bug For certain DASH downloads, the progress bar doesn't display download or merge status and is stuck on LICENSED until the download is finished and it starts decrypting. It's still downloading and merging, but it doesn't display any progress.

Screenshots licensed download

If I use curl_impersonate as downloader, it does show the download status but incorrectly:

curl

Additional context I'm getting this on multiple services, and so far the only common denominator I can find is that the progress bar will only display properly if the manifest is using a SegmentTimeline. Might just be a pure coincidence, though.

It's difficult to show with screenshots, so let me know if you want a video or something and I'll send it to you on discord.

stabbedbybrick commented 1 month ago

A little follow up to this:

In requests.py, line 265, if I set segmented=False the progress bar comes back to life.

with ThreadPoolExecutor(max_workers=max_workers) as pool:
            for future in as_completed(
                pool.submit(
                    download,
                    session=session,
                    segmented=False,
                    **url
                )
                for url in urls

And the reason aria2c was also affected by this is because it doesn't support the Range header and falls back to requests downloader. So when I thought I was using aria, it was actually requests.

I know this isn't a solution, but it might give a clue as to what's causing the issue.