Just wanted to drop in and let people know I've decided to archive my repo with services.
With Unshackle v5 performing a lot worse for some users (myself included), I've been getting messages asking how to re-introduce n_m3u8dl_re and other various fixes. So it looks like we're back in the fragmented state of things where forks are being made and some even reverting to Vinetrimmer - the tool our ancestors used before fire was invented. And I'm just not interested in doing all that again. I'm also not a huge fan of how big of a role Claude has with the whole thing, but that's just my personal gripe with AI in general.
I still like creating things and might do something else in the future, but as far as Unshackle goes it's time for me to call it a day. I'd still argue that it's the best public downloader/framework out there, though, so don't take this as me dumping on it. It's just not working well for me personally and it's time to move on.
+ Reply to Thread
Results 1,051 to 1,080 of 1158
-
-
Noob Starter Pack. Just download any Widevine media! Over 27,000 downloads for V6!.
https://files.videohelp.com/u/301890/hellyes6.zip -
Thank you for all that you have done. I am going to try to revert a lower version of Unshackle as this newest version is problematic. I seem to be the only one with the Crave video problem but hopefully WVP2 keeps working flawlessly and doesn't end up with the same problem.
I get that Unshackle is evolving but it seems with the last two upgrades that for whatever these advances are that you loose something and services that used to work splendidly now don't. I hope you continue to create. I am grateful for Twinvine as well but that CRAV problem that only I see to be having even happened with it with both Widevine and PlayReady. I am beginning to think I need to set up a Bell Media account instead of using Crave credentials. -
Now I am finding that ALL4 is failing even in Envied with the newest version of Envied. I haven't upgraded on the older Mini PC to the newest envied so it is working with ALL4 for now anyway.
If I could do it over again I would not have upgraded to the new version of Unshackle. -
-
-
Noob Starter Pack. Just download any Widevine media! Over 27,000 downloads for V6!.
https://files.videohelp.com/u/301890/hellyes6.zip -
I didn't update Twinvine on my older mini pc but did update on my newer one and this is what is happening with ALL4:
Code:C:\TwinVine>uv run envied dl -q 576 -w S01 ALL4 https://www.channel4.com/programmes/the-invisibles-2025 ░█▀▀░█▀█░█░█░▀█▀░█▀▀░█▀▄ ░█▀▀░█░█░▀▄▀░░█░░█▀▀░█░█ ░▀▀▀░▀░▀░░▀░░▀▀▀░▀▀▀░▀▀░ and more than unshackled... v 5.1.0 - https://github.com/vinefeeder/envied Service Config loaded Loaded 1/1 Vaults Loaded Widevine CDM: 4445 (L3) ────────────────────────────── Service: ALL4 ─────────────────────────────── Service is not Geoblocked in your region + Using cached Tokens... Authenticated with Service ────────────────────── Series: The Invisibles (2025) ─────────────────────── 2 seasons, S1(6), S2(6) ──────────────────── The Invisibles (2025) S01E01 Milan ──────────────────── [Widevine]: [0623/081034:ERROR:box_reader.cc(121)] NOT IMPLEMENTEDBox '' run to EOS. [0623/081034:ERROR:packager_main.cc(554)] Packaging Error: 8 (PARSER_FAILURE): Cannot parse media file Temp\Audio_dc68d884.mp4 1 Video └── [H.264, SDR] | en | 1024x576 @ 1667 kb/s, 25.000 FPS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 05:40 Downloaded 1 Audio └── [AAC] | en | 2.0 | 136 kb/s ⠹ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ --:-- Decrypting 1 Subtitle └── [VTT] | en ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 00:02 Downloaded 6 Chapters ├── 00:00:00.000 | Chapter 01 ├── 00:10:42.600 | Chapter 02 ├── 00:21:16.840 | Chapter 03 ├── 00:34:46.040 | Chapter 04 ├── 00:43:37.480 | Chapter 05 └── 00:57:53.840 | Credits Widevine(AAAASnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACoIARIQ/4vIDjlsh...) └── ff8bc80e396c860c0e7ff6bf42de95dc:bb759b6e95a699b3d6bd3eb7407f455e* from drmlab HTTPAPI ❌ Download Failed... CalledProcessError: Command '[WindowsPath('C:/TwinVine/packages/envied/src/envied/binaries/shaka-p ackager.exe'), 'input=Temp\\Audio_dc68d884.mp4,stream=0,output=Temp\\Audio_dc68d884_d ecrypted.mp4,output_format=MP4', '--enable_raw_key_decryption', '--keys', 'label=0:key_id=ff8bc80e396c860c0e7ff6bf42de95dc:key=bb759b6e95a699b3d 6bd3eb7407f455e,label=1:key_id=00000000000000000000000000000000:key=bb 759b6e95a699b3d6bd3eb7407f455e', '--temp_dir', WindowsPath('Temp')]' returned non-zero exit status 2. Binary call failed, Process exit code: 2 An unexpected error occurred in one of the download workers. ╭───────────────────── Traceback (most recent call last) ──────────────────────╮ │ C:\TwinVine\packages\envied\src\envied\commands\dl.py:2242 in result │ │ │ │ 2239 │ │ │ │ │ │ │ │ for i, track in enumerate(title.track │ │ 2240 │ │ │ │ │ │ │ ) │ │ 2241 │ │ │ │ │ │ ): │ │ ❱ 2242 │ │ │ │ │ │ │ download.result() │ │ 2243 │ │ │ │ │ 2244 │ │ │ except KeyboardInterrupt: │ │ 2245 │ │ │ │ console.print(Padding(":x: Download Cancelled...", (0 │ │ │ │ C:\Users\sheld\AppData\Local\Programs\Python\Python312\Lib\concurrent\future │ │ s\_base.py:449 in result │ │ │ │ 446 │ │ │ │ if self._state in [CANCELLED, CANCELLED_AND_NOTIFIED]: │ │ 447 │ │ │ │ │ raise CancelledError() │ │ 448 │ │ │ │ elif self._state == FINISHED: │ │ ❱ 449 │ │ │ │ │ return self.__get_result() │ │ 450 │ │ │ │ │ │ 451 │ │ │ │ self._condition.wait(timeout) │ │ 452 │ │ │ │ C:\Users\sheld\AppData\Local\Programs\Python\Python312\Lib\concurrent\future │ │ s\_base.py:401 in __get_result │ │ │ │ 398 │ def __get_result(self): │ │ 399 │ │ if self._exception: │ │ 400 │ │ │ try: │ │ ❱ 401 │ │ │ │ raise self._exception │ │ 402 │ │ │ finally: │ │ 403 │ │ │ │ # Break a reference cycle with the exception in self._ │ │ 404 │ │ │ │ self = None │ │ │ │ C:\Users\sheld\AppData\Local\Programs\Python\Python312\Lib\concurrent\future │ │ s\thread.py:58 in run │ │ │ │ 55 │ │ │ return │ │ 56 │ │ │ │ 57 │ │ try: │ │ ❱ 58 │ │ │ result = self.fn(*self.args, **self.kwargs) │ │ 59 │ │ except BaseException as exc: │ │ 60 │ │ │ self.future.set_exception(exc) │ │ 61 │ │ │ # Break a reference cycle with the exception 'exc' │ │ │ │ C:\TwinVine\packages\envied\src\envied\core\tracks\track.py:272 in download │ │ │ │ 269 │ │ │ │ │ cdm=cdm, │ │ 270 │ │ │ │ ) │ │ 271 │ │ │ elif self.descriptor == self.Descriptor.DASH: │ │ ❱ 272 │ │ │ │ DASH.download_track( │ │ 273 │ │ │ │ │ track=self, │ │ 274 │ │ │ │ │ save_path=save_path, │ │ 275 │ │ │ │ │ save_dir=save_dir, │ │ │ │ C:\TwinVine\packages\envied\src\envied\core\manifests\dash.py:561 in │ │ download_track │ │ │ │ 558 │ │ │ │ 559 │ │ if drm: │ │ 560 │ │ │ progress(downloaded="Decrypting", completed=0, total=100) │ │ ❱ 561 │ │ │ drm.decrypt(save_path) │ │ 562 │ │ │ track.drm = None │ │ 563 │ │ │ events.emit(events.Types.TRACK_DECRYPTED, track=track, dr │ │ 564 │ │ │ progress(downloaded="Decrypting", advance=100) │ │ │ │ C:\TwinVine\packages\envied\src\envied\core\drm\widevine.py:294 in decrypt │ │ │ │ 291 │ │ if decrypter == "mp4decrypt": │ │ 292 │ │ │ return self._decrypt_with_mp4decrypt(path) │ │ 293 │ │ else: │ │ ❱ 294 │ │ │ return self._decrypt_with_shaka_packager(path) │ │ 295 │ │ │ 296 │ def _decrypt_with_mp4decrypt(self, path: Path) -> None: │ │ 297 │ │ """Decrypt using mp4decrypt""" │ │ │ │ C:\TwinVine\packages\envied\src\envied\core\drm\widevine.py:410 in │ │ _decrypt_with_shaka_packager │ │ │ │ 407 │ │ │ p.wait() │ │ 408 │ │ │ │ │ 409 │ │ │ if p.returncode != 0 or had_error: │ │ ❱ 410 │ │ │ │ raise subprocess.CalledProcessError(p.returncode, [bin │ │ 411 │ │ │ │ │ 412 │ │ │ path.unlink() │ │ 413 │ │ │ if not stream_skipped: │ ╰──────────────────────────────────────────────────────────────────────────────╯ CalledProcessError: Command '[WindowsPath('C:/TwinVine/packages/envied/src/envied/binaries/shaka-packager.ex e'), 'input=Temp\\Audio_dc68d884.mp4,stream=0,output=Temp\\Audio_dc68d884_decrypted.m p4,output_format=MP4', '--enable_raw_key_decryption', '--keys', 'label=0:key_id=ff8bc80e396c860c0e7ff6bf42de95dc:key=bb759b6e95a699b3d6bd3eb7407 f455e,label=1:key_id=00000000000000000000000000000000:key=bb759b6e95a699b3d6bd3e b7407f455e', '--temp_dir', WindowsPath('Temp')]' returned non-zero exit status 2. C:\TwinVine> -
As you'll no doubt be able to read from that info-dump, shaka-packager is your culprit.
I would remove it and reinstall this one https://github.com/shaka-project/shaka-packager/releases/download/v2.6.1/packager-win-x64.exe
I just tried that command you used
uv run envied dl -q 576 -w S01 ALL4 https://www.channel4.com/programmes/the-invisibles-2025
and on a windows machine.
Envied works, loose language saying envied doesn't work for ALL4 just misleads everyone, please be careful how you express yourself.
[Attachment 92801 - Click to enlarge]Last edited by A_n_g_e_l_a; 23rd Jun 2026 at 09:07.
Noob Starter Pack. Just download any Widevine media! Over 27,000 downloads for V6!.
https://files.videohelp.com/u/301890/hellyes6.zip -
I have replaced shaka with the file you pointed to but it looks like I am getting the same error as before:
Looking in the temp folder I do have a complete video file and subtitle file but no audio file. I am going to test some other services and see how they are working.Code:C:\TwinVine>uv run envied dl -q 576 -w S01E01 ALL4 https://www.channel4.com/programmes/the-invisibles-2025 ░█▀▀░█▀█░█░█░▀█▀░█▀▀░█▀▄ ░█▀▀░█░█░▀▄▀░░█░░█▀▀░█░█ ░▀▀▀░▀░▀░░▀░░▀▀▀░▀▀▀░▀▀░ and more than unshackled... v 5.1.0 - https://github.com/vinefeeder/envied Service Config loaded Loaded 1/1 Vaults Loaded Widevine CDM: 4445 (L3) ────────────────────────────── Service: ALL4 ─────────────────────────────── Service is not Geoblocked in your region + Using cached Tokens... Authenticated with Service ────────────────────── Series: The Invisibles (2025) ─────────────────────── 2 seasons, S1(6), S2(6) ──────────────────── The Invisibles (2025) S01E01 Milan ──────────────────── [Widevine]: [0623/103426:ERROR:box_reader.cc(121)] NOT IMPLEMENTEDBox '' run to EOS. [0623/103426:ERROR:packager_main.cc(554)] Packaging Error: 8 (PARSER_FAILURE): Cannot parse media file Temp\Audio_dc68d884.mp4 1 Video └── [H.264, SDR] | en | 1024x576 @ 1667 kb/s, 25.000 FPS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11:25 Downloaded 1 Audio └── [AAC] | en | 2.0 | 136 kb/s ⠧ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ --:-- Decrypting 1 Subtitle └── [VTT] | en ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 00:03 Downloaded 6 Chapters ├── 00:00:00.000 | Chapter 01 ├── 00:10:42.600 | Chapter 02 ├── 00:21:16.840 | Chapter 03 ├── 00:34:46.040 | Chapter 04 ├── 00:43:37.480 | Chapter 05 └── 00:57:53.840 | Credits Widevine(AAAASnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACoIARIQ/4vIDjlsh...) └── ff8bc80e396c860c0e7ff6bf42de95dc:bb759b6e95a699b3d6bd3eb7407f455e* from drmlab HTTPAPI ❌ Download Failed... CalledProcessError: Command '[WindowsPath('C:/TwinVine/packages/envied/src/envied/binaries/shaka-p ackager.exe'), 'input=Temp\\Audio_dc68d884.mp4,stream=0,output=Temp\\Audio_dc68d884_d ecrypted.mp4,output_format=MP4', '--enable_raw_key_decryption', '--keys', 'label=0:key_id=ff8bc80e396c860c0e7ff6bf42de95dc:key=bb759b6e95a699b3d 6bd3eb7407f455e,label=1:key_id=00000000000000000000000000000000:key=bb 759b6e95a699b3d6bd3eb7407f455e', '--temp_dir', WindowsPath('Temp')]' returned non-zero exit status 2. Binary call failed, Process exit code: 2 An unexpected error occurred in one of the download workers. ╭───────────────────── Traceback (most recent call last) ──────────────────────╮ │ C:\TwinVine\packages\envied\src\envied\commands\dl.py:2242 in result │ │ │ │ 2239 │ │ │ │ │ │ │ │ for i, track in enumerate(title.track │ │ 2240 │ │ │ │ │ │ │ ) │ │ 2241 │ │ │ │ │ │ ): │ │ ❱ 2242 │ │ │ │ │ │ │ download.result() │ │ 2243 │ │ │ │ │ 2244 │ │ │ except KeyboardInterrupt: │ │ 2245 │ │ │ │ console.print(Padding(":x: Download Cancelled...", (0 │ │ │ │ C:\Users\sheld\AppData\Local\Programs\Python\Python312\Lib\concurrent\future │ │ s\_base.py:449 in result │ │ │ │ 446 │ │ │ │ if self._state in [CANCELLED, CANCELLED_AND_NOTIFIED]: │ │ 447 │ │ │ │ │ raise CancelledError() │ │ 448 │ │ │ │ elif self._state == FINISHED: │ │ ❱ 449 │ │ │ │ │ return self.__get_result() │ │ 450 │ │ │ │ │ │ 451 │ │ │ │ self._condition.wait(timeout) │ │ 452 │ │ │ │ C:\Users\sheld\AppData\Local\Programs\Python\Python312\Lib\concurrent\future │ │ s\_base.py:401 in __get_result │ │ │ │ 398 │ def __get_result(self): │ │ 399 │ │ if self._exception: │ │ 400 │ │ │ try: │ │ ❱ 401 │ │ │ │ raise self._exception │ │ 402 │ │ │ finally: │ │ 403 │ │ │ │ # Break a reference cycle with the exception in self._ │ │ 404 │ │ │ │ self = None │ │ │ │ C:\Users\sheld\AppData\Local\Programs\Python\Python312\Lib\concurrent\future │ │ s\thread.py:58 in run │ │ │ │ 55 │ │ │ return │ │ 56 │ │ │ │ 57 │ │ try: │ │ ❱ 58 │ │ │ result = self.fn(*self.args, **self.kwargs) │ │ 59 │ │ except BaseException as exc: │ │ 60 │ │ │ self.future.set_exception(exc) │ │ 61 │ │ │ # Break a reference cycle with the exception 'exc' │ │ │ │ C:\TwinVine\packages\envied\src\envied\core\tracks\track.py:272 in download │ │ │ │ 269 │ │ │ │ │ cdm=cdm, │ │ 270 │ │ │ │ ) │ │ 271 │ │ │ elif self.descriptor == self.Descriptor.DASH: │ │ ❱ 272 │ │ │ │ DASH.download_track( │ │ 273 │ │ │ │ │ track=self, │ │ 274 │ │ │ │ │ save_path=save_path, │ │ 275 │ │ │ │ │ save_dir=save_dir, │ │ │ │ C:\TwinVine\packages\envied\src\envied\core\manifests\dash.py:561 in │ │ download_track │ │ │ │ 558 │ │ │ │ 559 │ │ if drm: │ │ 560 │ │ │ progress(downloaded="Decrypting", completed=0, total=100) │ │ ❱ 561 │ │ │ drm.decrypt(save_path) │ │ 562 │ │ │ track.drm = None │ │ 563 │ │ │ events.emit(events.Types.TRACK_DECRYPTED, track=track, dr │ │ 564 │ │ │ progress(downloaded="Decrypting", advance=100) │ │ │ │ C:\TwinVine\packages\envied\src\envied\core\drm\widevine.py:294 in decrypt │ │ │ │ 291 │ │ if decrypter == "mp4decrypt": │ │ 292 │ │ │ return self._decrypt_with_mp4decrypt(path) │ │ 293 │ │ else: │ │ ❱ 294 │ │ │ return self._decrypt_with_shaka_packager(path) │ │ 295 │ │ │ 296 │ def _decrypt_with_mp4decrypt(self, path: Path) -> None: │ │ 297 │ │ """Decrypt using mp4decrypt""" │ │ │ │ C:\TwinVine\packages\envied\src\envied\core\drm\widevine.py:410 in │ │ _decrypt_with_shaka_packager │ │ │ │ 407 │ │ │ p.wait() │ │ 408 │ │ │ │ │ 409 │ │ │ if p.returncode != 0 or had_error: │ │ ❱ 410 │ │ │ │ raise subprocess.CalledProcessError(p.returncode, [bin │ │ 411 │ │ │ │ │ 412 │ │ │ path.unlink() │ │ 413 │ │ │ if not stream_skipped: │ ╰──────────────────────────────────────────────────────────────────────────────╯ CalledProcessError: Command '[WindowsPath('C:/TwinVine/packages/envied/src/envied/binaries/shaka-packager.ex e'), 'input=Temp\\Audio_dc68d884.mp4,stream=0,output=Temp\\Audio_dc68d884_decrypted.m p4,output_format=MP4', '--enable_raw_key_decryption', '--keys', 'label=0:key_id=ff8bc80e396c860c0e7ff6bf42de95dc:key=bb759b6e95a699b3d6bd3eb7407 f455e,label=1:key_id=00000000000000000000000000000000:key=bb759b6e95a699b3d6bd3e b7407f455e', '--temp_dir', WindowsPath('Temp')]' returned non-zero exit status 2. C:\TwinVine>
Update: I have tested TUBI and with both DRM free and DRM videos it is working fine. It downloads all the video parts and muxes them together with no errors and no distortions in the video.
I tested with ITV, MY5 and UKTV and the videos downloaded fine. iP has never worked for me but I have another program that works for that at least so far.Last edited by Tom Saurus; 23rd Jun 2026 at 11:49.
-
work fine with unshackle
[Attachment 92802 - Click to enlarge]
I wonder why is you have 2nd keys for.
Code:key_id=00000000000000000000000000000000:key=bb759b6e95a699b3d6bd3eb7407f455e
-
I will test with Unshackle and report back.
Update: The episode downloading successfully with Unshackle:
I am happy about this as I have quite a lot of affection for Walter Presents World Drama and other Mystery shows.Code:C:\Unshackle>uv run unshackle dl -q 576 -w S01E01 ALL4 https://www.channel4.com/programmes/the-invisibles-2025 ▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ . █▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀· █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄ ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌ ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀ v 5.1.0 - © 2025-2026 - github.com/unshackle-dl/unshackle Service Config loaded Loaded 1/1 Vaults Loaded Widevine CDM: 4464 (L3) ────────────────────────────── Service: ALL4 ─────────────────────────────── Service is not Geoblocked in your region Refreshing cached Tokens + Refreshed Authenticated with Service ────────────────────── Series: The Invisibles (2025) ─────────────────────── 2 seasons, S1(6), S2(6) ──────────────────── The Invisibles (2025) S01E01 Milan ──────────────────── Cached 1 Key to 1/1 Vaults 1 Video └── [H.264, SDR] | en | 1024x576 @ 1667 kb/s, 25.000 FPS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11:50 Downloaded 1 Audio └── [AAC] | en | 2.0 | 136 kb/s ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11:27 Downloaded 1 Subtitle └── [VTT] | en ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 00:02 Downloaded 6 Chapters ├── 00:00:00.000 | Chapter 01 ├── 00:10:42.600 | Chapter 02 ├── 00:21:16.840 | Chapter 03 ├── 00:34:46.040 | Chapter 04 ├── 00:43:37.480 | Chapter 05 └── 00:57:53.840 | Credits Widevine(AAAASnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACoIARIQ/4vIDjlsh...) └── ff8bc80e396c860c0e7ff6bf42de95dc:bb759b6e95a699b3d6bd3eb7407f455e* Track downloads finished in 11m50s Multiplexing... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 00:04 Title downloaded in 11m55s! Processed all titles in 12m4s C:\Unshackle>Last edited by Tom Saurus; 23rd Jun 2026 at 12:46. Reason: Updating with more information
-
Noob Starter Pack. Just download any Widevine media! Over 27,000 downloads for V6!.
https://files.videohelp.com/u/301890/hellyes6.zip -
Noob Starter Pack. Just download any Widevine media! Over 27,000 downloads for V6!.
https://files.videohelp.com/u/301890/hellyes6.zip -
-
Back to ALL4 with Envied v4.0.0 I get consistent downloads. I did get one episode to download with the newest Unshackle when it comes to ALL4 but it has went back to failing. I am noticing that keys are coming from DMRLabs with these new versions and I don't know if that has anything to do with what is going on. But here is a successful download:
So for the newest Twinvine and Unshackle there must be something in the code of my .yaml that is wrong.Code:C:\TwinVine>uv run envied dl -q 576 -w S01E02-S01E06,S02 ALL4 https://www.channel4.com/programmes/the-invisibles-2025 ░█▀▀░█▀█░█░█░▀█▀░█▀▀░█▀▄ ░█▀▀░█░█░▀▄▀░░█░░█▀▀░█░█ ░▀▀▀░▀░▀░░▀░░▀▀▀░▀▀▀░▀▀░ and more than unshackled... v 4.0.0 - https://github.com/vinefeeder/envied Service Config loaded Loaded 1/1 Vaults Loaded Widevine CDM: 4445 (L3) ────────────────────────────── Service: ALL4 ─────────────────────────────── Service is not Geoblocked in your region + Using cached Tokens... Authenticated with Service ────────────────────── Series: The Invisibles (2025) ─────────────────────── 2 seasons, S1(6), S2(6) ────────────────── The Invisibles (2025) S01E02 Sycamore ─────────────────── Failed to get key (ValueError: API returned HTTP Error 401: Unauthorized) Cached 1 Key to 1/1 Vaults Failed to get key (ValueError: API returned HTTP Error 401: Unauthorized) Cached 1 Key to 1/1 Vaults 1 Video └── [H.264, SDR] | en | 1024x576 @ 1615 kb/s, 25.000 FPS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13:42 Downloaded 1 Audio └── [AAC] | en | 2.0 | 136 kb/s ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 09:59 Downloaded 1 Subtitle └── [VTT] | en ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 00:01 Downloaded 5 Chapters ├── 00:00:00.000 | Chapter 01 ├── 00:13:42.720 | Chapter 02 ├── 00:23:50.560 | Chapter 03 ├── 00:36:10.520 | Chapter 04 └── 00:54:13.600 | Credits Widevine(AAAASnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACoIARIQmBoF4HF0f...) └── 981a05e071747f8e08687c410690985f:a6f2e03c333c6d7349558a4272be210c* Track downloads finished in 13m42s Multiplexing... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 00:08 Title downloaded in 13m53s! -
DRM lab have change secret/password
If you want it remove, all you do is remove from vault in yaml
Https or httpapi -
Hi there guys, What is the git clone command to download an older version of unshackle?
Thanks. -
I dont think you can downgrade with git clone
you have to download zip and set up by your self
https://github.com/unshackle-dl/unshackle/releases -
git clone --branch 4.0.0 https://github.com/unshackle-dl/unshackle.git
-
Thanks for the info, iamghost & DragonQ v5 seems to be working okay for me with most services I just wanted to get HMAX working which did in v5
One other question, what is the best Chrome or Firefox extension for downloading cookies?
Cheers again for the help. -
I add my thanks as well. I am testing Unshackle 4.0.0 on ALL4 and I sure hope it will be as it once was working smoothly.
-
Sadly though, as soon as they make API changes you'll be in the same boat, plus using an outdated version of unshackle. Surely, with respect, your putting the cart before the horse and it would be better to make the script work with new unshackle v5.1.0 (?)
The new unshackle is not the issue, my ALL4 script works perfectly on v5.1.0
Its your choice though.
[Attachment 92811 - Click to enlarge]
[Attachment 92812 - Click to enlarge]Last edited by YmFzZTY0; 24th Jun 2026 at 09:45.
-
I will have to go back to the newest version of Unshackle and give up on ALL4 for now. It has failed multiple times now for me and this time it is the video track:
It is a bummer but maybe eventually it will work out. I think to that I need to do something different with the CRAV credentials; I will have to take out the current ones and sign up for a Bell Media Account for it to work, hopefully.Code:C:\unshackle>uv run unshackle dl -q 576 ALL4 https://www.channel4.com/programmes/the-inbetweeners-movie ▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ . █▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀· █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄ ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌ ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀ v 4.0.0 - © 2025-2026 - github.com/unshackle-dl/unshackle ⚠️ Update available! Current: 4.0.0 → Latest: 5.1.0 Visit: https://github.com/unshackle-dl/unshackle/releases/latest Service Config loaded Loaded 1/1 Vaults Loaded Widevine CDM: 4464 (L3) ────────────────────────────── Service: ALL4 ─────────────────────────────── Service is not Geoblocked in your region + Using cached Tokens... Authenticated with Service ────────────────── Movies: The Inbetweeners Movie (2011) ─────────────────── 1 Movie ────────────────────── The Inbetweeners Movie (2011) ─────────────────────── Falling back to the requests downloader as aria2(c) doesn't support the Range header Falling back to the requests downloader as aria2(c) doesn't support the Range header 1 Video └── [H.264, SDR] | en | 1024x576 @ 1841 kb/s, 25.000 FPS ⠦ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╺━━━ 01:37 FAILED 1 Audio └── [AAC] | en | 2.0 | 135 kb/s ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 03:07 Downloaded 1 Subtitle └── [VTT] | en ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 00:03 Downloaded 5 Chapters ├── 00:00:00.000 | Chapter 01 ├── 00:18:32.280 | Chapter 02 ├── 00:52:01.400 | Chapter 03 ├── 01:10:16.800 | Chapter 04 └── 01:30:04.800 | Credits Widevine(AAAASnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACoIARIQGVKxYp6bk...) └── 1952b1629e9b930c6b23d37280c1a444:d01ada5e34eead1c70fcad28dbb8777a* from Local SQLite ❌ Download Failed... ('Connection broken: IncompleteRead(130634626 bytes read, 920169548 more expected)', IncompleteRead(130634626 bytes read, 920169548 more expected)) An unexpected error occurred in one of the download workers. See the error trace above for more information. C:\unshackle>uv run unshackle dl -V -q 576 ALL4 https://www.channel4.com/programmes/the-inbetweeners-movie ▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ . █▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀· █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄ ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌ ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀ v 4.0.0 - © 2025-2026 - github.com/unshackle-dl/unshackle ⚠️ Update available! Current: 4.0.0 → Latest: 5.1.0 Visit: https://github.com/unshackle-dl/unshackle/releases/latest Service Config loaded Loaded 1/1 Vaults Loaded Widevine CDM: 4464 (L3) ────────────────────────────── Service: ALL4 ─────────────────────────────── Service is Geoblocked in your region, getting a Proxy to gb + Using cached Tokens... Authenticated with Service ────────────────── Movies: The Inbetweeners Movie (2011) ─────────────────── 1 Movie ────────────────────── The Inbetweeners Movie (2011) ─────────────────────── Request for Android endpoint returned <Response [403]> Request for WEB endpoint returned <Response [403]> Failed to request manifest data. If you're behind a VPN/proxy, you might be blocked C:\unshackle>uv run unshackle dl -V -q 576 ALL4 https://www.channel4.com/programmes/the-inbetweeners-movie ▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ . █▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀· █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄ ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌ ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀ v 4.0.0 - © 2025-2026 - github.com/unshackle-dl/unshackle ⚠️ Update available! Current: 4.0.0 → Latest: 5.1.0 Visit: https://github.com/unshackle-dl/unshackle/releases/latest Service Config loaded Loaded 1/1 Vaults Loaded Widevine CDM: 4464 (L3) ────────────────────────────── Service: ALL4 ─────────────────────────────── Service is not Geoblocked in your region + Using cached Tokens... Authenticated with Service ────────────────── Movies: The Inbetweeners Movie (2011) ─────────────────── 1 Movie ────────────────────── The Inbetweeners Movie (2011) ─────────────────────── Falling back to the requests downloader as aria2(c) doesn't support the Range header 1 Video └── [H.264, SDR] | en | 1024x576 @ 1841 kb/s, 25.000 FPS ⠏ ━━━━━━━━━━━━━━━━━━━━━━━━━━╺━━━━━━━━━━━━━ 05:42 FAILED Widevine(AAAASnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACoIARIQGVKxYp6bk...) └── 1952b1629e9b930c6b23d37280c1a444:d01ada5e34eead1c70fcad28dbb8777a* from Local SQLite ❌ Download Failed... ('Connection broken: IncompleteRead(135079458 bytes read, 915724716 more expected)', IncompleteRead(135079458 bytes read, 915724716 more expected)) An unexpected error occurred in one of the download workers. See the error trace above for more information. C:\unshackle> -
unshackle v 4 work fine..
[Attachment 92813 - Click to enlarge]
it look like your vpn -
I do have Windscribe the paid version but it is part of Eset Nod Anti-Virus Ultimate. I got it as a bundle as I usually just by from Amazon Canada and Best Buy Canada. If I ordered directly from a VPN vendor I would worry about my credit card number not being safe.
I would like to configure a proxy with this Windscribe VPN and perhaps that would work better. I just set it for a UK server on the Windscribe Program and as a I have written before iPlayer has never ever worked for with Unshackle or Envied.
But good news and I probably have a wackadoodle system now but I upgraded first with this new "tool" command over at the Unshackle Github page and I have buried in my user folder a Unshackle program. I couldn't really do much with that so I went and did the git pull and have the newest version of Unshackle in my C: folder. Well anyway I don't know how long it will work but I had success this time with ALL4:
Code:C:\unshackle>uv run unshackle dl -q 576 ALL4 https://www.channel4.com/programmes/the-inbetweeners-movie ▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ . █▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀· █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄ ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌ ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀ v 5.2.0 - © 2025-2026 - github.com/unshackle-dl/unshackle Loaded 24 services Service Config loaded Loaded 1/1 Vaults Loaded Widevine CDM: 4464 (L3) ────────────────────────────── Service: ALL4 ─────────────────────────────── Service is not Geoblocked in your region + Acquired tokens... Authenticated with Service ────────────────── Movies: The Inbetweeners Movie (2011) ─────────────────── 1 Movie ────────────────────── The Inbetweeners Movie (2011) ─────────────────────── Cached 1 Key to 1/1 Vaults 1 Video └── [H.264, SDR] | en | 1024x576 @ 1841 kb/s, 25.000 FPS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 18:43 Downloaded 1 Audio └── [AAC] | en | 2.0 | 135 kb/s ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 05:19 Downloaded 1 Subtitle └── [VTT] | en ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 00:02 Downloaded 5 Chapters ├── 00:00:00.000 | Chapter 01 ├── 00:18:32.280 | Chapter 02 ├── 00:52:01.400 | Chapter 03 ├── 01:10:16.800 | Chapter 04 └── 01:30:04.800 | Credits Widevine(AAAASnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACoIARIQGVKxYp6bk...) └── 1952b1629e9b930c6b23d37280c1a444:d01ada5e34eead1c70fcad28dbb8777a* Track downloads finished in 18m43s Multiplexing... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 00:07 🎉 Title downloaded in 19m2s! Processed all titles in 19m8s C:\unshackle> -
Working fine for me
Code:▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ . █▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀· █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄ ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌ ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀ v 5.1.0 - © 2025-2026 - github.com/unshackle-dl/unshackle Service Config loaded Loaded 1/1 Vaults Loaded Widevine CDM: 4464 (L3) ────────────────────────────── Service: ALL4 ─────────────────────────────── Service is not Geoblocked in your region Refreshing cached Tokens + Refreshed Authenticated with Service ────────────────── Movies: The Inbetweeners Movie (2011) ─────────────────── 1 Movie ────────────────────── The Inbetweeners Movie (2011) ─────────────────────── Cached 1 Key to 1/1 Vaults 1 Video └── [H.264, SDR] | en | 1920x1080 @ 6094 kb/s, 25.000 FPS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 07:28 Downloaded 1 Audio └── [AAC] | en | 2.0 | 135 kb/s ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 06:41 Downloaded 1 Subtitle └── [VTT] | en ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 00:00 Downloaded 5 Chapters ├── 00:00:00.000 | Chapter 01 ├── 00:18:32.280 | Chapter 02 ├── 00:52:01.400 | Chapter 03 ├── 01:10:16.800 | Chapter 04 └── 01:30:04.800 | Credits Widevine(AAAASnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACoIARIQGVKxYp6bk...) └── 1952b1629e9b930c6b23d37280c1a444:d01ada5e34eead1c70fcad28dbb8777a* Track downloads finished in 7m28s Multiplexing... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 00:09 🎉 Title downloaded in 7m44s! Processed all titles in 7m45s -
Well it was good while it lasted but one should focus on what is working and be happy with that:
Also CRAV is working again but with the distortion. I will try it with different credentials and see how that works. I will take a break and come back and see if that helps.Code:C:\unshackle>uv run unshackle dl -q 576 ALL4 https://www.channel4.com/programmes/the-light-in-the-hall ▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ . █▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀· █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄ ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌ ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀ v 5.2.0 - © 2025-2026 - github.com/unshackle-dl/unshackle Loaded 24 services Service Config loaded Loaded 1/1 Vaults Loaded Widevine CDM: 4464 (L3) ────────────────────────────── Service: ALL4 ─────────────────────────────── Service is not Geoblocked in your region + Using cached Tokens... Authenticated with Service ────────────────────── Series: The Light in the Hall ─────────────────────── 2 seasons, S1(6), S2026(6) ─────────────────────── The Light in the Hall S01E01 ─────────────────────── Cached 1 Key to 1/1 Vaults 1 Video └── [H.264, SDR] | en | 1024x576 @ 1507 kb/s, 25.000 FPS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 09:14 Downloaded 1 Audio └── [AAC] | en | 2.0 | 134 kb/s ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 09:13 Downloaded 1 Subtitle └── [VTT] | en ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 00:03 Downloaded 5 Chapters ├── 00:00:00.000 | Chapter 01 ├── 00:12:52.160 | Chapter 02 ├── 00:23:27.960 | Chapter 03 ├── 00:34:18.120 | Chapter 04 └── 00:45:47.120 | Credits Widevine(AAAASXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACkIARIQlbKxnXUkL...) └── 95b2b19d75242cb94dd1fdae04bb2c20:7939527ae1659c4c1ce215f966d857df* Track downloads finished in 9m14s Multiplexing... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 00:02 🎉 Title downloaded in 9m19s! ─────────────────────── The Light in the Hall S01E02 ─────────────────────── Cached 1 Key to 1/1 Vaults [Widevine]: [0624/133542:ERROR:box_reader.cc(121)] NOT IMPLEMENTEDBox '' run to EOS. [0624/133542:ERROR:packager_main.cc(554)] Packaging Error: 8 (PARSER_FAILURE): Cannot parse media file C:\unshackle\Temp\Audio_ab873b3b.mp4 1 Video └── [H.264, SDR] | en | 1024x576 @ 1538 kb/s, 25.000 FPS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 08:55 Downloaded 1 Audio └── [AAC] | en | 2.0 | 133 kb/s ⠙ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ --:-- Decrypting 1 Subtitle └── [VTT] | en ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 00:02 Downloaded 5 Chapters ├── 00:00:00.000 | Chapter 01 ├── 00:13:24.160 | Chapter 02 ├── 00:21:48.560 | Chapter 03 ├── 00:35:10.040 | Chapter 04 └── 00:46:56.760 | Credits Widevine(AAAASXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACkIARIQg97ktlnVK...) └── 83dee4b659d52a4f86c9becbd3fa91b3:c08b264a42a0bdc29e8154da494a79be* ❌ Download Failed... CalledProcessError: Command '[WindowsPath('C:/unshackle/unshackle/binaries/packager-win-x64.exe'), 'input=C:\\unshackle\\Temp\\Audio_ab873b3b.mp4,stream=0,output=C:\\uns hackle\\Temp\\Audio_ab873b3b_decrypted.mp4,output_format=MP4', '--enable_raw_key_decryption', '--keys', 'label=0:key_id=83dee4b659d52a4f86c9becbd3fa91b3:key=c08b264a42a0bdc29 e8154da494a79be,label=1:key_id=00000000000000000000000000000000:key=c0 8b264a42a0bdc29e8154da494a79be', '--temp_dir', WindowsPath('C:/unshackle/Temp')]' returned non-zero exit status 2. Binary call failed, Process exit code: 2 An unexpected error occurred in one of the download workers. ╭───────────────────── Traceback (most recent call last) ──────────────────────╮ │ C:\unshackle\unshackle\commands\dl.py:2850 in result │ │ │ │ 2847 │ │ │ │ │ │ │ self.log.debug(f"Skipped subtitle {track. │ │ 2848 │ │ │ │ │ │ │ 2849 │ │ │ │ │ skipped_before = len(self.skipped_subtitles) │ │ ❱ 2850 │ │ │ │ │ download_tracks_in_passes( │ │ 2851 │ │ │ │ │ │ title.tracks, │ │ 2852 │ │ │ │ │ │ downloads, │ │ 2853 │ │ │ │ │ │ download_track, │ │ │ │ C:\unshackle\unshackle\commands\dl.py:170 in download_tracks_in_passes │ │ │ │ 167 │ │ with ThreadPoolExecutor(max_concurrent) as pool: │ │ 168 │ │ │ future_to_track = {pool.submit(run_one, track, i): track │ │ 169 │ │ │ for download in futures.as_completed(future_to_track): │ │ ❱ 170 │ │ │ │ download.result() # a video/audio failure is fatal │ │ 171 │ │ │ │ 172 │ │ for i, track in skippable: │ │ 173 │ │ │ DOWNLOAD_CANCELLED.clear() │ │ │ │ C:\Users\sheld\AppData\Local\Programs\Python\Python312\Lib\concurrent\future │ │ s\_base.py:449 in result │ │ │ │ 446 │ │ │ │ if self._state in [CANCELLED, CANCELLED_AND_NOTIFIED]: │ │ 447 │ │ │ │ │ raise CancelledError() │ │ 448 │ │ │ │ elif self._state == FINISHED: │ │ ❱ 449 │ │ │ │ │ return self.__get_result() │ │ 450 │ │ │ │ │ │ 451 │ │ │ │ self._condition.wait(timeout) │ │ 452 │ │ │ │ C:\Users\sheld\AppData\Local\Programs\Python\Python312\Lib\concurrent\future │ │ s\_base.py:401 in __get_result │ │ │ │ 398 │ def __get_result(self): │ │ 399 │ │ if self._exception: │ │ 400 │ │ │ try: │ │ ❱ 401 │ │ │ │ raise self._exception │ │ 402 │ │ │ finally: │ │ 403 │ │ │ │ # Break a reference cycle with the exception in self._ │ │ 404 │ │ │ │ self = None │ │ │ │ C:\Users\sheld\AppData\Local\Programs\Python\Python312\Lib\concurrent\future │ │ s\thread.py:58 in run │ │ │ │ 55 │ │ │ return │ │ 56 │ │ │ │ 57 │ │ try: │ │ ❱ 58 │ │ │ result = self.fn(*self.args, **self.kwargs) │ │ 59 │ │ except BaseException as exc: │ │ 60 │ │ │ self.future.set_exception(exc) │ │ 61 │ │ │ # Break a reference cycle with the exception 'exc' │ │ │ │ C:\unshackle\unshackle\commands\dl.py:2802 in download_track │ │ │ │ 2799 │ │ │ │ with Live(Padding(download_table, (1, 5)), console=co │ │ 2800 │ │ │ │ │ │ │ 2801 │ │ │ │ │ def download_track(track: AnyTrack, i: int) -> No │ │ ❱ 2802 │ │ │ │ │ │ track.download( │ │ 2803 │ │ │ │ │ │ │ session=track.session or service.session, │ │ 2804 │ │ │ │ │ │ │ no_proxy_download=no_proxy_download, │ │ 2805 │ │ │ │ │ │ │ prepare_drm=partial( │ │ │ │ C:\unshackle\unshackle\core\tracks\track.py:272 in download │ │ │ │ 269 │ │ │ │ │ cdm=cdm, │ │ 270 │ │ │ │ ) │ │ 271 │ │ │ elif self.descriptor == self.Descriptor.DASH: │ │ ❱ 272 │ │ │ │ DASH.download_track( │ │ 273 │ │ │ │ │ track=self, │ │ 274 │ │ │ │ │ save_path=save_path, │ │ 275 │ │ │ │ │ save_dir=save_dir, │ │ │ │ C:\unshackle\unshackle\core\manifests\dash.py:580 in download_track │ │ │ │ 577 │ │ │ │ 578 │ │ if drm: │ │ 579 │ │ │ progress(downloaded="Decrypting", completed=0, total=100) │ │ ❱ 580 │ │ │ drm.decrypt(save_path) │ │ 581 │ │ │ track.drm = None │ │ 582 │ │ │ events.emit(events.Types.TRACK_DECRYPTED, track=track, dr │ │ 583 │ │ │ progress(downloaded="Decrypting", advance=100) │ │ │ │ C:\unshackle\unshackle\core\drm\widevine.py:336 in decrypt │ │ │ │ 333 │ │ if decrypter == "mp4decrypt": │ │ 334 │ │ │ self._decrypt_with_mp4decrypt(path) │ │ 335 │ │ else: │ │ ❱ 336 │ │ │ self._decrypt_with_shaka_packager(path) │ │ 337 │ │ │ │ 338 │ │ log_event( │ │ 339 │ │ │ "drm_decrypt_complete", │ │ │ │ C:\unshackle\unshackle\core\drm\widevine.py:463 in │ │ _decrypt_with_shaka_packager │ │ │ │ 460 │ │ │ p.wait() │ │ 461 │ │ │ │ │ 462 │ │ │ if p.returncode != 0 or had_error: │ │ ❱ 463 │ │ │ │ raise subprocess.CalledProcessError(p.returncode, [bin │ │ 464 │ │ │ │ │ 465 │ │ │ path.unlink() │ │ 466 │ │ │ if not stream_skipped: │ ╰──────────────────────────────────────────────────────────────────────────────╯ CalledProcessError: Command '[WindowsPath('C:/unshackle/unshackle/binaries/packager-win-x64.exe'), 'input=C:\\unshackle\\Temp\\Audio_ab873b3b.mp4,stream=0,output=C:\\unshackle\\Te mp\\Audio_ab873b3b_decrypted.mp4,output_format=MP4', '--enable_raw_key_decryption', '--keys', 'label=0:key_id=83dee4b659d52a4f86c9becbd3fa91b3:key=c08b264a42a0bdc29e8154da494 a79be,label=1:key_id=00000000000000000000000000000000:key=c08b264a42a0bdc29e8154 da494a79be', '--temp_dir', WindowsPath('C:/unshackle/Temp')]' returned non-zero exit status 2. C:\unshackle> -
@Tom Saurus, I suggested you have a chatGPT session - here is a result from mine.
But before you try any of that empty your existing temp/ folder within unshackle. It should get cleared each use by the system, but old files with similar names can get left over and confuse shaka-packager.
Possible Shaka Packager / Unshackle diagnostic steps
Credit: compiled with help from ChatGPT / GPT-5.5 Thinking.
Context:
A Windows system is failing during Shaka Packager decryption via Unshackle. The error shown is a Python `CalledProcessError`, e.g.
The same Shaka Packager version works elsewhere using the same general steps, so this may be Windows/environment/input-file related rather than simply a bad key.Code:CalledProcessError: Command '[WindowsPath('C:/unshackle/unshackle/binaries/packager-win-x64.exe'), 'input=C:\\unshackle\\Temp\\Audio_xxxxxxxx.mp4,stream=0,output=C:\\unshackle\\Temp\\Audio_xxxxxxxx_decrypted.mp4,output_format=MP4', '--enable_raw_key_decryption', '--keys', 'label=0:key_id=...:key=...,label=1:key_id=00000000000000000000000000000000:key=...', '--temp_dir', WindowsPath('C:/unshackle/Temp')]' returned non-zero exit status 2.
The relevant Unshackle files appear to be:
and, for PlayReady services:Code:unshackle/core/drm/widevine.py
The relevant function is likely:Code:unshackle/core/drm/playready.py
The Shaka call already uses:Code:python _decrypt_with_shaka_packager()
So that part does not need replacing.Code:python p = subprocess.Popen( [binaries.ShakaPackager, *arguments], stdout=subprocess.DEVNULL, stderr=subprocess.PIPE, universal_newlines=True, )
The issue is that Shakas stderr may already be captured into `shaka_log_buffer`, but the final raised `CalledProcessError` may not include that stderr text. That means the useful Shaka error message can be lost.
A useful diagnostic patch is to find the section after:
and replace the failure block with something like:Code:python p.wait()
A smaller patch would be:Code:python p.wait() if p.returncode != 0 or had_error: console.log("[Shaka command]") console.log(" ".join(str(x) for x in [binaries.ShakaPackager, *arguments])) console.log("[Shaka return code]") console.log(str(p.returncode)) console.log("[Shaka stderr]") console.log(shaka_log_buffer or "<no stderr captured from shaka-packager>") raise subprocess.CalledProcessError( p.returncode, [binaries.ShakaPackager, *arguments], stderr=shaka_log_buffer or "<no stderr captured from shaka-packager>", )
The main aim is to expose the real Shaka Packager stderr output. Exit code 2 is too generic on its own.Code:python p.wait() if p.returncode != 0 or had_error: raise subprocess.CalledProcessError( p.returncode, [binaries.ShakaPackager, *arguments], stderr=shaka_log_buffer or "<no stderr captured from shaka-packager>", )
Code to edit:-
[Attachment 92815 - Click to enlarge]
Other things to try:
1. Confirm the input file exists at the exact moment Shaka runs
For example:
There may be a race condition, failed prior download, cleanup issue, or antivirus file lock.Code:powershell dir C:\unshackle\Temp\Audio_xxxxxxxx.mp4
2. Run the exact Shaka command manually in PowerShell
This removes Python, workers, and wrapper logic from the test.
Example form:
If this gives a fuller error, that is the useful diagnostic message.Code:powershell C:\unshackle\unshackle\binaries\packager-win-x64.exe ` "input=C:\unshackle\Temp\Audio_xxxxxxxx.mp4,stream=0,output=C:\unshackle\Temp\Audio_xxxxxxxx_decrypted.mp4,output_format=MP4" ` --enable_raw_key_decryption ` --keys "label=0:key_id=REAL_KID:key=REAL_KEY,label=1:key_id=00000000000000000000000000000000:key=REAL_KEY" ` --temp_dir "C:\unshackle\Temp"
3. Try without the all-zero KID entry
The command includes a second key entry like:
This may be intentional in Unshackle for services where the file has a blank/default KID, but it is still worth testing manually with only the real KID:Code:label=1:key_id=00000000000000000000000000000000:key=...
[/code]powershell
C:\unshackle\unshackle\binaries\packager-win-x64.exe `
"input=C:\unshackle\Temp\Audio_xxxxxxxx.mp4,stream =0,output=C:\unshackle\Temp\Audio_xxxxxxxx_decrypt ed.mp4,output_format=MP4" `
--enable_raw_key_decryption `
--keys "label=0:key_id=REAL_KID:key=REAL_KEY" `
--temp_dir "C:\unshackle\Temp"
[/code]
4. Check for Windows Defender / antivirus interference
Windows Defender or another antivirus may briefly lock newly created media files or block the Packager executable.
Test by adding exclusions for:
Or test from a simpler folder such as:Code:C:\unshackle C:\unshackle\Temp C:\unshackle\unshackle\binaries\packager-win-x64.exe
5. Check Controlled Folder Access and write permissionsCode:C:\Temp\unshackle
Make sure Shaka can write the output file and use the temp directory:
Also try running from a normal user-writable path, such as:Code:C:\unshackle\Temp
6. Make sure the executable is not blocked by WindowsCode:C:\Users\<username>\Downloads\unshackle-test
Downloaded `.exe` files can be marked as blocked.
PowerShell:
Or right-click the executable:Code:powershell Unblock-File C:\unshackle\unshackle\binaries\packager-win-x64.exe
7. Compare Shaka Packager binary hashesCode:Properties → Unblock
Even if both systems report the same version, compare the actual binary hash:
Compare that with a known working system.Code:powershell Get-FileHash C:\unshackle\unshackle\binaries\packager-win-x64.exe -Algorithm SHA256
8. Check that the downloaded input file is valid MP4
Before Shaka sees it, run:
If `ffprobe` reports a corrupt, incomplete, or invalid file, the problem is probably upstream of Shaka Packager.Code:powershell ffprobe C:\unshackle\Temp\Audio_xxxxxxxx.mp4
Likely causes to investigate first:
The most useful next piece of evidence is the real Shaka stderr output. Without that, `exit status 2` is too broad to diagnose accurately.Code:1. Shaka stderr is currently being hidden by the Python exception handling. 2. The input file is missing, incomplete, corrupt, or locked when Shaka runs. 3. Windows Defender / antivirus / Controlled Folder Access is interfering. 4. The all-zero KID fallback may be causing trouble in this specific case. 5. The Packager binary may be blocked, different, or unable to write to the temp/output directory.
Last edited by A_n_g_e_l_a; 25th Jun 2026 at 05:13.
Noob Starter Pack. Just download any Widevine media! Over 27,000 downloads for V6!.
https://files.videohelp.com/u/301890/hellyes6.zip
Similar Threads
-
Devine - Modular Movie, TV, and Music Archival Software
By billybanana in forum Video Streaming DownloadingReplies: 1871Last Post: 26th Jan 2026, 14:12 -
Bitrate confusion: HD vs. DV archival
By taigi in forum Capturing and VCRReplies: 3Last Post: 9th Nov 2024, 03:38 -
How do I completely remove the music and sound effects from a movie?
By cns00 in forum EditingReplies: 1Last Post: 15th Jan 2024, 12:11 -
Which software can remove music from show but keep character dialogue?
By Mohamed61020 in forum AudioReplies: 6Last Post: 2nd Jul 2023, 21:32 -
Software for simple music videos?
By dewiclements in forum Software PlayingReplies: 3Last Post: 26th Jul 2022, 01:21


Quote
