Is there a way to list all commands for unshackle? such as -w, - lang etc.
+ Reply to Thread
Results 181 to 210 of 221
-
-
-
I got rid of that line and that gets rid of user tag on the end. It still remains the conventional way of naming. The second part caused errors so I reverted the .yaml back to where it was before putting that end and Unshackle works again. I will take a break from the naming part for now.
Thank you for your help though. -
Is there a way to use another VPN Provider than NordVPN like just add another sector such as ProtonVPN? I find it really slow.
-
What is the best/easiest way to update unshackle?
Also, I presume i have to copy my current services and yaml into the new version?
Cheers -
-
-
-
-
-
Is there a reason why I can't get higher download speed from ITV?
I'm getting around 1.0-2.0mb/s with NordVPN.
Edit: I removed my VPN Provider and used ProtonVPN from my PC and it works!Last edited by Roddan; 12th Aug 2025 at 12:18.
-
Did anyone else notice a problem after doing "git pull" and "uv sync", there's some kind of weird error? Unshackle still works fine, I'm just wondering what the problem is.
Edit: This is what it saidwarning: The package langcodes==3.5.0 does not have an extra named dataLast edited by luigi700; 15th Aug 2025 at 08:04.
-
-
-
-
With TUBI I run across some series where there are an episode or two that fail to download and I get this error:
ValueError: A Chapter with the Timestamp 00:00:52.000 already exists
Thankfully WidevineProxy2 thus far works to get those episodes. I am curious as to why this happens and how to remedy it. Thanks in advance for any advice I receive. This chapter thing happens in Devine as well.
For example "Rosemary & Thyme" S02E02 failed because of this. -
-
-
I gave it a try and it failed so I will see about getting this episode with WidevineProxy2, I also tried with just asking Unshackle to get the Video, Audio and Subtitles only and that failed then I tried just video and audio and that failed:
[CODEC:\unshackle>uv run unshackle dl -w S02E02-S03E08 --no chapters TUBI https://tubitv.com/series/300016630/rosemary-thyme
▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ .
█▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀·
█▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄
▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌
▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀
v 3.3.3 Copyright © 2019-2025 rlaphoenix
v 1.4.2 - unshackle
Usage: unshackle dl [OPTIONS] COMMAND [ARGS]...
Try 'unshackle dl -?' for help.
Error: No such option: --no (Possible options: --no-subs, --noatmos, --slow)
C:\unshackle>uv run unshackeuv run unshackle dl -w S02E02-S03E08 --no-chapters TUBI https://tubitv.com/series/300016630/rosemary-thyme
error: Failed to spawn: `unshackeuv`
Caused by: program not found
C:\unshackle>uv run unshackle dl -w S02E02-S03E08 --no-chapters TUBI https://tubitv.com/series/300016630/rosemary-thyme
▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ .
█▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀·
█▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄
▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌
▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀
v 3.3.3 Copyright © 2019-2025 rlaphoenix
v 1.4.2 - unshackle
Service Config loaded
Loaded Widevine CDM: 8158 (L3)
Loaded 1/1 Vaults
────────────────────────────── Service: TUBI ───────────────────────────────
Service has no Geofence
Authenticated with Service
───────────────────── Series: Rosemary & Thyme (2007) ──────────────────────
3 seasons, S1(6), S2(9), S3(8)
───────── Rosemary & Thyme 2007 S02E02 The Memory of Water (Pt. 2) ─────────
╭───────────────────── 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:567 in result │
│ │
│ 564 │ │ │ │
│ 565 │ │ │ with console.status("Getting tracks...", spinner="dots"): │
│ 566 │ │ │ │ title.tracks.add(service.get_tracks(title), warn_only │
│ ❱ 567 │ │ │ │ title.tracks.chapters = service.get_chapters(title) │
│ 568 │ │ │ │
│ 569 │ │ │ # strip SDH subs to non-SDH if no equivalent same-lang no │
│ 570 │ │ │ # uses a loose check, e.g, wont strip en-US SDH sub if a │
│ │
│ C:\unshackle\services\TUBI\__init__.py:226 in get_chapters │
│ │
│ 223 │ │ │ if cuepoint > 0: │
│ 224 │ │ │ │ chapters.append(Chapter(timestamp=float(cuepoint), nam │
│ 225 │ │ │
│ ❱ 226 │ │ return Chapters(chapters) │
│ 227 │ │
│ 228 │ def get_widevine_service_certificate(self, **_: Any) -> str: │
│ 229 │ │ return None │
│ │
│ C:\unshackle\unshackle\core\tracks\chapters.py:21 in __init__ │
│ │
│ 18 │ def __init__(self, iterable: Optional[Iterable[Chapter]] = None): │
│ 19 │ │ super().__init__(key=lambda x: x.timestamp or 0) │
│ 20 │ │ for chapter in iterable or []: │
│ ❱ 21 │ │ │ self.add(chapter) │
│ 22 │ │
│ 23 │ def __repr__(self) -> str: │
│ 24 │ │ return "{name}({items})".format( │
│ │
│ C:\unshackle\unshackle\core\tracks\chapters.py:130 in add │
│ │
│ 127 │ │ │ raise TypeError(f"Can only add {Chapter} objects, not {typ │
│ 128 │ │ │
│ 129 │ │ if any(chapter.timestamp == value.timestamp for chapter in sel │
│ ❱ 130 │ │ │ raise ValueError(f"A Chapter with the Timestamp {value.tim │
│ 131 │ │ │
│ 132 │ │ super().add(value) │
│ 133 │
╰───────────────────────────────────────────────── ─────────────────────────────╯
ValueError: A Chapter with the Timestamp 00:00:52.000 already exists
C:\unshackle>uv run unshackle dl -V -A -S -w S02E02 TUBI https://tubitv.com/series/300016630/rosemary-thyme
▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ .
█▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀·
█▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄
▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌
▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀
v 3.3.3 Copyright © 2019-2025 rlaphoenix
v 1.4.2 - unshackle
Service Config loaded
Loaded Widevine CDM: 8158 (L3)
Loaded 1/1 Vaults
────────────────────────────── Service: TUBI ───────────────────────────────
Service has no Geofence
Authenticated with Service
───────────────────── Series: Rosemary & Thyme (2007) ──────────────────────
3 seasons, S1(6), S2(9), S3(8)
───────── Rosemary & Thyme 2007 S02E02 The Memory of Water (Pt. 2) ─────────
╭───────────────────── 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:567 in result │
│ │
│ 564 │ │ │ │
│ 565 │ │ │ with console.status("Getting tracks...", spinner="dots"): │
│ 566 │ │ │ │ title.tracks.add(service.get_tracks(title), warn_only │
│ ❱ 567 │ │ │ │ title.tracks.chapters = service.get_chapters(title) │
│ 568 │ │ │ │
│ 569 │ │ │ # strip SDH subs to non-SDH if no equivalent same-lang no │
│ 570 │ │ │ # uses a loose check, e.g, wont strip en-US SDH sub if a │
│ │
│ C:\unshackle\services\TUBI\__init__.py:226 in get_chapters │
│ │
│ 223 │ │ │ if cuepoint > 0: │
│ 224 │ │ │ │ chapters.append(Chapter(timestamp=float(cuepoint), nam │
│ 225 │ │ │
│ ❱ 226 │ │ return Chapters(chapters) │
│ 227 │ │
│ 228 │ def get_widevine_service_certificate(self, **_: Any) -> str: │
│ 229 │ │ return None │
│ │
│ C:\unshackle\unshackle\core\tracks\chapters.py:21 in __init__ │
│ │
│ 18 │ def __init__(self, iterable: Optional[Iterable[Chapter]] = None): │
│ 19 │ │ super().__init__(key=lambda x: x.timestamp or 0) │
│ 20 │ │ for chapter in iterable or []: │
│ ❱ 21 │ │ │ self.add(chapter) │
│ 22 │ │
│ 23 │ def __repr__(self) -> str: │
│ 24 │ │ return "{name}({items})".format( │
│ │
│ C:\unshackle\unshackle\core\tracks\chapters.py:130 in add │
│ │
│ 127 │ │ │ raise TypeError(f"Can only add {Chapter} objects, not {typ │
│ 128 │ │ │
│ 129 │ │ if any(chapter.timestamp == value.timestamp for chapter in sel │
│ ❱ 130 │ │ │ raise ValueError(f"A Chapter with the Timestamp {value.tim │
│ 131 │ │ │
│ 132 │ │ super().add(value) │
│ 133 │
╰───────────────────────────────────────────────── ─────────────────────────────╯
ValueError: A Chapter with the Timestamp 00:00:52.000 already exists
C:\unshackle>uv run unshackle dl -V -A -w S02E02 TUBI https://tubitv.com/series/300016630/rosemary-thym
▄ ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ ▄ ▄▄▌ ▄▄▄ .
█▪██▌█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██ ▀▄.▀·
█▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄
▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌
▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀
v 3.3.3 Copyright © 2019-2025 rlaphoenix
v 1.4.2 - unshackle
Service Config loaded
Loaded Widevine CDM: 8158 (L3)
Loaded 1/1 Vaults
────────────────────────────── Service: TUBI ───────────────────────────────
Service has no Geofence
Authenticated with Service
───────────────────── Series: Rosemary & Thyme (2007) ──────────────────────
3 seasons, S1(6), S2(9), S3(8)
───────── Rosemary & Thyme 2007 S02E02 The Memory of Water (Pt. 2) ─────────
╭───────────────────── 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:567 in result │
│ │
│ 564 │ │ │ │
│ 565 │ │ │ with console.status("Getting tracks...", spinner="dots"): │
│ 566 │ │ │ │ title.tracks.add(service.get_tracks(title), warn_only │
│ ❱ 567 │ │ │ │ title.tracks.chapters = service.get_chapters(title) │
│ 568 │ │ │ │
│ 569 │ │ │ # strip SDH subs to non-SDH if no equivalent same-lang no │
│ 570 │ │ │ # uses a loose check, e.g, wont strip en-US SDH sub if a │
│ │
│ C:\unshackle\services\TUBI\__init__.py:226 in get_chapters │
│ │
│ 223 │ │ │ if cuepoint > 0: │
│ 224 │ │ │ │ chapters.append(Chapter(timestamp=float(cuepoint), nam │
│ 225 │ │ │
│ ❱ 226 │ │ return Chapters(chapters) │
│ 227 │ │
│ 228 │ def get_widevine_service_certificate(self, **_: Any) -> str: │
│ 229 │ │ return None │
│ │
│ C:\unshackle\unshackle\core\tracks\chapters.py:21 in __init__ │
│ │
│ 18 │ def __init__(self, iterable: Optional[Iterable[Chapter]] = None): │
│ 19 │ │ super().__init__(key=lambda x: x.timestamp or 0) │
│ 20 │ │ for chapter in iterable or []: │
│ ❱ 21 │ │ │ self.add(chapter) │
│ 22 │ │
│ 23 │ def __repr__(self) -> str: │
│ 24 │ │ return "{name}({items})".format( │
│ │
│ C:\unshackle\unshackle\core\tracks\chapters.py:130 in add │
│ │
│ 127 │ │ │ raise TypeError(f"Can only add {Chapter} objects, not {typ │
│ 128 │ │ │
│ 129 │ │ if any(chapter.timestamp == value.timestamp for chapter in sel │
│ ❱ 130 │ │ │ raise ValueError(f"A Chapter with the Timestamp {value.tim │
│ 131 │ │ │
│ 132 │ │ super().add(value) │
│ 133 │
╰───────────────────────────────────────────────── ─────────────────────────────╯
ValueError: A Chapter with the Timestamp 00:00:52.000 already exists][/CODE]
Thank you anyway for the tip anyway. It is a terrific show and I think I might be able to get Unshackle to get me the subtitle file and if WidevineProxy2 gets the audio and video I can mux them together and the chapters don't really matter all that much as they haven't dispersed a many chapters throughout the file to make it jump to where there would be an important scene. -
WidevineProxy2 can't get it because it isn't encrypted. I am trying to get it now with VideoDownload Helper. I tried with Stream Detector but I just don't understand that program.
-
that error is only just S02E02, E03 works fine.
it need to fix.
Vinetrimmer have no error at all.
[Attachment 88307 - Click to enlarge] -
I was able to download the episode with Video Downloadhelper and then I decided if I could get better quality via YT-DLP and it did get me a better quality video.
There were a couple of episodes of "Hunting Hitler" on Tubi that have this problem as well. -
Noob Starter Pack. Just download every Widevine mpd! Not kidding!.
https://files.videohelp.com/u/301890/hellyes6.zip -
-
Yes indeed I did miss a hyphen and I made note of that in my text document of hints for Unshackle.
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