Best way to test isI've had a thought. You've been concentrating on getting unshackle installed but where are your environment dependencies? I have all mine in a special folder which I have referenced as PATHs within my Windows Environment Variables. Another option would be to have them within your unshackle folder. I am talking about the likes of ffmpeg, ffprobe, MKVToolNix (mkvmerge, mkvpropedit), aria2c, N_m3u8DL-RE, shaka-packager (renamed to packager-win-x64), ccextractor.
Try runningto see what it recognises.Code:uv run unshackle env check
Environment Dependencies
┏━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━ ━━┳━━━━━━━━━━━━━━━━━━━━━━┓
┃ Category ┃ Tool ┃ Status ┃ Req ┃ Purpose ┃
┡━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━ ━━╇━━━━━━━━━━━━━━━━━━━━━━┩
│ Core │ FFmpeg │ ✓ │ Y │ Media processing │
│ │ FFprobe │ ✓ │ Y │ Media analysis │
│ │ MKVToolNix │ ✓ │ Y │ MKV muxing │
│ │ mkvpropedit │ ✓ │ Y │ MKV metadata │
│ DRM │ shaka-packager │ ✓ │ Y │ DRM decryption │
│ │ mp4decrypt │ ✓ │ - │ DRM decryption │
│ HDR │ dovi_tool │ ✗ │ - │ Dolby Vision │
│ │ HDR10Plus_tool │ ✗ │ - │ HDR10+ metadata │
│ Download │ aria2c │ ✓ │ - │ Multi-thread DL │
│ │ N_m3u8DL-RE │ ✓ │ - │ HLS/DASH/ISM │
│ Subtitle │ SubtitleEdit │ ✗ │ - │ Sub conversion │
│ │ CCExtractor │ ✓ │ - │ CC extraction │
│ Player │ FFplay │ ✓ │ - │ Simple player │
│ │ MPV │ ✗ │ - │ Advanced player │
│ Network │ HolaProxy │ ✗ │ - │ Proxy service │
│ │ Caddy │ ✗ │ - │ Web server │
└────────────┴──────────────────┴────────────┴──── ──┴──────────────────────┘
Total: 10/16 All required tools installed ✓it will show you all the paths including the path of the unshackle.yaml where its loading from. If it doesn't find any files it will show you 3 locations it tries to load from.Code:uv run unshackle env info
+ Reply to Thread
Results 121 to 150 of 221
-
-
As for the file naming I personally like the way it is in the "scene" format, filebot was always a good option to batch rename stuff.
-
I am finding with Rename My TV Series on my new Mini PC that when it comes to episodes with special symbols not allowed when naming files in Windows that I am ending up with corrupted videos files that can't be fixed. I am referring to episodes where over at the TVDB where someone has included a question mark or a slash. It happened today and I had download an episode again as the other one registered as 0 bytes and size on the disc 544 mb or whatever it was. I don't know why when people are contributing episode lists and they are including symbols and such that Windows doesn't like.
-
Make a request for non scene naming to not have special characters, or replace them with either a blank, a . or a _. (This unfortunately is a windows FS issue, other OSes don't have such an issue.)
But, the issue you are describing is with your set-up, and not a fault of unshackle. -
I didn't intend on indicating this was the fault of Unshackle which I am going to be installing and giving a try sometime soon. But for whatever reason on my new Mini PC; ReName My TV Series is corrupting my files during renaming. I just downloaded a season of a show with Devine and dropped the files in for the Rename My Series to give it the rename and there wasn't even any special characters this time and it screwed them all up. I had to delete them and if I continue to use this rename program I will make a back up copy of the files to be renamed just in case as I just don't trust it anymore. But maybe I will stop renaming files anyway and with this Unshackle and these new naming options it gives me insentive to give Unshackle a try as well. I did get Ozivine and that BBC Downloader working with some help.
-
I think I figured out what I did wrong with ReName My TV Series and I am having better results now but I am making copies and working with those as a safe guard just in case.
-
Are the Services currently stored in a repo? So far I read, the one for devine (cdm-project) is down, right?
-
There is currently no official or even unofficial services repo. Here is my current folder. Not all have been checked working.
https://files.videohelp.com/u/312095/unshackle-services.zip -
I am studying how to set up Unshackle. I just downloaded and unzipped what iamghost posted. I am going to set up pipx and then pip uv.
But as to the proxy nonsense I am quite interested. I won't dabble with hola again but Nord VPN I did have that before I got Windscribe which is included in my ESET Anti-Virus. Now this proxy of Nord VPN is it free? Windscribe works on quite a bit of the services but some like iPlayer and Ten Plus Australia it isn't up to snuff. I remember that when I had NordVPN it wouldn't work on iPlayer or ROKU. So I have interest in proxy if they help and I would like to understand it better.
Thank you in advance. I put the Unshackle unzipped folder on my C: Drive. So I am assuming I launch a cmd window and install pip x and pip uv. -
-
Should this be like this:
C:\unshackle>uv run unshackle env check
▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ .
█▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀·
█▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄
▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌
▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀
v 3.3.3 Copyright © 2019-2025 rlaphoenix
v 1.0.1 - unshackle
Dependencies
┏━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━┓
┃ Name ┃ Installed ┃ Path ┃
┡━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━┩
│ CCExtractor │ ✔ │ c:\windows\system32\ccextractor.exe │
│ FFMpeg │ ✔ │ c:\devine-bin\ffmpeg.exe │
│ MKVToolNix │ ✔ │ c:\devine-bin\mkvmerge.exe │
│ Shaka-Packager │ ✔ │ c:\devine-bin\packager-win-x64.exe │
│ N_m3u8DL-RE │ ✔ │ c:\windows\system32\n_m3u8dl-re.exe │
│ Aria2(c) │ ✔ │ c:\users\tom │
│ │ │ saurus\appdata\local\microsoft\winget │
│ │ │ \links\aria2c.exe │
└────────────────┴───────────┴──────────────────── ───────────────────┘
Also should this be like this:
C:\unshackle>uv run unshackle env info
▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ .
█▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀·
█▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄
▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌
▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀
v 3.3.3 Copyright © 2019-2025 rlaphoenix
v 1.0.1 - unshackle
Config loaded from C:\unshackle\unshackle\unshackle.yaml
Directories
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━┓
┃ Name ┃ Path ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━┩
│ Cache │ C:\unshackle\Cache │
│ Commands │ C:\unshackle\unshackle\commands │
│ Cookies │ C:\unshackle\Cookies │
│ Core_Dir │ C:\unshackle\unshackle\core │
│ Data │ C:\unshackle\unshackle │
│ Dcsl │ C:\unshackle\DCSL │
│ Downloads │ C:\unshackle\Downloads │
│ Fonts │ C:\unshackle\unshackle\fonts │
│ Logs │ C:\unshackle\Logs │
│ Namespace_Dir │ C:\unshackle\unshackle │
│ Prds │ C:\unshackle\PRDs - \path\to\services - │
│ │ \other\path\to\services │
│ Services │ C:\unshackle\services │
│ Temp │ C:\unshackle\Temp │
│ User_Configs │ C:\unshackle\unshackle │
│ Vaults │ C:\unshackle\unshackle\vaults │
│ Wvds │ C:\unshackle\WVDs │
└───────────────┴───────────────────────────────── ───────────────────┘
C:\unshackle>
I think there might be conflicts between Devine and Unshackle as Devine is not working for me as well as it used to. ITV is failing at the mux stage and says it is a problem with one of its workers. Also my download speed is down.
unshackle does work to a certain extent but TVNZ fails with the download worker aspect if I recall correctly. On my first download though I had success with that 1080p ITV Karen Pirie file. I also was able to download a movie from TUBI. -
I got my speed back by turning my modem off and then turning it back on. It had dropped by half.
-
I have done some additional stuff with Unshackle. I copied the tools into the Unshackle folder. I moved my .yaml temporarily and updated to the newest version. I tested it out with ITV and had an error: 'str' object has no attribute 'open' with a connection to the subtitle file. The video, audio and subtitle were in the temp folder fully downloaded to I used Clever FFMPEG GUI to mux them together and the file is fine. I just tested on Tubi and didn't get the subtitle error and everything muxed together fine but the new naming did not come into effect but I renamed it myself.
Unshackle hasn't be that hard to set up but I am sure I probably don't have it 100% correct but it is functioning. Perhaps I should not have put subtitle edit into the folder. -
I'm new to all this but does this looks correct?
Code:▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ . █▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀· █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄ ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌ ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀ v 3.3.3 Copyright © 2019-2025 rlaphoenix v 1.4.1 - unshackle Environment Dependencies ┏━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Category ┃ Tool ┃ Status ┃ Req ┃ Purpose ┃ ┡━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━┩ │ Core │ FFmpeg │ ✓ │ Y │ Media processing │ │ │ FFprobe │ ✓ │ Y │ Media analysis │ │ │ MKVToolNix │ ✓ │ Y │ MKV muxing │ │ │ mkvpropedit │ ✓ │ Y │ MKV metadata │ │ DRM │ shaka-packager │ ✓ │ Y │ DRM decryption │ │ │ mp4decrypt │ ✓ │ - │ DRM decryption │ │ HDR │ dovi_tool │ ✓ │ - │ Dolby Vision │ │ │ HDR10Plus_tool │ ✓ │ - │ HDR10+ metadata │ │ Download │ aria2c │ ✓ │ - │ Multi-thread DL │ │ │ N_m3u8DL-RE │ ✓ │ - │ HLS/DASH/ISM │ │ Subtitle │ SubtitleEdit │ ✓ │ - │ Sub conversion │ │ │ CCExtractor │ ✓ │ - │ CC extraction │ │ Player │ FFplay │ ✓ │ - │ Simple player │ │ │ MPV │ ✗ │ - │ Advanced player │ │ Network │ HolaProxy │ ✗ │ - │ Proxy service │ │ │ Caddy │ ✗ │ - │ Web server │ └────────────┴──────────────────┴────────────┴──────┴──────────────────────┘
Code:Config loaded from D:\unshackle\unshackle\unshackle.yaml Directories ┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Name ┃ Path ┃ ┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ Cache │ D:\unshackle\unshackle\cache │ │ Commands │ D:\unshackle\unshackle\commands │ │ Cookies │ D:\unshackle\unshackle\Cookies │ │ Core_Dir │ D:\unshackle\unshackle\core │ │ Data │ D:\unshackle\unshackle │ │ Dcsl │ D:\unshackle\unshackle\DCSL │ │ Downloads │ D:\unshackle\unshackle\Downloads │ │ Fonts │ D:\unshackle\unshackle\fonts │ │ Logs │ D:\unshackle\unshackle\logs │ │ Namespace_Dir │ D:\unshackle\unshackle │ │ Prds │ D:\unshackle\unshackle\PRDs │ │ Services │ D:\unshackle\unshackle\services │ │ │ D:\unshackle\unshackle\services │ │ Temp │ D:\unshackle\unshackle\Temp │ │ User_Configs │ D:\unshackle\unshackle │ │ Vaults │ D:\unshackle\unshackle\vaults │ │ Wvds │ D:\unshackle\unshackle\WVDs │ └─────────────────────┴──────────────────────────────────────────────┘
Code:directories: cache: ./Cache cookies: ./Cookies dcsl: ./DCSL # Device Certificate Status List downloads: ./Downloads logs: ./Logs temp: ./Temp wvds: ./WVDs prds: ./PRDs # Additional directories that can be configured: # commands: Commands services: - ./services - ./services # vaults: Vaults # fonts: Fonts
Code:Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "D:\unshackle\.venv\Scripts\unshackle.exe\__main__.py", line 4, in <module> main() ^^^^^^^^^^^ File "D:\unshackle\unshackle\core\__main__.py", line 14, in <module> from unshackle.core.commands import Commands File "D:\unshackle\unshackle\core\commands.py", line 12, in <module> _MODULES = {path.stem: getattr(import_module_by_path(path), path.stem) for path in _COMMANDS} ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\unshackle\unshackle\core\utilities.py", line 82, in import_module_by_path spec.loader.exec_module(module) File "D:\unshackle\unshackle\commands\dl.py", line 53, in <module> from unshackle.core.services import Services File "D:\unshackle\unshackle\core\services.py", line 18, in <module> _MODULES = {path.parent.stem: getattr(import_module_by_path(path), path.parent.stem) for path in _SERVICES} ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\unshackle\unshackle\core\utilities.py", line 82, in import_module_by_path spec.loader.exec_module(module) File "D:\unshackle\unshackle\services\ARD\__init__.py", line 11, in <module> import webvtt ModuleNotFoundError: No module named 'webvtt'
Last edited by Roddan; 8th Aug 2025 at 10:52.
-
Could try with the 'auto' conversion as is defined in the unshackle-example.yaml
Code:# conversion_method: # - auto (default): Smart routing - subby for WebVTT/SAMI, standard for others # - subby: Always use subby with advanced processing # - pycaption: Use only pycaption library (no SubtitleEdit, no subby) # - subtitleedit: Prefer SubtitleEdit when available, fall back to pycaption subtitle: conversion_method: auto sdh_method: auto
-
it seems the script is calling for the python module webvtt, try this
https://pypi.org/project/webvtt-py/
Code:pip install webvtt-py
Code:uv tool install webvtt
Code:uv tool install webvtt-py
-
I got it working now, tried AI to make my own service but I'm stuck at this.
uv run unshackle dl SVTPLAY "https://www.svtplay.se/video/123"
Code:▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ . █▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀· █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄ ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌ ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀ v 3.3.3 Copyright © 2019-2025 rlaphoenix v 1.4.1 - unshackle Service Config loaded Failed to load CDM, WVD_1 does not exist or is not a file
Config: https://pastebin.com/mRYxqQZH -
Do I copy this and put this in my .yaml.
Update I moved the required programs to the binaries folder that is the Unshackle Unshackle folder. I tested with TVNZ again and it got three versions of the audio file with different quality levels and it got the video and subtitle file but failed because of a subtitle muxing problem. The new naming function is it in the .yaml file that is downloaded in the update? I was able to find the downloaded files in the temp folder and use Clever FFMPEG GUI to mux them together.
Thanks for your advice and any other advice I get. -
-
I did another test and since all the parts should be in the temp folder I should be able to mux it together with another program.
Code:C:\unshackle>uv run unshackle dl -q 480 PLUTO https://pluto.tv/us/on-demand/movies/5bd3337f67f34cef7af448a0 ▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ . █▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀· █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄ ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌ ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀ v 3.3.3 Copyright © 2019-2025 rlaphoenix v 1.4.1 - unshackle Service Config loaded Loaded Widevine CDM: 8158 (L3) Loaded 1/1 Vaults ────────────────────────────── Service: PLUTO ────────────────────────────── Service has no Geofence ────────────────────── Movies: She's Out of My League ────────────────────── 1 Movie ────────────────────────── She's Out of My League ────────────────────────── Cached 2 Keys to 1/1 Vaults 1 Video └── [H.264, SDR] | en | 854x480 @ 1864 kb/s, 30.000 FPS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 22:08 Downloaded 1 Audio └── [AAC] | en | 2.0 | 103 kb/s ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 03:31 Downloaded 1 Subtitle └── [WVTT] | en ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 01:10 Downloaded Widevine(AAAASnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACoSEAAAAABjm5pI7d4se dGj03gSEAAAAABjm5pI7d4sedGj03lI49yVmwY=) ├── 00000000639b9a48edde2c79d1a3d378:ae992066136bda6a0da402c124a104e9 └── 00000000639b9a48edde2c79d1a3d379:19756eb8b24d44c45520e100862214ac Track downloads finished in 22m8s ╭───────────────────── Traceback (most recent call last) ──────────────────────╮ │ C:\unshackle\unshackle\core\tracks\subtitle.py:339 in convert_with_subby │ │ │ │ 336 │ │ │ │ │ 337 │ │ │ if self.codec == Subtitle.Codec.WebVTT: │ │ 338 │ │ │ │ converter = WebVTTConverter() │ │ ❱ 339 │ │ │ │ srt_subtitles = converter.from_file(str(self.path)) │ │ 340 │ │ │ elif self.codec == Subtitle.Codec.SAMI: │ │ 341 │ │ │ │ converter = SAMIConverter() │ │ 342 │ │ │ │ srt_subtitles = converter.from_file(str(self.path)) │ │ │ │ C:\unshackle\.venv\lib\site-packages\subby\converters\base.py:14 in │ │ from_file │ │ │ │ 11 │ │ │ 12 │ def from_file(self, file: Path) -> SubRipFile: │ │ 13 │ │ """Reads a given file and converts it to srt""" │ │ ❱ 14 │ │ with file.open(mode='rb') as stream: │ │ 15 │ │ │ return self.parse(stream) │ │ 16 │ │ │ 17 │ def from_string(self, data: str) -> SubRipFile: │ ╰──────────────────────────────────────────────────────────────────────────────╯ AttributeError: 'str' object has no attribute 'open' During handling of the above exception, another exception occurred: ╭───────────────────── Traceback (most recent call last) ──────────────────────╮ │ C:\Users\Tom Saurus\AppData\Local\Programs\Python\Python310\lib\runpy.py:196 │ │ in _run_module_as_main │ │ │ │ 193 │ main_globals = sys.modules["__main__"].__dict__ │ │ 194 │ if alter_argv: │ │ 195 │ │ sys.argv[0] = mod_spec.origin │ │ ❱ 196 │ return _run_code(code, main_globals, None, │ │ 197 │ │ │ │ │ "__main__", mod_spec) │ │ 198 │ │ 199 def run_module(mod_name, init_globals=None, │ │ │ │ C:\Users\Tom Saurus\AppData\Local\Programs\Python\Python310\lib\runpy.py:86 │ │ in _run_code │ │ │ │ 83 │ │ │ │ │ __loader__ = loader, │ │ 84 │ │ │ │ │ __package__ = pkg_name, │ │ 85 │ │ │ │ │ __spec__ = mod_spec) │ │ ❱ 86 │ exec(code, run_globals) │ │ 87 │ return run_globals │ │ 88 │ │ 89 def _run_module_code(code, init_globals=None, │ │ │ │ in <module>:10 │ │ │ │ C:\unshackle\.venv\lib\site-packages\click\core.py:1442 in __call__ │ │ │ │ C:\unshackle\.venv\lib\site-packages\click\core.py:1363 in main │ │ │ │ C:\unshackle\.venv\lib\site-packages\click\core.py:1830 in invoke │ │ │ │ C:\unshackle\.venv\lib\site-packages\click\core.py:1830 in invoke │ │ │ │ C:\unshackle\.venv\lib\site-packages\click\core.py:1799 in _process_result │ │ │ │ C:\unshackle\.venv\lib\site-packages\click\core.py:794 in invoke │ │ │ │ C:\unshackle\unshackle\commands\dl.py:958 in result │ │ │ │ 955 │ │ │ │ │ for subtitle in title.tracks.subtitles: │ │ 956 │ │ │ │ │ │ if sub_format: │ │ 957 │ │ │ │ │ │ │ if subtitle.codec != sub_format: │ │ ❱ 958 │ │ │ │ │ │ │ │ subtitle.convert(sub_format) │ │ 959 │ │ │ │ │ │ elif subtitle.codec == Subtitle.Codec.TimedTe │ │ 960 │ │ │ │ │ │ │ # MKV does not support TTML, VTT is the n │ │ 961 │ │ │ │ │ │ │ subtitle.convert(Subtitle.Codec.WebVTT) │ │ │ │ C:\unshackle\unshackle\core\tracks\subtitle.py:416 in convert │ │ │ │ 413 │ │ elif conversion_method == "auto": │ │ 414 │ │ │ # Use subby for formats it handles better │ │ 415 │ │ │ if self.codec in (Subtitle.Codec.WebVTT, Subtitle.Codec.SA │ │ ❱ 416 │ │ │ │ return self.convert_with_subby(codec) │ │ 417 │ │ │ else: │ │ 418 │ │ │ │ return self._convert_standard(codec) │ │ 419 │ │ else: │ │ │ │ C:\unshackle\unshackle\core\tracks\subtitle.py:392 in convert_with_subby │ │ │ │ 389 │ │ │ │ 390 │ │ except Exception: │ │ 391 │ │ │ # Fall back to existing conversion method on any error │ │ ❱ 392 │ │ │ return self._convert_standard(codec) │ │ 393 │ │ │ 394 │ def convert(self, codec: Subtitle.Codec) -> Path: │ │ 395 │ │ """ │ │ │ │ C:\unshackle\unshackle\core\tracks\subtitle.py:514 in _convert_standard │ │ │ │ 511 │ │ │ ] │ │ 512 │ │ │ if codec == Subtitle.Codec.SubRip: │ │ 513 │ │ │ │ sub_edit_args.append("/ConvertColorsToDialog") │ │ ❱ 514 │ │ │ subprocess.run(sub_edit_args, check=True, stdout=subproces │ │ 515 │ │ else: │ │ 516 │ │ │ writer = { │ │ 517 │ │ │ │ # pycaption generally only supports these subtitle for │ │ │ │ C:\Users\Tom │ │ Saurus\AppData\Local\Programs\Python\Python310\lib\subprocess.py:526 in run │ │ │ │ 523 │ │ │ raise │ │ 524 │ │ retcode = process.poll() │ │ 525 │ │ if check and retcode: │ │ ❱ 526 │ │ │ raise CalledProcessError(retcode, process.args, │ │ 527 │ │ │ │ │ │ │ │ │ output=stdout, stderr=stderr) │ │ 528 │ return CompletedProcess(process.args, retcode, stdout, stderr) │ │ 529 │ ╰──────────────────────────────────────────────────────────────────────────────╯ CalledProcessError: Command '[WindowsPath('C:/unshackle/unshackle/binaries/SubtitleEdit.exe'), '/Convert', WindowsPath('C:/unshackle/Temp/Subtitle_c5f33148.vtt'), 'SubRip', '/outputfilename:Subtitle_c5f33148.srt', '/encoding:utf8', '/ConvertColorsToDialog']' returned non-zero exit status 3762504530.
-
My unshackle .yaml with the login and passwords edited out as those should not be on display:
[CODE]# Group or Username to postfix to the end of all download filenames following a dash
tag: user_tag
# Set terminal background color (custom option not in CONFIG.md)
set_terminal_bg: false
# Muxing configuration
muxing:
set_title: false
# Login credentials for each Service
credentials:
EXAMPLE: email@example.comassword
EXAMPLE2: usernameassword
# Override default directories used across unshackle
directories:
services: C:\unshackle\services
cache: C:\unshackle\Cache
cookies: C:\unshackle\Cookies
dcsl: DCSL # Device Certificate Status List
downloads: C:\unshackle\Downloads
logs: C:\unshackle\Logs
temp: C:\unshackle\Temp
wvds: C:\unshackle\WVDs
prds: ./PRDs
- /path/to/services
- /other/path/to/services
# vaults: Vaults
# fonts: Fonts
# Pre-define which Widevine or PlayReady device to use for each Service
cdm:
default: xiaomi_m2006c3lg_l3
EXAMPLE: mtc_mtc_atv_atv_sl3000_6f0ab22b
# Use pywidevine Serve-compliant Remote CDMs
remote_cdm:
- name: "chrome"
device_name: chrome
device_type: CHROME
system_id: 27175
security_level: 3
host: https://domain.com/api
secret: secret_key
- name: "chrome-2"
device_name: chrome
device_type: CHROME
system_id: 26830
security_level: 3
host: https://domain-2.com/api
secret: secret_key
# Key Vaults store your obtained Content Encryption Keys (CEKs)
key_vaults:
- type: SQLite
name: Local
path: key_store.db
# Additional vault types:
# - type: API
# name: "Remote Vault"
# uri: "https://key-vault.example.com"
# token: "secret_token"
# - type: MySQL
# name: "MySQL Vault"
# host: "127.0.0.1"
# port: 3306
# database: vault
# username: user
# password: pass
# Choose what software to use to download data
downloader: aria2c
# Options: requests | aria2c | curl_impersonate | n_m3u8dl_re
# Can also be a mapping:
# downloader:
# TUBI: n_m3u8dl_re
# NF: requests
# AMZN: n_m3u8dl_re
# DSNP: n_m3u8dl_re
# TVNZ: n_m3u8dl_re
# default: aria2c
# aria2c downloader configuration
aria2c:
max_concurrent_downloads: 4
max_connection_per_server: 3
split: 5
file_allocation: falloc # none | prealloc | falloc | trunc
# N_m3u8DL-RE downloader configuration
n_m3u8dl_re:
thread_count: 16
ad_keyword: "advertisement"
use_proxy: true
# curl_impersonate downloader configuration
curl_impersonate:
browser: chrome120
# Pre-define default options and switches of the dl command
dl:
best: true
sub_format: srt
downloads: 4
workers: 16
lang:
- en
- fr
EXAMPLE:
bitrate: CBR
# Chapter Name to use when exporting a Chapter without a Name
chapter_fallback_name: "Chapter {j:02}"
# Case-Insensitive dictionary of headers for all Services
headers:
Accept-Language: "en-US,en;q=0.8"
User-Agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36"
# Override default filenames used across unshackle
filenames:
log: "unshackle_{name}_{time}.log"
config: "config.yaml"
root_config: "unshackle.yaml"
chapters: "Chapters_{title}_{random}.txt"
subtitle: "Subtitle_{id}_{language}.srt"
# API key for The Movie Database (TMDB)
tmdb_api_key: ""
# Configuration for pywidevine's serve functionality
serve:
users:
secret_key_for_user:
devices:
- generic_nexus_4464_l3
username: user
# devices:
# - '/path/to/device.wvd'
# Configuration data for each Service
services:
iP:
cert: .\certs\bbciplayer.pem
# Service-specific configuration goes here
# EXAMPLE:
# api_key: "service_specific_key"
# conversion_method:
# - auto (default): Smart routing - subby for WebVTT/SAMI, standard for others
# - subby: Always use subby with advanced processing
# - pycaption: Use only pycaption library (no SubtitleEdit, no subby)
# - subtitleedit: Prefer SubtitleEdit when available, fall back to pycaption
subtitle:
conversion_method: auto
sdh_method: auto/[CODE]
Code:C:\unshackle>uv run unshackle env check ▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ . █▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀· █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄ ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌ ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀ v 3.3.3 Copyright © 2019-2025 rlaphoenix v 1.4.1 - unshackle Environment Dependencies ┏━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Category ┃ Tool ┃ Status ┃ Req ┃ Purpose ┃ ┡━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━┩ │ Core │ FFmpeg │ ✓ │ Y │ Media processing │ │ │ FFprobe │ ✓ │ Y │ Media analysis │ │ │ MKVToolNix │ ✓ │ Y │ MKV muxing │ │ │ mkvpropedit │ ✓ │ Y │ MKV metadata │ │ DRM │ shaka-packager │ ✓ │ Y │ DRM decryption │ │ │ mp4decrypt │ ✓ │ - │ DRM decryption │ │ HDR │ dovi_tool │ ✗ │ - │ Dolby Vision │ │ │ HDR10Plus_tool │ ✗ │ - │ HDR10+ metadata │ │ Download │ aria2c │ ✓ │ - │ Multi-thread DL │ │ │ N_m3u8DL-RE │ ✓ │ - │ HLS/DASH/ISM │ │ Subtitle │ SubtitleEdit │ ✓ │ - │ Sub conversion │ │ │ CCExtractor │ ✓ │ - │ CC extraction │ │ Player │ FFplay │ ✓ │ - │ Simple player │ │ │ MPV │ ✓ │ - │ Advanced player │ │ Network │ HolaProxy │ ✗ │ - │ Proxy service │ │ │ Caddy │ ✗ │ - │ Web server │ └────────────┴──────────────────┴────────────┴──────┴──────────────────────┘
Code:C:\unshackle>uv run unshackle env info ▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ . █▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀· █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄ ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌ ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀ v 3.3.3 Copyright © 2019-2025 rlaphoenix v 1.4.1 - unshackle Config loaded from C:\unshackle\unshackle\unshackle.yaml Directories ┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Name ┃ Path ┃ ┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ Cache │ C:\unshackle\Cache │ │ Commands │ C:\unshackle\unshackle\commands │ │ Cookies │ C:\unshackle\Cookies │ │ Core_Dir │ C:\unshackle\unshackle\core │ │ Data │ C:\unshackle\unshackle │ │ Dcsl │ C:\unshackle\DCSL │ │ Downloads │ C:\unshackle\Downloads │ │ Fonts │ C:\unshackle\unshackle\fonts │ │ Logs │ C:\unshackle\Logs │ │ Namespace_Dir │ C:\unshackle\unshackle │ │ Prds │ C:\unshackle\PRDs - \path\to\services - │ │ │ \other\path\to\services │ │ Services │ C:\unshackle\services │ │ Temp │ C:\unshackle\Temp │ │ User_Configs │ C:\unshackle\unshackle │ │ Vaults │ C:\unshackle\unshackle\vaults │ │ Wvds │ C:\unshackle\WVDs │ └───────────────┴────────────────────────────────────────────────────┘
Last edited by Tom Saurus; 8th Aug 2025 at 13:34.
-
I removed subtitle edit from the binaries folder and I had a successful download and it muxed and was complete. The naming didn't happen but it is progress.
-
Content Decryption Module, what encrypts/decrypts the stream content.
You need a cdm (for svt usually a L3) loaded in your set-up. And with your unshackle.yaml file configuration pointed to it.
While a GPT service may be helpful in creating these scripts for you, you will in doing so never learn what is needed.
A variant of the Homer Simpson gag, <picks up the phone> "Hello operator, what's the number for 911?" -
Using this command
uv run unshackle dl ip https://www.bbc.co.uk/iplayer/episode/b01lwbt0/totp2-summertime-special
I just keep getting this result with anything from the BBC
TOTP2 2012 S01E00 Summertime Special ───────────────────
Video WARN : Response status code does not indicate success: 522
(status
1 Video
└── [H.264, SDR] | en | 1920x1080 @ 12000 kb/s, 50.000 FPS
⠋ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ --:-- FAILED
3 Audio
├── [AAC] | en | 2.0 | 128 kb/s
│ ⠋ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ --:-- Downloaded
├── [AAC] | en | 2.0 | 96 kb/s
│ ⠋ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ --:-- Downloaded
└── [AAC] | en | 2.0 | 48 kb/s
⠋ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ --:-- Downloaded
2 Subtitles
├── [TTML] | en
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 03:42 Downloaded
└── [TTML] | en | SDH
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 03:42 Downloaded
❌ Download Failed...
[N_m3u8DL-RE]: ERROR: Failed
An unexpected error occurred in one of the download workers.
See the error trace above for more information. -
-
Similar Threads
-
Devine - Modular Movie, TV, and Music Archival Software
By billybanana in forum Video Streaming DownloadingReplies: 1817Last Post: 16th Aug 2025, 21:39 -
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