Commit Graph

438 Commits

Author SHA1 Message Date
rlaphoenix 1b1412d498 Fix byte range calculation on HLS downloads
It was off by one. The final calculation for the right-side range needed to be converted from one-index to zero-index.
2023-03-04 12:18:19 +00:00
rlaphoenix 318832e6b2 Store DRM in the track.drm property in HLS and DASH 2023-03-04 11:49:53 +00:00
rlaphoenix f8166f098c Apply threading lock to HLS DRM preparation
Without this, if two threads started at the same time there was a very good chance they would run the code and license twice, which is unnecessary.
2023-03-04 11:41:10 +00:00
rlaphoenix 0bceb772c2 Handle exceptions in user's Service license funcs 2023-03-04 11:23:58 +00:00
rlaphoenix d9471f886f Raise exceptions in prepare_drm instead of using sys.exit(1) 2023-03-04 11:22:51 +00:00
rlaphoenix 4b330c0478 Implement CEKNotFound and EmptyLicense exceptions to Widevine 2023-03-04 11:18:28 +00:00
rlaphoenix c3a22431f0 Fix possible soft-lock in HLS if Queue is left empty after error 2023-03-04 11:11:20 +00:00
rlaphoenix 7df6aa42b4 Ignore Insufficient bits warning from shaka 2023-03-04 02:31:23 +00:00
rlaphoenix 9fff14af30 Fix regression that broke pproxy 2023-03-03 08:53:28 +00:00
rlaphoenix 19ca567019 Only use captured aria2c output if available 2023-03-03 07:54:31 +00:00
rlaphoenix d964dde4d5 Don't pre-allocate file-space for segmented downloads 2023-03-03 07:52:13 +00:00
rlaphoenix a3efadf00b Fix aria2c's segmented check for DASH/HLS 2023-03-03 07:52:13 +00:00
rlaphoenix 714e9af99a Don't print traceback of subprocess errors on download failures
Since we now have pretty logs for them, the exception (which would be a CalledProcessError) would be generally pointless. However, the return code may be useful so that is kept.
2023-03-03 07:52:13 +00:00
rlaphoenix 9d6adec707 Fix printing of shaka-packager logs 2023-03-03 07:52:13 +00:00
rlaphoenix 9e23ee13bb Remove silent args in aria2c calls for HLS/DASH 2023-03-03 07:52:13 +00:00
rlaphoenix 432a1122c5 Fix printing of aria2c logs when capturing progress 2023-03-03 07:52:13 +00:00
rlaphoenix b2bcaf97a2 Remove double newline after ASCII banner 2023-03-02 16:24:54 +00:00
rlaphoenix cb1a7988f4 Fix centering of project url in ASCII banner 2023-03-02 16:24:01 +00:00
rlaphoenix 3456e24846 State full 'Episode' text if there's no episode name 2023-03-02 16:19:46 +00:00
rlaphoenix f8a8309628 Fix verbose episode listings if there's no episode name 2023-03-02 16:17:20 +00:00
rlaphoenix fc3e49baf6 Update Changelog for v2.0.0 2023-03-01 22:06:08 +00:00
rlaphoenix 46cb1ba0fa Bump to v2.0.0 2023-03-01 22:05:52 +00:00
rlaphoenix 0b1f327a6c Update config documentation on the basic proxy provider 2023-03-01 21:26:52 +00:00
rlaphoenix d75996f6e4 Add title download time elapsed to finish log 2023-03-01 16:06:55 +00:00
rlaphoenix 7ee5e71075 Move download time elapsed code to utilities 2023-03-01 16:06:20 +00:00
rlaphoenix 7b7be47f7d Clean up residual files on download stops and fails 2023-03-01 11:19:32 +00:00
rlaphoenix 9f48aab80c Shutdown HLS & DASH dl pool, pass exceptions to dl
This results in a noticeably faster speed cancelling segmented track downloads on CTRL+C and Errors. It's also reducing code duplication as the dl code will now handle the exception and cleanup for them.

This also simplifies the STOPPING/STOPPED and FAILING/FAILED status messages by quite a bit.
2023-03-01 11:08:52 +00:00
rlaphoenix fbe78308eb Handle download worker exceptions outside thread loop
This is so that I can start to log information after the track listing. It's also not necessary to have the try catch within the loop, when both methods will have exited the loop.
2023-03-01 11:08:52 +00:00
rlaphoenix 624bb6fe75 Only calculate DASH/HLS dl speed if dl sizes are available 2023-03-01 11:08:52 +00:00
rlaphoenix 3a98c93f03 Support CTRL+C on URL downloads, use FAILED/STOPPED messages 2023-03-01 11:08:52 +00:00
rlaphoenix 6a65617179 Reduce the download stop check to one if check in dl 2023-03-01 08:55:40 +00:00
rlaphoenix 840db6e689 Move segment merging from dl to DASH/HLS classes 2023-03-01 08:54:35 +00:00
rlaphoenix d07fedbbe1 Move Widevine DRM prep for URL downloads before download 2023-03-01 08:44:50 +00:00
rlaphoenix fb49210b5a Remove explicit dependency on colorama
It's not used by devine itself, but it's still a sub-dependency. Remove from being an explicit dependency in case the sub-dependencies ever remove it as well.
2023-03-01 08:35:42 +00:00
rlaphoenix a841dbe2ab Remove dependency on tqdm 2023-03-01 08:33:40 +00:00
rlaphoenix f4ad7a2e6c Mark track as stopping when skipping segments 2023-02-28 18:14:03 +00:00
rlaphoenix b482f86bb3 Skip post-download operations if dl stop event is set 2023-02-28 18:05:04 +00:00
rlaphoenix 383e7d9647 Add full support for CTRL+C on HLS and DASH 2023-02-28 18:05:04 +00:00
rlaphoenix 8365d798a4 Pass shaka-packager & aria CTRL+C to caller as KeyboardInterrupt()s 2023-02-28 18:05:04 +00:00
rlaphoenix ad1990cc42 Print a download cancelled message on CTRL+C 2023-02-28 18:05:04 +00:00
rlaphoenix 53c005f727 Remove unnecessary dl stop event set on CTRL+C 2023-02-28 18:05:04 +00:00
rlaphoenix 9cfda3bb9c Don't shutdown pool or the for loop will lock
Since I'm using `futures.as_completed()`, it will never ever for loop over all tracks and segments and will forever be stuck in the primary thread of the operation. I.e., main thread for the download track threads, or the track thread for the download segment threads.

I've also removed all future cancelled checks as they will never be cancelled before they get the chance to run, because no future cancel calls are made anymore.
2023-02-28 18:05:03 +00:00
rlaphoenix 51fb7920c9 Mark track as skipped if it never got a chance to start downloading 2023-02-28 16:39:33 +00:00
rlaphoenix acead803bd Remove unnecessary sleep calls at start of download threads 2023-02-28 16:38:10 +00:00
rlaphoenix b6d3c8368a Update CONFIG docs to use proxy_providers
Also removes an old unused `proxies` config option.
2023-02-28 16:32:13 +00:00
rlaphoenix 961747b74c Set the default aria2c --file-allocation to prealloc
Falloc is faster, but supports less systems/environments, and usually require admin perms on Windows.
2023-02-28 16:23:34 +00:00
rlaphoenix ce53a1b636 Don't run aria2c under asyncio, further improve progress updates
I've removed asyncio usage as it's generally unnecessary. If you want to run aria2c under a thread, run it under a thread. In the case for devine, this would take another thread, and would be another thread layer deep. Pointless. Would affect speed.

With this change I've been able to improve the aria2c progress capture code quite a bit.
2023-02-28 08:21:55 +00:00
rlaphoenix d427ec8472 Fix yet another startup crash when loading the config 2023-02-28 06:30:12 +00:00
rlaphoenix 3cfc679294 Center ASCII banner without using U+2800 2023-02-28 06:03:42 +00:00
rlaphoenix dc55f6ffeb Calculate DASH and HLS download speed in an alternate way
Also fixes getting download sizes for Subtitle tracks
2023-02-28 06:03:27 +00:00