VideoHelp Forum



Support our site by donate $5 directly to us Thanks!!!

Try StreamFab Downloader and download streaming video from Netflix, Amazon!



+ Reply to Thread
Page 51 of 57
FirstFirst ... 41 49 50 51 52 53 ... LastLast
Results 1,501 to 1,530 of 1704
  1. Member
    Join Date
    Mar 2024
    Location
    United Kingdom
    Search PM
    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
    Quote Quote  
  2. Thanks for this!
    Last edited by sebus; 6th Apr 2025 at 06:01.
    Quote Quote  
  3. 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.
    Quote Quote  
  4. Originally Posted by iamkennethy_ View Post
    Originally Posted by sipho View Post
    Originally Posted by iamkennethy_ View Post

    im using the current version of ccextractor. also, i use windows (windows 11)

    You must use 0.93 (or earlier).
    i thought 0.90 was the current version but okay

    i get the same error idk what to do i listened to yall and put the required versions into the folder

    what version of aria2c should i be using bc idk if the current version i got is whats required for devine

    and plus do yall even got any other suggestions to fix this tubi stuff
    without debug logs, pretty much everyone is going to be shooting in the dark. You want help, that's the place to start.
    Quote Quote  
  5. 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
    Quote Quote  
  6. Originally Posted by stabbedbybrick View Post
    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
    Thanks very much for this. I updated the repository via Github desktop on Windows and it worked find and I didn't need to re-clone it.
    Quote Quote  
  7. Member
    Join Date
    Mar 2024
    Location
    United Kingdom
    Search PM
    Cheers stabbedbybrick. Legend!
    Same no-reclone required, pulled just fine! Amazing.
    Quote Quote  
  8. 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.
    Quote Quote  
  9. Member
    Join Date
    Mar 2024
    Location
    United Kingdom
    Search PM
    A Crackle devine service has not been made available publicly as far as I'm aware?
    Quote Quote  
  10. Originally Posted by SaintyUK View Post
    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.
    Quote Quote  
  11. Member
    Join Date
    Oct 2023
    Location
    Afghanistan
    Search PM
    Here's the Crackle file.
    Image Attached Files
    Quote Quote  
  12. Originally Posted by stabbedbybrick View Post
    Originally Posted by mickmars View Post
    As things stand right now, My Devine will work perfectly well if I manually turn my Nord VPN on, but ,if i try downloading anything from UK, without the VPM manual switch on, I get

    ValueError: The NordVPN Country gb currently has no recommended servers. Try
    again later. If the issue persists, double-check the query.
    The NordVPN code in Devine is absolutely ancient at this point and it can't find any servers because the endpoints have changed/died. Just another sign that the official version of Devine is slowly decaying, unfortunately.

    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.
    I was still able to use the old api for grabbing m3u8's but if the bitrate is better from the mpds, i might readjust to the new script.
    Quote Quote  
  13. 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.
    Quote Quote  
  14. Member
    Join Date
    Dec 2024
    Location
    United States
    Search PM
    Originally Posted by Dravonvico View Post
    Originally Posted by iamkennethy_ View Post
    Originally Posted by sipho View Post
    Originally Posted by iamkennethy_ View Post

    im using the current version of ccextractor. also, i use windows (windows 11)

    You must use 0.93 (or earlier).
    i thought 0.90 was the current version but okay

    i get the same error idk what to do i listened to yall and put the required versions into the folder

    what version of aria2c should i be using bc idk if the current version i got is whats required for devine

    and plus do yall even got any other suggestions to fix this tubi stuff
    without debug logs, pretty much everyone is going to be shooting in the dark. You want help, that's the place to start.
    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?
    Quote Quote  
  15. Member
    Join Date
    Nov 2006
    Location
    canada
    Search Comp PM
    Originally Posted by Dravonvico View Post
    Originally Posted by stabbedbybrick View Post
    Originally Posted by mickmars View Post
    As things stand right now, My Devine will work perfectly well if I manually turn my Nord VPN on, but ,if i try downloading anything from UK, without the VPM manual switch on, I get

    ValueError: The NordVPN Country gb currently has no recommended servers. Try
    again later. If the issue persists, double-check the query.
    The NordVPN code in Devine is absolutely ancient at this point and it can't find any servers because the endpoints have changed/died. Just another sign that the official version of Devine is slowly decaying, unfortunately.

    Just needs updating from using the old ajax to the new API. works swimmingly now.
    What is ajax and API and how do I update it, thanks
    Quote Quote  
  16. Originally Posted by mickmars View Post
    Originally Posted by Dravonvico View Post
    Originally Posted by stabbedbybrick View Post
    Originally Posted by mickmars View Post
    As things stand right now, My Devine will work perfectly well if I manually turn my Nord VPN on, but ,if i try downloading anything from UK, without the VPM manual switch on, I get

    ValueError: The NordVPN Country gb currently has no recommended servers. Try
    again later. If the issue persists, double-check the query.
    The NordVPN code in Devine is absolutely ancient at this point and it can't find any servers because the endpoints have changed/died. Just another sign that the official version of Devine is slowly decaying, unfortunately.
    Just needs updating from using the old ajax to the new API. works swimmingly now.
    What is ajax and API and how do I update it, thanks


    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.
    Quote Quote  
  17. Originally Posted by iamkennethy_ View Post
    Originally Posted by Dravonvico View Post
    Originally Posted by iamkennethy_ View Post
    Originally Posted by sipho View Post
    Originally Posted by iamkennethy_ View Post

    im using the current version of ccextractor. also, i use windows (windows 11)

    You must use 0.93 (or earlier).
    i thought 0.90 was the current version but okay

    i get the same error idk what to do i listened to yall and put the required versions into the folder

    what version of aria2c should i be using bc idk if the current version i got is whats required for devine

    and plus do yall even got any other suggestions to fix this tubi stuff
    without debug logs, pretty much everyone is going to be shooting in the dark. You want help, that's the place to start.
    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?
    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 do
    Code:
    devine env info
    that should show you were all your files need to be located for devine to find them or use devine.yaml to tell it where you want it to look.

    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".
    Quote Quote  
  18. Member
    Join Date
    Nov 2006
    Location
    canada
    Search Comp PM
    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"
                )
            }
    [/QUOTE]

    I have absolutely no idea what any of that means, where to find it, and what Im supposed to do with it
    Quote Quote  
  19. Originally Posted by mickmars View Post
    What is ajax and API and how do I update it, thanks

    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"
                )
            }
    [/QUOTE]

    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 Quote  
  20. 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 ''
    but if I do a full list, I can see the 'en' language.

    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 │
    └───────────────────────────────────────────────── ───────────────────┘
    Is there some TUBI update I need that I don't know about?
    Quote Quote  
  21. Member
    Join Date
    Nov 2006
    Location
    canada
    Search Comp PM
    Originally Posted by Dravonvico View Post
    Originally Posted by mickmars View Post
    What is ajax and API and how do I update it, thanks

    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.[/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.
    Quote Quote  
  22. 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
    Some episodes work, other episodes come out this mistake. I use a protonvpn VPN.
    Quote Quote  
  23. Originally Posted by cadence View Post
    Trying to use this command: devine dl itv https://www.itv.com/watch?channel=itv

    But am getting the following error:
    Code:
    ╭───────────────────── Traceback (most recent call last) ─────────────────────────╮
    │ in _run_module_as_main:198                                                      │
    │ in _run_code:88                                                                 │
    │                                                                                 │
    │ in <module>:7                                                                   │
    │                                                                                 │
    │ C:\Users\cadence\AppData\Local\Programs\Python\Python312\Lib\site-packages\clic │
    │ k\core.py:1157 in __call__                                                      │
    │                                                                                 │
    │ C:\Users\cadence\AppData\Local\Programs\Python\Python312\Lib\site-packages\clic │
    │ k\core.py:1078 in main                                                          │
    │                                                                                 │
    │ C:\Users\cadence\AppData\Local\Programs\Python\Python312\Lib\site-packages\clic │
    │ k\core.py:1688 in invoke                                                        │
    │                                                                                 │
    │ C:\Users\cadence\AppData\Local\Programs\Python\Python312\Lib\site-packages\clic │
    │ k\core.py:1688 in invoke                                                        │
    │                                                                                 │
    │ C:\Users\cadence\AppData\Local\Programs\Python\Python312\Lib\site-packages\clic │
    │ k\core.py:1657 in _process_result                                               │
    │                                                                                 │
    │ C:\Users\cadence\AppData\Local\Programs\Python\Python312\Lib\site-packages\clic │
    │ k\core.py:783 in invoke                                                         │
    │                                                                                 │
    │ C:\Users\cadence\AppData\Local\Programs\Python\Python312\Lib\site-packages\devi │
    │ ne\commands\dl.py:301 in result                                                 │
    │                                                                                 │
    │   298 │   │   │   │   self.log.info("Authenticated with Service")               │
    │   299 │   │                                                                     │
    │   300 │   │   with console.status("Fetching Title Metadata...", spinner="dot    │
    │ ❱ 301 │   │   │   titles = service.get_titles()                                 │
    │   302 │   │   │   if not titles:                                                │
    │   303 │   │   │   │   self.log.error("No titles returned, nothing to downloa    │
    │   304 │   │   │   │   sys.exit(1)                                               │
    │                                                                                 │
    │ C:\devine-services\services\ITV\__init__.py:162 in get_titles                   │
    │                                                                                 │
    │   159 │   def get_titles(self) -> Union[Movies, Series]:                        │
    │   160 │   │   data = self.get_data(self.title)                                  │
    │   161 │   │   kind = next(                                                      │
    │ ❱ 162 │   │   │   (x.get("seriesType") for x in data.get("seriesList") if x.    │
    │   163 │   │   )                                                                 │
    │   164 │   │                                                                     │
    │   165 │   │   # Some shows are not listed as "SERIES" or "FILM", only as "La │
    ╰─────────────────────────────────────────────────────────────────────────────────╯
    TypeError: 'NoneType' object is not iterable
    What am I doing wrong? I don't understand why I am getting this error. Any help would be appreciated, thanks!
    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'
    What do I do now? What is the proper procedure to record the live channels? Are there any tools besides Devine that will allow you to do this?
    Quote Quote  
  24. Member
    Join Date
    Dec 2021
    Location
    england
    Search Comp PM
    Originally Posted by tiberio87 View Post
    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
    Some episodes work, other episodes come out this mistake. I use a protonvpn VPN.
    I use expressvpn, work on my machine
    Image
    [Attachment 86613 - Click to enlarge]
    Quote Quote  
  25. Some episodes work, other episodes come out this mistake. I use a protonvpn VPN.
    I use expressvpn, work on my machine
    Image
    [Attachment 86613 - Click to enlarge]
    Do you want to try with the S04 command without episodes?
    Quote Quote  
  26. Member
    Join Date
    Dec 2021
    Location
    england
    Search Comp PM
    Originally Posted by tiberio87 View Post
    Do you want to try with the S04 command without episodes?
    sure...
    Image
    [Attachment 86617 - Click to enlarge]
    Quote Quote  
  27. Originally Posted by tiberio87 View Post
    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
    Some episodes work, other episodes come out this mistake. I use a protonvpn VPN.
    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).
    Quote Quote  
  28. Originally Posted by mickmars View Post
    Originally Posted by Dravonvico View Post
    Originally Posted by mickmars View Post
    What is ajax and API and how do I update it, thanks

    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
    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)
    to

    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.
    Quote Quote  
  29. Originally Posted by Dravonvico View Post
    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).
    Originally Posted by iamghost View Post
    It actually works with expressvpn without any problems. Thank you.
    Quote Quote  
  30. I'm also having this issue with the facts of life (any episode); https://tubitv.com/series/300000119/the-facts-of-life

    Originally Posted by this-is-me View Post
    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 ''
    but if I do a full list, I can see the 'en' language.

    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 │
    └───────────────────────────────────────────────── ───────────────────┘
    Is there some TUBI update I need that I don't know about?
    Quote Quote  



Similar Threads

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