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
Results 1 to 14 of 14
  1. I can get pssh and licence url of this video
    But I can't generate the key as it says token is expired or reused.
    PSSH: AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgSEA8Tut XOlUnznXRFyQHV+cJI49yVmwY=
    License: https://adtv.ae/rte/widevinedrm?token=a2VmthuQo5TlrmZ4btTaGCbQfrGOIR4xBRk3WwIpW9yFtdnN...MdCwqEVMvp0%3D

    https://adtv.ae/ar/shows/220757/%D8%AD%D9%84%D9%88%D8%A9%20%D8%A7%D9%84%D8%AF%D9%86%D9...n-1/episode-40


    this is the error code I get

    Error 400: <?xml version="1.0" encoding="utf-8"?><ERROR><CODE>expired-token-error</CODE><TEXT>RiGHTv token was expired.</TEXT></ERROR>
    Last edited by Maxw2191; 28th Jan 2024 at 05:38.
    Quote Quote  
  2. Block the license request from your Network tab, like here: https://forum.videohelp.com/threads/409536-Downloading-from-vdocipher#post2689906 (basically add a blocking filter for "adtv.ae/rte/widevinedrm")

    This way the token is not used by your browser, and it will still be valid in your script.

    Code:
    --key 0f13bad5ce9549f39d7445c901d5f9c2:e51e74fc994ffd2cd0a2b5f1f9dccb52
    Quote Quote  
  3. Originally Posted by Maxw2191 View Post
    I can get pssh and licence url of this video
    But I can't generate the key as it says token is expired or reused.
    PSSH: AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgSEA8Tut XOlUnznXRFyQHV+cJI49yVmwY=
    License: https://adtv.ae/rte/widevinedrm?token=a2VmthuQo5TlrmZ4btTaGCbQfrGOIR4xBRk3WwIpW9yFtdnN...MdCwqEVMvp0%3D

    https://adtv.ae/ar/shows/220757/%D8%AD%D9%84%D9%88%D8%A9%20%D8%A7%D9%84%D8%AF%D9%86%D9...n-1/episode-40



    this is the error code I get

    Error 400: <?xml version="1.0" encoding="utf-8"?><ERROR><CODE>expired-token-error</CODE><TEXT>RiGHTv token was expired.</TEXT></ERROR>
    here is the video https://gofile.io/d/2KiS9b
    Quote Quote  
  4. Originally Posted by white_snake View Post
    Block the license request from your Network tab, like here: https://forum.videohelp.com/threads/409536-Downloading-from-vdocipher#post2689906 (basically add a blocking filter for "adtv.ae/rte/widevinedrm")

    This way the token is not used by your browser, and it will still be valid in your script.

    Code:
    --key 0f13bad5ce9549f39d7445c901d5f9c2:e51e74fc994ffd2cd0a2b5f1f9dccb52
    Thanks, You really helped me with it.
    Quote Quote  
  5. Originally Posted by Silv3r View Post
    Originally Posted by Maxw2191 View Post
    I can get pssh and licence url of this video
    But I can't generate the key as it says token is expired or reused.
    PSSH: AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgSEA8Tut XOlUnznXRFyQHV+cJI49yVmwY=
    License: https://adtv.ae/rte/widevinedrm?token=a2VmthuQo5TlrmZ4btTaGCbQfrGOIR4xBRk3WwIpW9yFtdnN...MdCwqEVMvp0%3D

    https://adtv.ae/ar/shows/220757/%D8%AD%D9%84%D9%88%D8%A9%20%D8%A7%D9%84%D8%AF%D9%86%D9...n-1/episode-40



    this is the error code I get

    Error 400: <?xml version="1.0" encoding="utf-8"?><ERROR><CODE>expired-token-error</CODE><TEXT>RiGHTv token was expired.</TEXT></ERROR>
    here is the video https://gofile.io/d/2KiS9b
    Thanks, it is really kind of you to go through all this process.
    Quote Quote  
  6. Originally Posted by Silv3r View Post
    Originally Posted by Maxw2191 View Post
    I can get pssh and licence url of this video
    But I can't generate the key as it says token is expired or reused.
    PSSH: AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgSEA8Tut XOlUnznXRFyQHV+cJI49yVmwY=
    License: https://adtv.ae/rte/widevinedrm?token=a2VmthuQo5TlrmZ4btTaGCbQfrGOIR4xBRk3WwIpW9yFtdnN...MdCwqEVMvp0%3D

    https://adtv.ae/ar/shows/220757/%D8%AD%D9%84%D9%88%D8%A9%20%D8%A7%D9%84%D8%AF%D9%86%D9...n-1/episode-40



    this is the error code I get

    Error 400: <?xml version="1.0" encoding="utf-8"?><ERROR><CODE>expired-token-error</CODE><TEXT>RiGHTv token was expired.</TEXT></ERROR>
    here is the video https://gofile.io/d/2KiS9b
    can you send the video again plz?
    Quote Quote  
  7. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    Originally Posted by ArbPc View Post
    can you send the video again plz?
    Your command:
    Code:
    N_m3u8DL-RE.exe "https://vo.cdb.cdn.orange.com/Content/DASH/VOD/592/8952/9ecd8113-4f3f-4fee-a4cf-235ed933703f/77cb3996-1545-5aee-e422-caca7ee2f583/manifest.mpd" --key 0f13bad5ce9549f39d7445c901d5f9c2:e51e74fc994ffd2cd0a2b5f1f9dccb52 -M format=mkv
    Your link:
    https://www.transfernow.net/dl/20240316JIN5y9Ib

    This should definitely be automated. They didn't even bother forcing you to make an account lol.
    Last edited by 2nHxWW6GkN1l916N3ayz8HQoi; 16th Mar 2024 at 08:16.
    --[----->+<]>.++++++++++++.---.--------.
    [*drm mass downloader: widefrog*]~~~~~~~~~~~[*how to make your own mass downloader: guide*]
    Quote Quote  
  8. Originally Posted by 2nHxWW6GkN1l916N3ayz8HQoi View Post
    Originally Posted by ArbPc View Post
    can you send the video again plz?
    Your command:
    Code:
    N_m3u8DL-RE.exe "https://vo.cdb.cdn.orange.com/Content/DASH/VOD/592/8952/9ecd8113-4f3f-4fee-a4cf-235ed933703f/77cb3996-1545-5aee-e422-caca7ee2f583/manifest.mpd" --key 0f13bad5ce9549f39d7445c901d5f9c2:e51e74fc994ffd2cd0a2b5f1f9dccb52 -M format=mkv
    Your link:
    https://www.transfernow.net/dl/20240316JIN5y9Ib

    This should definitely be automated. They didn't even bother forcing you to make an account lol.
    My friend, I mean a video to explaining how to get the key, and I do not want to download this file specifically

    Thank you anyway
    Quote Quote  
  9. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    Here is the downloader for https://adtv.ae . It works only for free videos. Doesn't matter if it's a series episode, a sports episode, or a movie. The best part about this script is that you don't even care anymore about the token expiring since it's entirely automated.

    Code:
    import json
    import re
    from urllib.parse import urlparse, urlunparse, parse_qs
    
    import fake_useragent
    import requests
    from pywidevine.cdm import Cdm
    from pywidevine.device import Device
    from pywidevine.pssh import PSSH
    
    API_CONFIG = 'https://adtv.ae/api/biz/config/v1/config'
    API_PLAY_INFO = 'https://adtv.ae/api/biz/video{path}/playinfo'
    API_DETAIL = 'https://adtv.ae/api/biz/video/aggregate/detail'
    
    USER_AGENT = fake_useragent.UserAgent().random
    WVD_FILE = "./device_wvd_file.wvd"
    
    
    def get_content_info(source_url):
        if "/shows/" in source_url:
            ext_id = re.findall(r'/shows/([^/]*)/', source_url)[0]
            response = requests.get(
                API_DETAIL, headers={'User-Agent': USER_AGENT},
                params={
                    'type': 'Series', 'client': 'json',
                    'externalSeriesId': ext_id
                }
            ).content.decode()
            ext_id = re.findall(r'"externalId":"(\d+)"', response)
            ext_id = str(max([int(i) for i in ext_id]))
    
            ep_id = re.findall(r'/episode-(\d+)', source_url)[0]
            return "/episode", {
                'season_external_id': ext_id,
                'episode_number': ep_id,
                'client': 'json'
            }
        elif "/watch?" in source_url:
            query_params = parse_qs(urlparse(source_url).query)
            for p in ["assetExternalId", "externalContentId"]:
                ext_id = query_params.get(p, [])
                if len(ext_id) > 0:
                    ext_id = ext_id[0]
                    break
            return "", {'asset_external_id': ext_id}
    
        print("Unknown URL format: ", source_url)
        exit(0)
    
    
    def get_video_data(source_url):
        app_locale = re.findall(r'/([a-zA-Z]{2})/', source_url)[0]
        license_url = json.loads(requests.get(
            API_CONFIG, headers={'User-Agent': USER_AGENT}
        ).content.decode())["response"]["widevine_licenser_vod"]
        license_url = urlparse(license_url)
        license_url = urlunparse((
            license_url.scheme, license_url.netloc,
            license_url.path, '', '', ''
        ))
    
        path, url_params = get_content_info(source_url)
        response = json.loads(requests.get(
            API_PLAY_INFO.format(path=path), headers={
                'User-Agent': USER_AGENT,
                'App-Locale': app_locale
            },
            params=url_params
        ).content.decode())['response']
        manifest, token = response["url"], response["token"]
    
        try:
            pssh_value = str(min(re.findall(
                r'<cenc:pssh\b[^>]*>(.*?)</cenc:pssh>',
                requests.get(manifest).content.decode()
            ), key=len))
        except:
            return manifest, None, None, None
        return manifest, pssh_value, token, license_url
    
    
    def get_keys(pssh_value, token, license_url):
        if pssh_value is None:
            return []
    
        pssh = PSSH(pssh_value)
        device = Device.load(WVD_FILE)
        cdm = Cdm.from_device(device)
        cdm_session_id = cdm.open()
    
        challenge = cdm.get_license_challenge(cdm_session_id, pssh)
        licence = requests.post(
            license_url, data=challenge,
            params={"token": token},
            headers={'User-Agent': USER_AGENT}
        )
        licence.raise_for_status()
    
        keys = []
        cdm.parse_license(cdm_session_id, licence.content)
        for key in cdm.get_keys(cdm_session_id):
            if "CONTENT" in key.type:
                keys += [f"{key.kid.hex}:{key.key.hex()}"]
        cdm.close(cdm_session_id)
        return keys
    
    
    def get_download_command(source_url):
        manifest, pssh_value, token, license_url = get_video_data(source_url)
        keys = get_keys(pssh_value, token, license_url)
    
        if len(keys) == 0:
            return f'N_m3u8DL-RE.exe "{manifest}" -M format=mkv'
        return f'N_m3u8DL-RE.exe "{manifest}" {" ".join([f"--key {k}" for k in keys])} -M format=mkv'
    
    
    SOURCE_URLS = [
        "https://adtv.ae/en/shows/216884/Al%20Ekhteyar/season-2/episode-28",
        "https://adtv.ae/en/shows/wasaya%20al%20sabbar-series/Wasaya%20Al-Sabbar/season-1/episode-2",
        "https://adtv.ae/ar/shows/216884/%D8%A7%D9%84%D8%A5%D8%AE%D8%AA%D9%8A%D8%A7%D8%B1/season-2/episode-26",
        "https://adtv.ae/ar/watch?video_external_id=LP00050096&assetExternalId=LP00050096&externalContentId=LP00050096&type=Movie&media=%D8%A3%D8%B7%D9%84%D8%A7%D9%84-%D9%88%D8%AD%D8%B6%D8%A7%D8%B1%D8%A9",
        "https://adtv.ae/en/watch?video_external_id=27884199&assetExternalId=27884199&externalContentId=27884199&type=Movie&media=%D8%B5%D8%B1%D8%A7%D8%B9-%D9%81%D9%89-%D8%A7%D9%84%D9%86%D9%8A%D9%84",
        "https://adtv.ae/en/shows/229775/follow%20the%20wind/season-1/episode-14777",
        "https://adtv.ae/en/shows/HeadCoachSeries/HeadCoachSeries/season-1/episode-11"
    ]
    for s in SOURCE_URLS:
        print(get_download_command(s))
    Output:
    Code:
    N_m3u8DL-RE.exe "https://vo.cdb.cdn.orange.com/Content/DASH/VOD/19445/19031/e1ddb853-5140-4991-a3fd-d0985496f622/77cb3996-1545-5aee-e422-caca7ee2f583/manifest.mpd" --key 5bc9d0b65f5d4027a1330c3a92055517:2165aa44aeca2f406fe928fd04ce2df7 -M format=mkv
    N_m3u8DL-RE.exe "https://vo.cdb.cdn.orange.com/Content/DASH/VOD/8716/3421/ee5866bf-7017-43a3-b92d-0de779f704c2/82b249ab-5893-561b-1b2a-b221a78f723d/manifest.mpd" --key 5f4119619d2f40c5856b386057d153c6:0e6e73a98192d6b61685e09463ea23ee -M format=mkv
    N_m3u8DL-RE.exe "https://vo.cdb.cdn.orange.com/Content/DASH/VOD/11611/6031/b66ff258-a6ba-46fa-b280-0775ab8b37f2/77cb3996-1545-5aee-e422-caca7ee2f583/manifest.mpd" --key 868c7b1610ea47ca81770478fc871928:30379a41b6266a026622908adef80aca -M format=mkv
    N_m3u8DL-RE.exe "https://vo.cdb.cdn.orange.com/Content/DASH/VOD/17523/5654/1ff6fb68-3cf5-4117-9084-9ffb7a9a9bd7/82b249ab-5893-561b-1b2a-b221a78f723d/manifest.mpd" --key 2a520f8a11a74e50849d84bf663bcafd:f70e7b78d73e180de38ef7c0103dffe4 -M format=mkv
    N_m3u8DL-RE.exe "https://vo.cdb.cdn.orange.com/Content/DASH/VOD/13910/6731/f0cb46c5-eec4-45b3-a32f-84b29c4a63c5/77cb3996-1545-5aee-e422-caca7ee2f583/manifest.mpd" --key 428b64240a364684a6a0db274b08ca76:af79c2e8ac92b23449064adb40e6eb0d -M format=mkv
    N_m3u8DL-RE.exe "https://vo.cdb.cdn.orange.com/Content/DASH/VOD/13710/1405/ef33ba8e-6f14-4fec-9851-dcd37ac08fc7/77cb3996-1545-5aee-e422-caca7ee2f583/manifest.mpd" --key 86591b3de9cf42549a1b39e0d43b43b3:0cdda18cafa0e5c7a850e0ab2a805681 -M format=mkv
    N_m3u8DL-RE.exe "https://vo.cdb.cdn.orange.com/Content/DASH/VOD/6078/3609/be5c77e0-cadb-48cb-89ec-44f4b502b79a/82b249ab-5893-561b-1b2a-b221a78f723d/manifest.mpd" --key 7bf1c4a1041f43f28c98e9a02f0bf02c:cb0c068aab80d8d4c5ec5e05a73ad063 -M format=mkv
    Before running the script for a specific URL, make sure you can actually play that content in the browser since I've noticed some content is region-locked. Unless their API has some unexpected inconsistencies, the script should work fine. Regardless, if there are URLs that don't work, you can leave a message here I guess.

    Originally Posted by ArbPc View Post
    My friend, I mean a video to explaining how to get the key, and I do not want to download this file specifically
    Oops. I misinterpreted your comment. My bad.

    Edit: This script has been added and extended in the widefrog tool so I won't maintain it here. Any relevant updates will take place in the support thread.
    Last edited by 2nHxWW6GkN1l916N3ayz8HQoi; 21st May 2024 at 04:22.
    --[----->+<]>.++++++++++++.---.--------.
    [*drm mass downloader: widefrog*]~~~~~~~~~~~[*how to make your own mass downloader: guide*]
    Quote Quote  
  10. Originally Posted by 2nHxWW6GkN1l916N3ayz8HQoi View Post
    Here is the downloader for https://adtv.ae . It works only for free videos. Doesn't matter if it's a series episode, a sports episode, or a movie. The best part about this script is that you don't even care anymore about the token expiring since it's entirely automated.

    Before running the script for a specific URL, make sure you can actually play that content in the browser since I've noticed some content is region-locked. Unless their API has some unexpected inconsistencies, the script should work fine. Regardless, if there are URLs that don't work, you can leave a message here I guess.

    Originally Posted by ArbPc View Post
    My friend, I mean a video to explaining how to get the key, and I do not want to download this file specifically
    Oops. I misinterpreted your comment. My bad.
    Thank you very much for the help. Does it work with this tool?

    Code:
    https://github.com/devine-dl/pywidevine
    Last edited by ArbPc; 16th Mar 2024 at 12:32.
    Quote Quote  
  11. Originally Posted by 2nHxWW6GkN1l916N3ayz8HQoi View Post
    Here is the downloader for https://adtv.ae . It works only for free videos. Doesn't matter if it's a series episode, a sports episode, or a movie. The best part about this script is that you don't even care anymore about the token expiring since it's entirely automated.
    Just the other day a user sent a PM needing something like this, well done.
    Quote Quote  
  12. Unfortunately I don't have the device_wvd_file.wvd file and I don't know how to create it
    i just have device_client_id_blob and device_private_key
    Quote Quote  
  13. Originally Posted by ArbPc View Post
    Unfortunately I don't have the device_wvd_file.wvd file and I don't know how to create it
    i just have device_client_id_blob and device_private_key
    https://forum.videohelp.com/threads/411862-Beyond-WKS-KEYS
    Quote Quote  
  14. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    Originally Posted by white_snake View Post
    Just the other day a user sent a PM needing something like this, well done.
    Thanks! Lucky him I guess.
    --[----->+<]>.++++++++++++.---.--------.
    [*drm mass downloader: widefrog*]~~~~~~~~~~~[*how to make your own mass downloader: guide*]
    Quote Quote  



Similar Threads

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