VideoHelp Forum




+ Reply to Thread
Page 36 of 39
FirstFirst ... 26 34 35 36 37 38 ... LastLast
Results 1,051 to 1,080 of 1161
  1. 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.
    Quote Quote  
  2. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by stabbedbybrick View Post
    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.
    Thanks for all the fish!
    Noob Starter Pack. Just download any Widevine media! Over 27,000 downloads for V6!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  3. Originally Posted by stabbedbybrick View Post
    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.
    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.
    Quote Quote  
  4. 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.
    Quote Quote  
  5. Member
    Join Date
    Aug 2005
    Location
    England
    Search Comp PM
    Originally Posted by Tom Saurus View Post
    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.
    Nothing stopping you running an old version if that works better for you. I build my own docker container so can use whatever version I want by pointing to a version tag of the GitHub repo.
    Quote Quote  
  6. Yes I think I will give that a try.
    Quote Quote  
  7. Member
    Join Date
    Oct 2023
    Location
    Afghanistan
    Search PM
    Originally Posted by stabbedbybrick View Post
    I still like creating things and might do something else in the future
    Totally understandable stabby. Thanks again for your contributions - without them Devine/Unshackle would be dead in the water for most people. Look forward to seeing what else you get up to in future.
    Quote Quote  
  8. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by Tom Saurus View Post
    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.
    Envied is working fine with ALL4 for me. Give me a title you are having problems with.
    Noob Starter Pack. Just download any Widevine media! Over 27,000 downloads for V6!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  9. 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>
    Quote Quote  
  10. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by Tom Saurus View Post
    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:
    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.


    Image
    [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
    Quote Quote  
  11. I have replaced shaka with the file you pointed to but it looks like I am getting the same error as before:

    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>
    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.

    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.
    Quote Quote  
  12. Member
    Join Date
    Dec 2021
    Location
    england
    Search Comp PM
    work fine with unshackle
    Image
    [Attachment 92802 - Click to enlarge]


    I wonder why is you have 2nd keys for.
    Code:
    key_id=00000000000000000000000000000000:key=bb759b6e95a699b3d6bd3eb7407f455e
    Quote Quote  
  13. Originally Posted by iamghost View Post
    work fine with unshackle
    Image
    [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:

    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>
    I am happy about this as I have quite a lot of affection for Walter Presents World Drama and other Mystery shows.
    Last edited by Tom Saurus; 23rd Jun 2026 at 12:46. Reason: Updating with more information
    Quote Quote  
  14. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by iamghost View Post

    I wonder why is you have 2nd keys for.
    Code:
    key_id=00000000000000000000000000000000:key=bb759b6e95a699b3d6bd3eb7407f455e
    Same key for audio stream and video stream. Each stream has a different id. This is common.
    Noob Starter Pack. Just download any Widevine media! Over 27,000 downloads for V6!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  15. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by Tom Saurus View Post
    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.

    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.
    I would imagine your VPN or proxy service is to blame then. You might ask a Chat AI to go through the possible causes and suggest ways forward.
    Noob Starter Pack. Just download any Widevine media! Over 27,000 downloads for V6!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  16. Originally Posted by stabbedbybrick View Post
    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.
    Claude you French Dude wherever you are take a break; driving terrific people like stabbedbybrick to distraction is not cool. Give up coding and get into body building then go surfing and hang ten.
    Quote Quote  
  17. 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:

    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!
    So for the newest Twinvine and Unshackle there must be something in the code of my .yaml that is wrong.
    Quote Quote  
  18. Member
    Join Date
    Dec 2021
    Location
    england
    Search Comp PM
    DRM lab have change secret/password
    If you want it remove, all you do is remove from vault in yaml
    Https or httpapi
    Quote Quote  
  19. Hi there guys, What is the git clone command to download an older version of unshackle?

    Thanks.
    Quote Quote  
  20. Member
    Join Date
    Dec 2021
    Location
    england
    Search Comp PM
    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
    Quote Quote  
  21. Member
    Join Date
    Aug 2005
    Location
    England
    Search Comp PM
    Originally Posted by kev043 View Post
    Hi there guys, What is the git clone command to download an older version of unshackle?

    Thanks.
    git clone --branch 4.0.0 https://github.com/unshackle-dl/unshackle.git
    Quote Quote  
  22. 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.
    Quote Quote  
  23. 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.
    Quote Quote  
  24. Originally Posted by Tom Saurus View Post
    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.

    Image
    [Attachment 92811 - Click to enlarge]

    Image
    [Attachment 92812 - Click to enlarge]
    Last edited by YmFzZTY0; 24th Jun 2026 at 09:45.
    Quote Quote  
  25. 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:

    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>
    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.
    Quote Quote  
  26. Member
    Join Date
    Dec 2021
    Location
    england
    Search Comp PM
    unshackle v 4 work fine..
    Image
    [Attachment 92813 - Click to enlarge]


    it look like your vpn
    Quote Quote  
  27. 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>
    Quote Quote  
  28. 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
    Quote Quote  
  29. Well it was good while it lasted but one should focus on what is working and be happy with that:

    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>
    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.
    Quote Quote  
  30. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    @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.

    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 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.

    The relevant Unshackle files appear to be:

    Code:
    unshackle/core/drm/widevine.py
    and, for PlayReady services:

    Code:
    unshackle/core/drm/playready.py
    The relevant function is likely:

    Code:
    python
    _decrypt_with_shaka_packager()
    The Shaka call already uses:

    Code:
    python
    p = subprocess.Popen(
        [binaries.ShakaPackager, *arguments],
        stdout=subprocess.DEVNULL,
        stderr=subprocess.PIPE,
        universal_newlines=True,
    )
    So that part does not need replacing.

    The issue is that Shaka’s 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:

    Code:
    python
    p.wait()
    and replace the failure block with something like:

    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>",
        )
    A smaller patch would be:

    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>",
        )
    The main aim is to expose the real Shaka Packager stderr output. Exit code 2 is too generic on its own.

    Code to edit:-
    Image
    [Attachment 92815 - Click to enlarge]


    Other things to try:

    1. Confirm the input file exists at the exact moment Shaka runs

    For example:

    Code:
    powershell
    dir C:\unshackle\Temp\Audio_xxxxxxxx.mp4
    There may be a race condition, failed prior download, cleanup issue, or antivirus file lock.

    2. Run the exact Shaka command manually in PowerShell

    This removes Python, workers, and wrapper logic from the test.

    Example form:

    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"
    If this gives a fuller error, that is the useful diagnostic message.

    3. Try without the all-zero KID entry

    The command includes a second key entry like:

    Code:
    label=1:key_id=00000000000000000000000000000000:key=...
    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]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:

    Code:
    C:\unshackle
    C:\unshackle\Temp
    C:\unshackle\unshackle\binaries\packager-win-x64.exe
    Or test from a simpler folder such as:

    Code:
    C:\Temp\unshackle
    5. Check Controlled Folder Access and write permissions

    Make sure Shaka can write the output file and use the temp directory:

    Code:
    C:\unshackle\Temp
    Also try running from a normal user-writable path, such as:

    Code:
    C:\Users\<username>\Downloads\unshackle-test
    6. Make sure the executable is not blocked by Windows

    Downloaded `.exe` files can be marked as blocked.

    PowerShell:

    Code:
    powershell
    Unblock-File C:\unshackle\unshackle\binaries\packager-win-x64.exe
    Or right-click the executable:

    Code:
    Properties → Unblock
    7. Compare Shaka Packager binary hashes

    Even if both systems report the same version, compare the actual binary hash:

    Code:
    powershell
    Get-FileHash C:\unshackle\unshackle\binaries\packager-win-x64.exe -Algorithm SHA256
    Compare that with a known working system.

    8. Check that the downloaded input file is valid MP4

    Before Shaka sees it, run:

    Code:
    powershell
    ffprobe C:\unshackle\Temp\Audio_xxxxxxxx.mp4
    If `ffprobe` reports a corrupt, incomplete, or invalid file, the problem is probably upstream of Shaka Packager.

    Likely causes to investigate first:

    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.
    The most useful next piece of evidence is the real Shaka stderr output. Without that, `exit status 2` is too broad to diagnose accurately.
    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
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!