Hello! I'm new here, and I'm trying to learn yt-dlp to download the episodes of this show: https://www.ctv.ca/shows/muddling-through
I want to download them to put them to a DVD for a family member who worked on the production of the original show. We're trying to put together sort of a compilation of all the things he ever worked on, for a Christmas present (he's retired and isn't in good health).
Anyhow, I know from browsing this forum that CTV stuff is DRM-protected, but it seems like a few folks have had some success getting a few things from there. The CTV site doesn't require a login or account to watch the videos. When I follow the directions for downloading with yt-dlp, I get a message that "this video is DRM protected".
I confess that I'm not very savvy in command-line stuff or scripting/coding (one of the other threads dealing with a CTV request mentioned needing to know some of that stuff). Can anyone point me to a resource where I can fill in the blanks and work out how to capture these videos? I don't want to distribute the videos or anything; I only want to present them to my uncle for a private memento.
Thanks in advance to anyone who reads this and might offer some help!
+ Reply to Thread
Results 1 to 30 of 116
-
-
http://getwvkeys.cc/ you need this site for getting the keys so you can decrypt the encrypted content that you will download.
Download these and put them in some folder (these are used for downloading, decrypting, merging video and audio)
https://drive.google.com/file/d/1DxCKtao8EUoH3hWPOzlESWNJC2BSd-wt/view?usp=sharing
Download this add on
https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=en
Copy the contents of this code:
Code:// ==UserScript== // @name EME2 // @version 0.6 // @match *://*/* // @match http://ss-cdn1.blim.com/ // @run-at document-start // @grant none // ==/UserScript== (async () => { const indent = (s,n=4) => s.split('\n').map(l=>Array(n).fill(' ').join('')+l).join('\n'); const b64 = { decode: s => Uint8Array.from(atob(s), c => c.charCodeAt(0)), encode: b => btoa(String.fromCharCode(...new Uint8Array(b))) }; const fnproxy = (object, func) => new Proxy(object, { apply: func }); const proxy = (object, key, func) => Object.defineProperty(object, key, { value: fnproxy(object[key], func) }); proxy(MediaKeySession.prototype, 'generateRequest', async (_target, _this, _args) => { const [initDataType, initData] = _args; console.groupCollapsed( `[EME] MediaKeySession::generateRequest\n` + ` Session ID: ${_this.sessionId || '(not available)'}\n` + ` Init Data Type: ${initDataType}\n` + ` Init Data: ${b64.encode(initData)}` ); console.trace(); console.groupEnd(); return _target.apply(_this, _args); }); })();
You need to do this so you can get the PSSH from console of browser, otherwise you won't have those codes in the console.
The whole process is shown in the following video.
Watch it closely, I might do some things that seem "fast" to you, so rewind, stop, watch, try, think, etc.
https://streamable.com/umoszy - Removed by Streamable because it violated their stupid Terms of service.
https://web.archive.org/web/20220301190239/https://streamable.com/umoszy
Do let us now if you need help with anything.Last edited by [ss]vegeta; 14th Apr 2022 at 14:28.
-
@[ss]vegeta
This is an excellent post with a great demonstration video. Kudos to you. I suggest that this post be made a sticky so that new comers can read and get up to speed quickly.
For those who wish to have their own copy of this excellent video please click ...
-
I join a @Brook_Benton's thanks for your video tutorial.
Could you also explain how to use WKS-KEYS scripts.My first attempts resulted in an error
Code:D:\video\WKS-KEYS>python l3.py Traceback (most recent call last): File "D:\video\WKS-KEYS\l3.py", line 9, in <module> from pywidevine.L3.cdm import cdm, deviceconfig File "D:\video\WKS-KEYS\pywidevine\L3\cdm\cdm.py", line 13, in <module> from Cryptodome.Random import get_random_bytes ModuleNotFoundError: No module named 'Cryptodome'
-
I don't know what to say-- this is like magic! It's working perfectly! I'm so excited-- I really thought we weren't going to be able to get these videos, but everyone in my family is going to be thrilled.
THANK YOU VERY VERY MUCH. You guys are amazing, and I owe you big.
I agree totally. Thank you for posting this link to a downloadable video. This guide is a total lifesaver and I couldn't be happier. My sincere appreciation to both of you and to this forum. -
-
Error again
Code:D:\video\WKS-KEYS>pip install pycryptodome Collecting pycryptodome Downloading pycryptodome-3.12.0-cp35-abi3-win_amd64.whl (1.8 MB) |████████████████████████████████| 1.8 MB 819 kB/s Installing collected packages: pycryptodome Successfully installed pycryptodome-3.12.0 D:\video\WKS-KEYS>python l3.py Traceback (most recent call last): File "D:\video\WKS-KEYS\l3.py", line 9, in <module> from pywidevine.L3.cdm import cdm, deviceconfig File "D:\video\WKS-KEYS\pywidevine\L3\cdm\cdm.py", line 13, in <module> from Cryptodome.Random import get_random_bytes ModuleNotFoundError: No module named 'Cryptodome'
-
-
Thanks again for your your help the other day and for your kind words here.
As you know, the getvwkeys site we were using to decrypt the content is down. I've been trying to follow the discussion in the threads it's being discussed in, but a lot of this stuff is pretty technical from my standpoint and I'm having a hard time following it.
I hate to keep being a bother, but can you me in non-technical terms if there's an alternative way to get those keys? I've only been able to download a few of these episodes because the process is so complex (for me) and I've been waiting until I was back home to download the rest.
I totally understand if there's no alternative way to do it right now, but if there is one and it's something I can grasp and do myself, can you point me in the right direction? Thanks in advance for any help you can give and for all your time. -
-
-
Just followed the excellent instructions by [ss]vegeta, thanks so much for making them!
For anyone reading beefyboygod's comment, don't worry. The getwvkeys site is back and working at getwvkeys.cc, and the wetransfer link with a toolkit helpfully provided is not needed, you can just get the tools from normal sources with no problem (shouldn't be any news for most users of this forum?):
yt-dlp - https://github.com/yt-dlp/yt-dlp/releases
ffmpeg - https://ffmpeg.org/download.html
mp4decrypt - http://www.bento4.com/downloads/
aria2 (optional!) - https://github.com/aria2/aria2/releases
Thanks again to [ss]vegeta!!! -
Hey [ss]vegeta, thanks so much for this guide. I used it effectively on a new episode of Transplant here but was unable to download the rest of the season (getting unauthorized, 401 http errors), no matter what combination of logins for my paid Bell account I tried (with cookies-from-browser, with local cookies, with cookies and account login info, and just account login info). Any idea what the approach or syntax I should be using to get this right is?
Thanks again -
-
youtube-dl -f bestvideo https://capi.9c9media.com/destinations/ctv_hub/platforms/desktop/bond/contents/2333926...5/manifest.mpd
[generic] manifest: Requesting header
WARNING: Falling back on generic information extractor.
[generic] manifest: Downloading webpage
[generic] manifest: Extracting information
[dashsegments] Total fragments: 653
[download] Destination: manifest-manifest.mp4
[download] 1.6% of ~997.67MiB at 674.65KiB/s ETA 26:35 ...
VPN. -
i tried to the do the mp4decrypt on my mac but i kept getting an error it works when i do it on my mac its in the folder
[Attachment 63528 - Click to enlarge] i was able to do it perfectly fine on my pcLast edited by nammin; 24th Feb 2022 at 01:21.
-
Hey there, on getwvkeys.cc, I only get one key "1. 5dd......"
Some ideas?
Thanks!
Edit: it looks like, that there is no key for audo decryptionLast edited by Bauer4FSV; 24th Feb 2022 at 07:34. Reason: more information
-
Hello.
I did everything as written here.
Received PSSH: AAAC4nBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAsLCAgAAAQ ABALgCPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9 ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAG MAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAA NwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQ ByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAw ACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAE YATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwA RQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQ BMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ ADwASwBJAEQAPgBPAEEAZABsADUAVwBOADYARQAwADIAMQAxAE 0AYwBmAFkAZQBPAC8AMABnAD0APQA8AC8ASwBJAEQAPgA8AEMA SABFAEMASwBTAFUATQA+AGcAaQB4AHAAWgBzAHoANQBTADIAYw A9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AEwAQQBfAFUAUgBM AD4AaAB0AHQAcABzADoALwAvAGwAaQBjAC4AZAByAG0AdABvAG QAYQB5AC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAC0AcAByAG8A eAB5AC0AaABlAGEAZABlAHIAYQB1AHQAaAAvAGQAcgBtAHQAbw BkAGEAeQAvAFIAaQBnAGgAdABzAE0AYQBuAGEAZwBlAHIALgBh AHMAbQB4ADwALwBMAEEAXwBVAFIATAA+ADwALwBEAEEAVABBAD 4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4AAAAAXHBzc2gAAAAA 7e+LqXnWSs6jyCfc1R0h7QAAADwIARIQ5WUHOHpjTRO11McfYe O/0hoIdXNwLWNlbmMiGDVXVUhPSHBqVFJPMTFNY2ZZZU8vMGc9PS oAMgA=
It seems to me that it turned out to be a very long PSSH
I went to the site http://getwvkeys.cc/.
But it gives me an error:
Error 404: <!doctype html><html lang="ru"><head><title>HTTP Status 412 – Precondition Failed</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 412 – Precondition Failed</h1></body></html> -
I received such a PSSH: AAAAXHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADwIARIQ5W UHOHpjTRO11McfYeO/0hoIdXNwLWNlbmMiGDVXVUhPSHBqVFJPMTFNY2ZZZU8vMGc9PS oAMgA=
And gives me three keys:
fe2534d980f35f77a783ec58bfbd0b61:e0d97a69277d6a1ba 4555c9f9939c67f
133a14ebdac4522b95422338343b17e5:3552232d37902f6ab 9bcbdec037b27e6
501b768ee58b599095c401c1e319da56:bb43c479e7130ed99 c52afb5288da5a3
[Attachment 63569 - Click to enlarge]
I've tried using them one by one, but it doesn't work. -
you have try to decrypt with all keys?
Code:mp4decrypt --key xx:xx --key xx:xx --key xx:xx <input> <output>
Last edited by lomero; 27th Feb 2022 at 11:20.
-
Thanks. It turned out that I entered the Headers incorrectly.
Now i can decrypt the video
Similar Threads
-
Downloading videos from Ooyala?
By amalia in forum Video Streaming DownloadingReplies: 250Last Post: 23rd Jan 2021, 05:14 -
Need help in downloading Hotstar Videos
By LenkaTheHero in forum Video Streaming DownloadingReplies: 0Last Post: 23rd Sep 2020, 17:54 -
Downloading videos with player.pl
By robza171 in forum Video Streaming DownloadingReplies: 8Last Post: 18th Mar 2019, 12:36 -
Everything to know about Downloading Vimeo Videos
By glober in forum Video Streaming DownloadingReplies: 2Last Post: 22nd Dec 2018, 09:02