VideoHelp Forum




+ Reply to Thread
Results 1 to 9 of 9
  1. Hello everybody,
    i have a small test program:
    Code:
    def wait_for_condition(page):
        p = promise.Promise()
    
        while True:
            if page.is_closed():
                break
            try:
                page.wait_for_timeout(100)
            except TargetClosedError:
                pass
    
        return p
    
    
    if __name__ == '__main__':
        with sync_playwright() as p:
            browser = p.firefox.launch_persistent_context(
                user_data_dir="profile",
                headless=False,
                devtools=False,
                no_viewport=True
            )
            page = browser.pages[0]
            wait_for_condition(page)
    which i'm using to play a video on tubitv (https://tubitv.com/movies/447853/red-state) using nightly (firefox).
    DRM is working (this particular video in 480p is not protected).
    My problem is that i'm only getting 480p quality instead of 720p because the original manifest that's being loaded is getting an NS_BINDING_ABORTED error:
    Image
    [Attachment 78511 - Click to enlarge]

    This is what it looks like on normal firefox:
    Image
    [Attachment 78512 - Click to enlarge]

    I'm only having this issue in the Nightly browser started using playwright.
    I'm able to get 720p quality using these methods:
    - Normal Firefox
    - Normal Nightly
    - Nightly Private
    - New PRIVATE Window opened from playwright nightly

    I know that NS_BINDING_ABORTED means that the connection was terminated by the server before anything could be transferred.
    Why is the server killing my connection/how is it identifying me?

    Any help would be appreciated!
    Last edited by larley; 21st Apr 2024 at 06:15.
    Quote Quote  
  2. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    If what you're interested in is just the m3u8 link, why not get it directly from their page without relying on browsers? You can use just the requests library.
    --[----->+<]>.++++++++++++.---.--------.
    [*drm mass downloader: widefrog*]~~~~~~~~~~~[*how to make your own mass downloader: guide*]
    Quote Quote  
  3. I don't want to reveal what the big project behind this is, but using a browser makes it easier the get the links if sites use jwt tokens or require a login because you don't have to reverse the whole api, you can just log in and play the video and my project "whose name shall not be said" will do the rest.
    Quote Quote  
  4. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    Originally Posted by larley View Post
    I don't want to reveal what the big project behind this is
    Fair enough

    Originally Posted by larley View Post
    My problem is that i'm only getting 480p quality instead of 720p because the original manifest that's being loaded is getting an NS_BINDING_ABORTED error
    I ran your code and I can't play 720p. However the m3u8 is requested without errors for me:

    Image
    [Attachment 78516 - Click to enlarge]
    --[----->+<]>.++++++++++++.---.--------.
    [*drm mass downloader: widefrog*]~~~~~~~~~~~[*how to make your own mass downloader: guide*]
    Quote Quote  
  5. What about the profile i specified?
    Did you use ".launch()" instead of ".launch_persistent_context()" or did you create an empty profile folder?
    I'm asking this because i know that it works with ".launch()".

    TubiTV will load a "backup" manifest if DRM isn't working properly (license request fails, etc.) where streams are limited to 480p and only encrypted using AES-128.
    The normal manifest is not resolution limited but all streams are DRM-protected.
    Could you check whether the https://license.adrise.tv/challenge request fails for you?
    Last edited by larley; 21st Apr 2024 at 10:27.
    Quote Quote  
  6. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    I just ran your code in an empty folder. And your code has launch persistent. It created the profile folder. The license challenge call isn't even requested.
    --[----->+<]>.++++++++++++.---.--------.
    [*drm mass downloader: widefrog*]~~~~~~~~~~~[*how to make your own mass downloader: guide*]
    Quote Quote  
  7. Can confirm. Could you give it a try with the profile i used?
    Image Attached Files
    Last edited by larley; 21st Apr 2024 at 10:59.
    Quote Quote  
  8. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    Same thing with m3u8 (200 status code, but can't see 720p). As for the license call, it fails. Unauthorized. Error code: 403
    --[----->+<]>.++++++++++++.---.--------.
    [*drm mass downloader: widefrog*]~~~~~~~~~~~[*how to make your own mass downloader: guide*]
    Quote Quote  
  9. I kinda solved it by scraping the HTML for <script> elements containing the __data variable.
    I'll leave this open in case somebody finds an answer (i still don't know why the NS_BINDING_ABORTED error occurs).
    Quote Quote  



Similar Threads

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