VideoHelp Forum




+ Reply to Thread
Page 5 of 8
FirstFirst ... 3 4 5 6 7 ... LastLast
Results 121 to 150 of 221
  1. Originally Posted by mickmars View Post
    Originally Posted by deccavox View Post
    Originally Posted by mickmars View Post
    Hi
    I'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 running
    Code:
    uv run unshackle env check
    to see what it recognises.


    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 ✓
    Best way to test is
    Code:
    uv run unshackle env info
    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.
    Quote Quote  
  2. 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.
    Quote Quote  
  3. Originally Posted by kev043 View Post
    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.
    Quote Quote  
  4. 2nd Army Bridgeburners. WhiskeyJack's Avatar
    Join Date
    Aug 2024
    Location
    Torshavn
    Search PM
    Originally Posted by Tom Saurus View Post
    Originally Posted by kev043 View Post
    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.
    Quote Quote  
  5. 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.
    Quote Quote  
  6. 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.
    Quote Quote  
  7. Are the Services currently stored in a repo? So far I read, the one for devine (cdm-project) is down, right?
    Quote Quote  
  8. Originally Posted by YoBruce45 View Post
    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
    Quote Quote  
  9. Originally Posted by deccavox View Post
    Originally Posted by F1sav28 View Post
    The default yaml has all the proxy nonsense, which I haven't edited yet which by default forces an error. Bypassing it with --no-proxy for testing did work. Is there a steer on what rows are safe to jettison with all the proxy stuff?
    Everything from '# Legacy NordVPN configuration (use proxy_providers instead)' onwards (including '# External proxy provider services' I deleted. They're of no interest to me. If I want to connect to NZ or Aus I do so through my VPN (SurfShark) and it works OK. I'm just testing out TVNZ now and it's fine.

    What's been nice about this thread is the way everybody has been willing to help one another. Excellent team work folks.
    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.
    Quote Quote  
  10. Originally Posted by deccavox View Post
    This is the advise I got for uv (I've read it or seen it a few times elsewhere in the past).
    If you're aiming for smooth, hassle-free upgrades of `uv`. Here's the rundown on each option:

    ### Using `pipx`
    **Pros:**
    - Installs `uv` in an isolated virtual environment, so it won’t interfere with your system or global Python packages.
    - Upgrading is a breeze with `pipx upgrade uv`.
    - Keeps your Python environment cleaner and avoids version conflicts.
    - Ideal for command-line tools that aren’t meant to be part of a larger Python project.

    **Cons:**
    - You need to have `pipx` installed and properly set up beforehand (though that's usually a one-time thing).

    ### Using `pip`
    **Pros:**
    - Simple and direct if you're comfortable with managing Python packages manually.
    - Easily scriptable if you're installing as part of a larger setup.

    **Cons:**
    - Installing globally can lead to dependency clashes or permission issues.
    - Managing upgrades might require manual steps like `pip install --upgrade uv`, and sometimes dealing with `sudo`.

    ### Verdict
    For your goal—*easy and reliable upgrades*—`pipx` is the way to go. It treats `uv` as a standalone tool and makes updating as simple as typing one command. Think of it as the best of both worlds: flexibility without the fuss.

    In other words. If you use `pip` to initially install 'uv' you are installing it globally (which you want, you want to be able to use uv anywhere on your system). When you update uv, at some time in the future the update could add extra dependencies and those dependencies could be used by other Python packages you have already installed globally some time ago. Then you could end up with 'dependency hell' where different packages rely on different versions of dependencies, you've now got the wrong versions and so you can 'break' your system.

    By installing uv via pipx, it lives in its own mini environment, with its dependencies contained and isolated. That means:

    Upgrading uv only affects uv and its dependencies.
    uv still appears to be being used globally which is good, but it's actually being routed through pipx environment.
    It makes it nice and neat and secure.
    I've been using uv for some time now for all my projects, not just unshackle, so I'm happy with my setup.

    But, it's your choice.
    I installed pipx but it keeps telling me that pipx has a space in the pipx home path. I did the "ensure path" advice to remedy yet it remains that way.

    I went ahead and installed uv anyway. pipx list shows it though I have the warning about the space in the pipx path.
    Quote Quote  
  11. It is working so thank you for this thread full of advice.
    Quote Quote  
  12. 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.
    Quote Quote  
  13. I got my speed back by turning my modem off and then turning it back on. It had dropped by half.
    Quote Quote  
  14. 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.
    Quote Quote  
  15. Member
    Join Date
    Aug 2025
    Location
    Sweden
    Search PM
    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
    Also getting this error when using https://files.videohelp.com/u/312095/unshackle_services.zip)

    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.
    Quote Quote  
  16. Originally Posted by Tom Saurus View Post
    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.
    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
    Quote Quote  
  17. 2nd Army Bridgeburners. WhiskeyJack's Avatar
    Join Date
    Aug 2024
    Location
    Torshavn
    Search PM
    Originally Posted by Roddan View Post
    Also getting this error when using https://files.videohelp.com/u/312095/unshackle_services.zip)

    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'

    it seems the script is calling for the python module webvtt, try this
    https://pypi.org/project/webvtt-py/

    Code:
     pip install webvtt-py
    or
    Code:
    uv tool install webvtt
    possibly
    Code:
    uv tool install webvtt-py
    I've no idea which way you've set up unshackle, other than you're on windows.
    Quote Quote  
  18. Member
    Join Date
    Aug 2025
    Location
    Sweden
    Search PM
    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
    Init: https://pastebin.com/CidCXMdD
    Config: https://pastebin.com/mRYxqQZH
    Quote Quote  
  19. Originally Posted by PunchDrunkL0ve View Post
    Originally Posted by Tom Saurus View Post
    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.
    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
    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.
    Quote Quote  
  20. Originally Posted by Tom Saurus View Post
    Do I copy this and put this in my .yaml.
    Yes and🤞it works.
    Quote Quote  
  21. Originally Posted by Roddan View Post
    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
    Init: https://pastebin.com/CidCXMdD
    Config: https://pastebin.com/mRYxqQZH

    In your unshackle.yaml you don't have a CDM loaded for default/SVTPLAY

    Code:
    cdm:
      default: WVD/PR File Name
    or
    Code:
    cdm:
      SVTPLAY: WVD/PR File Name
    Quote Quote  
  22. 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.
    I dropped the code mentioned earlier in the thread into my Unshackle .yaml file. Thanks in advance for any additional advice.
    Quote Quote  
  23. 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                                  │
         └───────────────┴────────────────────────────────────────────────────┘
    So hopefully I am close to having it all set up correctly. I am the poster child for the Idiot portion of the Unshackle gang.
    Last edited by Tom Saurus; 8th Aug 2025 at 13:34.
    Quote Quote  
  24. 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.
    Quote Quote  
  25. Member
    Join Date
    Aug 2025
    Location
    Sweden
    Search PM
    Originally Posted by ImSp4rky View Post
    Originally Posted by Roddan View Post
    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
    Init: https://pastebin.com/CidCXMdD
    Config: https://pastebin.com/mRYxqQZH

    In your unshackle.yaml you don't have a CDM loaded for default/SVTPLAY

    Code:
    cdm:
      default: WVD/PR File Name
    or
    Code:
    cdm:
      SVTPLAY: WVD/PR File Name
    Sorry I’m new to this. What is CDM?
    Quote Quote  
  26. 2nd Army Bridgeburners. WhiskeyJack's Avatar
    Join Date
    Aug 2024
    Location
    Torshavn
    Search PM
    Originally Posted by Roddan View Post
    Originally Posted by ImSp4rky View Post
    Originally Posted by Roddan View Post
    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
    Init: https://pastebin.com/CidCXMdD
    Config: https://pastebin.com/mRYxqQZH

    In your unshackle.yaml you don't have a CDM loaded for default/SVTPLAY

    Code:
    cdm:
      default: WVD/PR File Name
    or
    Code:
    cdm:
      SVTPLAY: WVD/PR File Name
    Sorry I’m new to this. What is CDM?
    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?"
    Quote Quote  
  27. Member
    Join Date
    Nov 2006
    Location
    canada
    Search Comp PM
    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.
    Quote Quote  
  28. Member
    Join Date
    Dec 2021
    Location
    england
    Search Comp PM
    that is your VPN, BBC dont like your VPN
    Quote Quote  
  29. Member
    Join Date
    Aug 2025
    Location
    Sweden
    Search PM
    Originally Posted by WhiskeyJack View Post
    Originally Posted by Roddan View Post
    Originally Posted by ImSp4rky View Post
    Originally Posted by Roddan View Post
    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
    Init: https://pastebin.com/CidCXMdD
    Config: https://pastebin.com/mRYxqQZH

    In your unshackle.yaml you don't have a CDM loaded for default/SVTPLAY

    Code:
    cdm:
      default: WVD/PR File Name
    or
    Code:
    cdm:
      SVTPLAY: WVD/PR File Name
    Sorry I’m new to this. What is CDM?
    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?"
    Thank you. Where do one get a hold of a L3 Key ?
    Quote Quote  



Similar Threads

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