Yes unfortunately, although @TPD94 looks to be bringing cdm-project.com back online...
Try the following provided by @phased for now:
https://files.videohelp.com/u/312095/devine-services.zip
Support our site by donate $5 directly to us Thanks!!!
Try StreamFab Downloader and download streaming video from Netflix, Amazon!
Try StreamFab Downloader and download streaming video from Netflix, Amazon!
+ Reply to Thread
Results 1,501 to 1,530 of 1704
-
-
To iamghost and others thank you all for what you do to educate us and help us along the way. Thank you to stabbedbybrick for freevine and devine.
-
-
The services are once again up on CDM-project. Same URL as before but you might have to re-clone it, I'm not sure.
I also took the opportunity to make a small update to PLUTO in order to get any potential 1080p video. It will now prioritize DASH(.mpd) since HLS is seemingly maxing out at 720p. The problem is that in the past, DASH would sometimes produce sync issues with either video/audio or subtitles. In those cases, you can force HLS with the '--hls flag':
Code:devine dl pluto URL --hls
-
-
Cheers stabbedbybrick. Legend!
Same no-reclone required, pulled just fine! Amazing. -
So I was looking at Crackle today and is it just me or is their widevine licensing revoked? Could have sworn they were back up and running, in fact I can download the encrypted videos, just won't call the licensing url. I can't play anything on the site either.
-
A Crackle devine service has not been made available publicly as far as I'm aware?
-
There definitely is one publicly I just can't remember where I got it, but I know TPD94 wrote it. But I'm pretty sure the widevine licensing crackle had was revoked when chicken soup for the soul got put in chapter 7. The site went "live" again a week or so ago but I'm guessing they are still not fully operational yet.
Last edited by Dravonvico; 9th Apr 2025 at 11:15.
-
Just needs updating from using the old ajax to the new API.works swimmingly now.
Also I noticed you made a few changes to Tubi, Roku, Pluto, AUBC and ITV, you've been busy.
Looks like Tubi's made some changes to their API. I'll look into it. -
Does CBC keep changing things up and is just about a lost cause? I know I have had problems with it for a while now. I also notice that YT-DLP when you look at the Change Log you notice the CBC Extractor has to be adapted fairly often. CBC isn't working for me in YT-DLP either.
Thankfully TUBI has been fine for the most part. I do have a problem with chapters some time but since I can do without chapters I set it to ignore chapters. It is just a thing where mostly everything is downloading fine but the odd movie all of sudden the Devine says that it is geoblocked when it is accepting the VPN for most other files. -
Service Config loaded
Loaded Cdm Widevine CDM: 8158 (L3)
Loaded 1 Vaults
────────────────────────────── Service: TUBI ───────────────────────────────
Service has no Geofence
Authenticated with Service
Starting new HTTPS connection (1): uapi.adrise.tv:443
https://uapi.adrise.tv:443 "GET
/cms/content?platform=android&content_id=300000686&devi ce_id=55f331d2-
84d9-4013-a854-cd64c3548eb6&video_resources%5B%5D=dash&video_reso urces
%5B%5D=dash_widevine HTTP/1.1" 200 None
─────────────────────────── Series: Amen (1991) ────────────────────────────
5 Seasons, 110 Episodes
─────────────────────────────── Amen S01E01 ────────────────────────────────
Starting new HTTPS connection (1): fastly2.tubi.video:443
https://fastly2.tubi.video:443 "GET
/63d42232-15da-4193-abb7-a67584ce9879/rjpa4y23p4.mpd?token=eyJhbGciOiJ
IUzI1NiIsInR5cCI6IkpXVCJ9.eyJjZG5fcHJlZml4IjoiaHR0 cHM6Ly9mYXN0bHkyLnR1
YmkudmlkZW8iLCJleHAiOjE3NDUwNjQwMDAsIm1lZGlhX3NpZy I6NDk3MzQ0OTl9.ERPZr
IC8gP7xJHk8fxLYuYQOpq5j_y2nvQJ7hzrIteE HTTP/1.1" 200 1831
https://fastly2.tubi.video:443 "HEAD
/63d42232-15da-4193-abb7-a67584ce9879/mvis4od8.mp4 HTTP/1.1" 200 0
https://fastly2.tubi.video:443 "HEAD
/63d42232-15da-4193-abb7-a67584ce9879/mvis4od8.mp4 HTTP/1.1" 206 0
https://fastly2.tubi.video:443 "GET
/63d42232-15da-4193-abb7-a67584ce9879/mvis4od8.mp4 HTTP/1.1" 206 20000
https://fastly2.tubi.video:443 "HEAD
/63d42232-15da-4193-abb7-a67584ce9879/mvis4od8.mp4 HTTP/1.1" 200 0
https://fastly2.tubi.video:443 "HEAD
/63d42232-15da-4193-abb7-a67584ce9879/mvis4od8.mp4 HTTP/1.1" 206 0
https://fastly2.tubi.video:443 "GET
/63d42232-15da-4193-abb7-a67584ce9879/mvis4od8.mp4 HTTP/1.1" 206 20000
1 Video
└── [H.264, SDR] | en | 854x640 @ 1468 kb/s, 29.970 FPS
⠴ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • FAILED
1 Audio
└── [AAC] | en | 2.0 | 133 kb/s
⠴ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • SKIPPED
1 Subtitle
└── [SRT] | en
⠴ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • SKIPPED
4 Chapters
├── 00:00:00.000
├── 00:00:02.000 | intro_start
├── 00:00:49.000 | intro_end
└── 00:23:20.000 | postlude
❌ Download Failed...
An unexpected error occurred in one of the download workers.
See the error trace above for more information.
this is what i got. y'all notice any problems? -
-
Don't have the old code in front of me but i am pretty sure these used the old ajax endpoints and what you want is the api endpoints. So pretty sure these should be where you'd make the changes.
Code:@staticmethod def get_recommended_servers(country_id: int) -> list[dict]: url = f"https://api.nordvpn.com/v1/servers/recommendations?filters[country_id]={country_id}" headers = { "User-Agent": ( "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/120.0.0.0 Safari/537.36" ) } try: res = requests.get(url, headers=headers, timeout=15) if not res.ok: raise ValueError(f"Failed to get recommended servers [{res.status_code}]") return res.json() except requests.Timeout: raise RuntimeError("NordVPN API timeout after 15 seconds") except requests.RequestException as e: raise RuntimeError(f"NordVPN API error: {str(e)}") @staticmethod def get_countries() -> list[dict]: """Get a list of available Countries and their metadata.""" url = "https://api.nordvpn.com/v1/servers/countries" headers = { "User-Agent": ( "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/120.0.0.0 Safari/537.36" ) } try: res = requests.get(url, headers=headers, timeout=15) # Added timeout if res.status_code != 200: raise ValueError(f"Failed to fetch country data [HTTP {res.status_code}]") return res.json() except requests.Timeout: raise RuntimeError("NordVPN countries API timeout after 15 seconds")
Last edited by Dravonvico; 22nd Apr 2025 at 23:59.
-
Does anything end up in your temp folder at all if not then most likely downloader issue?
I'd also still get .93 ccextractor although not sure it is needed for tubi. don't get .94 they rewrote a bunch of code and broke something in it that won't allow for extracting cc.
aria2c i'm rocking is 1.37 no idea how old that is.
I would also doCode:devine env info
Is it just tubi, does anything else work like plutotv or any other free site you have a script for work?
I would say have it explicitly use a different downloader to test, but tubi forces aria2c so not a good one to test on if its your downloader.
Those would be my first stops. if that didn't work i would start from 1 and fresh "install". -
What is ajax and API and how do I update it, thanks
[/QUOTE]
Originally Posted by Dravonvico
Don't have the old code in front of me but i am pretty sure these used the old ajax endpoints and what you want is the api endpoints. So pretty sure these should be where you'd make the changes.
Code:@staticmethod def get_recommended_servers(country_id: int) -> list[dict]: url = f"https://api.nordvpn.com/v1/servers/recommendations?filters[country_id]={country_id}" headers = { "User-Agent": ( "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/120.0.0.0 Safari/537.36" ) } try: res = requests.get(url, headers=headers, timeout=15) if not res.ok: raise ValueError(f"Failed to get recommended servers [{res.status_code}]") return res.json() except requests.Timeout: raise RuntimeError("NordVPN API timeout after 15 seconds") except requests.RequestException as e: raise RuntimeError(f"NordVPN API error: {str(e)}") @staticmethod def get_countries() -> list[dict]: url = "https://api.nordvpn.com/v1/servers/countries" headers = { "User-Agent": ( "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/120.0.0.0 Safari/537.36" ) }
I have absolutely no idea what any of that means, where to find it, and what Im supposed to do with it -
Originally Posted by Dravonvico
Don't have the old code in front of me but i am pretty sure these used the old ajax endpoints and what you want is the api endpoints. So pretty sure these should be where you'd make the changes.
Code:@staticmethod def get_recommended_servers(country_id: int) -> list[dict]: url = f"https://api.nordvpn.com/v1/servers/recommendations?filters[country_id]={country_id}" headers = { "User-Agent": ( "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/120.0.0.0 Safari/537.36" ) } try: res = requests.get(url, headers=headers, timeout=15) if not res.ok: raise ValueError(f"Failed to get recommended servers [{res.status_code}]") return res.json() except requests.Timeout: raise RuntimeError("NordVPN API timeout after 15 seconds") except requests.RequestException as e: raise RuntimeError(f"NordVPN API error: {str(e)}") @staticmethod def get_countries() -> list[dict]: url = "https://api.nordvpn.com/v1/servers/countries" headers = { "User-Agent": ( "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/120.0.0.0 Safari/537.36" ) }
I have absolutely no idea what any of that means, where to find it, and what Im supposed to do with it[/QUOTE]
go find where your proxy script is for Nord and pretty much just copy paste that over your old static methods that are using the ajax endpoint. -
I have Devine working for another service, but I can't seem to get TUBI working.
devine dl --list TUBI https://tubitv.com/tv-shows/722881/s01-e02-there-goes-the-neighborhood
or
devine dl -vl en TUBI https://tubitv.com/tv-shows/722881/s01-e02-there-goes-the-neighborhood
both give me the error
LookupError: Can't find any language named ''
devine dl --list TUBI https://tubitv.com/series/300010224/scarecrow-and-mrs-king
──────── Scarecrow and Mrs. King S01E02 There Goes the Neighborhood ────────
⠋ Subscribing to events... ⠋ Subscribing to events...
⠋ Getting tracks... ⠋ Getting tracks...
⠋ Sorting tracks by language and bitrate... ⠋ Sorting tracks by language and bitrate...
┌───────────────────────── Available Tracks ─────────────────────────┐
│ 3 Videos │
│ ├── [H.264, SDR] | enc | 854x470 @ 1409 kb/s, 29.970 FPS │
│ ├── [H.264, SDR] | enc | 640x352 @ 691 kb/s, 29.970 FPS │
│ └── [H.264, SDR] | enc | 426x234 @ 293 kb/s, 29.970 FPS │
│ 1 Audio │
│ └── [AAC] | en | 2.0 | 133 kb/s │
│ 1 Subtitle │
│ └── [SRT] | en │
│ 4 Chapters │
│ ├── 00:00:00.000 │
│ ├── 00:00:01.000 | intro_start │
│ ├── 00:01:12.000 | intro_end │
│ └── 00:47:13.000 | postlude │
└───────────────────────────────────────────────── ───────────────────┘ -
I have absolutely no idea what any of that means, where to find it, and what Im supposed to do with it
[/QUOTE]
go find where your proxy script is for Nord and pretty much just copy paste that over your old static methods that are using the ajax endpoint.[/QUOTE]
I have no idea where or what my proxy script for Nord is - Is it in the Nord app, is it a setting my devine set up?
As for the copy and paste thing - Are you saying that I copy everything that you wrote, that is under the "try:" ? and paste it in place of everything you wrote above try ?Last edited by mickmars; 15th Apr 2025 at 10:27.
-
Hi, i have a problem whit ROKU, here is the log:
Code:(.venv) C:\python\devine>devine dl -w s03e08 ROKU https://therokuchannel.roku.com/details/db698421a3035d3d81956c18d748813e/mantracker / __ \/ ____/ | / / _/ | / / ____/ / / / / __/ | | / // // |/ / __/ / /_/ / /___ | |/ // // /| / /___ /_____/_____/ |___/___/_/ |_/_____/ ⠀ v3.3.3 Copyright © 2019-2025 rlaphoenix https://github.com/devine-dl/devine Service Config loaded Loaded Cdm Widevine CDM: 4464 (L3) Loaded 1 Vaults ────────────────────────────── Service: ROKU ─────────────────────────────── Service is not Geoblocked in your region ──────────────────────── Series: Mantracker (2005) ───────────────────────── 6 Seasons, 63 Episodes ───────────────────── Mantracker S03E08 Jordan & Suzie ───────────────────── ╭───────────────────── Traceback (most recent call last) ──────────────────────╮ │ in _run_module_as_main:198 │ │ in _run_code:88 │ │ │ │ in <module>:7 │ │ │ │ C:\python\devine\.venv\Lib\site-packages\click\core.py:1161 in __call__ │ │ │ │ C:\python\devine\.venv\Lib\site-packages\click\core.py:1082 in main │ │ │ │ C:\python\devine\.venv\Lib\site-packages\click\core.py:1697 in invoke │ │ │ │ C:\python\devine\.venv\Lib\site-packages\click\core.py:1697 in invoke │ │ │ │ C:\python\devine\.venv\Lib\site-packages\click\core.py:1666 in │ │ _process_result │ │ │ │ C:\python\devine\.venv\Lib\site-packages\click\core.py:788 in invoke │ │ │ │ C:\python\devine\.venv\Lib\site-packages\devine\commands\dl.py:341 in result │ │ │ │ 338 │ │ │ │ events.subscribe(events.Types.TRACK_MULTIPLEX, service │ │ 339 │ │ │ │ │ 340 │ │ │ with console.status("Getting tracks...", spinner="dots"): │ │ ❱ 341 │ │ │ │ title.tracks.add(service.get_tracks(title), warn_only= │ │ 342 │ │ │ │ title.tracks.chapters = service.get_chapters(title) │ │ 343 │ │ │ │ │ 344 │ │ │ # strip SDH subs to non-SDH if no equivalent same-lang non │ │ │ │ C:\python\devine\devine\services\ROKU\__init__.py:185 in get_tracks │ │ │ │ 182 │ │ │ headers=headers, │ │ 183 │ │ │ json=payload, │ │ 184 │ │ ) │ │ ❱ 185 │ │ r.raise_for_status() │ │ 186 │ │ │ │ 187 │ │ videos = r.json()["playbackMedia"]["videos"] │ │ 188 │ │ self.license = next( │ │ │ │ C:\python\devine\.venv\Lib\site-packages\requests\models.py:1024 in │ │ raise_for_status │ │ │ │ 1021 │ │ │ ) │ │ 1022 │ │ │ │ 1023 │ │ if http_error_msg: │ │ ❱ 1024 │ │ │ raise HTTPError(http_error_msg, response=self) │ │ 1025 │ │ │ 1026 │ def close(self): │ │ 1027 │ │ """Releases the connection back to the pool. Once this method │ ╰──────────────────────────────────────────────────────────────────────────────╯ HTTPError: 451 Client Error: Unknown for url: https://therokuchannel.roku.com/api/v3/playback
-
Alright well it's become clear to me that you can't use Devine to record live channels, but does anyone know how to automate the process at the very least? I did try the usual methods of getting the key, by using CDRM Project and inputting the PSSH and license URL, but all I'm getting is an error saying...
Code:An error occurred processing PSSH 'PSSH' object has no attribute 'get_wrm_headers'
-
I use expressvpn, work on my machine
[Attachment 86613 - Click to enlarge] -
Some episodes work, other episodes come out this mistake. I use a protonvpn VPN.
I use expressvpn, work on my machine
[Attachment 86613 - Click to enlarge] -
Error 451 is the service is actively blocking your request. so more than likely it sees your VPN and says "nope, not today." so either try a different vpn or cycle it for a fresh session. Proton is super iffy on whether a website is going to notice or not, express and nord work way better. I only use proton to mask my torrents (isp is a prick about it).
-
go find where your proxy script is for Nord and pretty much just copy paste that over your old static methods that are using the ajax endpoint.[/QUOTE]
I have no idea where or what my proxy script for Nord is - Is it in the Nord app, is it a setting my devine set up?
As for the copy and paste thing - Are you saying that I copy everything that you wrote, that is under the "try:" ? and paste it in place of everything you wrote above try ?[/QUOTE]
I'd say now would be the time to dig in and find out. CLI is relatively easy to work with as are python scripts, but if you don't dig into the files and see whats what you just gotta hope someone out there will fix it and share it. Which is why I like to dig into the scripts and fix what needs fixing.
And no it is not in your nord app, it is however a script in your devine folder, wherever you may have placed that, should be pretty easy to find just grep or if your on windows just search for nord in that devine folder and it should find it for you. And yes you copy everything i have over your current static methods for recommended_servers and get_countries (should be towards the bottom).
EDIT: whoops, forgot to also have you change this line
Code:servers = sum(x["servers_count"] for x in self.countries)
Code:servers = sum(int(x.get("servers_count", 0)) for x in self.countries if isinstance(x.get("servers_count"), (int, float, str)) and str(x.get("servers_count")).isdigit())
Last edited by Dravonvico; 16th Apr 2025 at 03:16.
-
-
I'm also having this issue with the facts of life (any episode); https://tubitv.com/series/300000119/the-facts-of-life
Similar Threads
-
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 -
H.264 for archival and editing - no go?
By malling in forum Capturing and VCRReplies: 8Last Post: 19th Aug 2019, 23:51 -
Movie music too loud but dialogue too quiet fix needed
By hokkom in forum AudioReplies: 121Last Post: 4th May 2019, 08:51