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 1 of 2
1 2 LastLast
Results 1 to 30 of 31
  1. Member
    Join Date
    Aug 2023
    Location
    Ukraine
    Search PM
    I can't understand why N_m3u8DL-RE can't load N_m3u8DL-RE "https://tvseans.az/az/hls/2377/0/index.m3u8?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1N iJ9.eyJleHAiOjE3NjcwMjA0ODF9.PH0zxgU7IlrB2_S0723gW o6LVb_97wCsneZ9Z0jpnys" --header "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" --header "Cookie: _ga=GA1.1.2015003564.1766828401; _identity-frontend=471ab06b5a50cc59b994cced6b2506ca7ed716890 0e0e7c6fbbbba3df04a5b1fa%3A2%3A%7Bi%3A0%3Bs%3A18%3 A%22_identity-frontend%22%3Bi%3A1%3Bs%3A51%3A%22%5B346270%2C%22G pMhAmBJ8yBtTv93CLvGvYjkuICQ6Yti%22%2C2592000%5D%22 %3B%7D; _csrf-frontend=e5a0b74028c19589821a7c5769a8582d00b0e9f3b cca534c1e8251f9ddee491fa%3A2%3A%7Bi%3A0%3Bs%3A14%3 A%22_csrf-frontend%22%3Bi%3A1%3Bs%3A32%3A%22-jXkGl9-KuJ6G79MaiQmTN3HwdrPNXG_%22%3B%7D; _language=7f5cf297ed446f10eaeccd0de093e834ca0126d7 c47aae8b7f519cb387caefa3a%3A2%3A%7Bi%3A0%3Bs%3A9%3 A%22_language%22%3Bi%3A1%3Bs%3A2%3A%22az%22%3B%7D; advanced-frontend=4aeccdce7a1a475e3b721b1796d7346c; _ga_8D4GYGMNST=GS2.1.s1767020354$o7$g1$t1767020357 $j57$l0$h0" --header "Referer: https://tvseans.az/az/film/2377/atilmis/watch?player=1" --save-name "Abandon 2002" -M format=mkv

    the content even though it's a recording and not a live broadcast, and this is the error Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
    Quote Quote  
  2. To make it simpler:
    Code:
    N_m3u8DL-RE "https://tvseans.az/az/hls/2377/0/index.m3u8?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1N iJ9.eyJleHAiOjE3NjcwMjA0ODF9.PH0zxgU7IlrB2_S0723gW o6LVb_97wCsneZ9Z0jpnys"  --save-name "Abandon 2002" -M format=mkv
    Image
    [Attachment 90503 - Click to enlarge]
    Quote Quote  
  3. Member
    Join Date
    Aug 2023
    Location
    Ukraine
    Search PM
    Originally Posted by sesamap159 View Post
    To make it simpler:
    Code:
    N_m3u8DL-RE "https://tvseans.az/az/hls/2377/0/index.m3u8?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1N iJ9.eyJleHAiOjE3NjcwMjA0ODF9.PH0zxgU7IlrB2_S0723gW o6LVb_97wCsneZ9Z0jpnys"  --save-name "Abandon 2002" -M format=mkv
    I tried, it still says - Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index') You try to download anything and the inscription appears
    Quote Quote  
  4. The problem stems from the m3u8 file; the video duration has a token time limit, resulting in a 00m00s format.

    Image
    [Attachment 90504 - Click to enlarge]
    Quote Quote  
  5. Member
    Join Date
    Aug 2023
    Location
    Ukraine
    Search PM
    Originally Posted by sesamap159 View Post
    The problem stems from the m3u8 file; the video duration has a token time limit, resulting in a 00m00s format.
    I just don't understand what other parameter needs to be added or removed?
    Quote Quote  
  6. Do you have a video master.m3u8 link? It will be easier to download.
    Quote Quote  
  7. Member
    Join Date
    Aug 2023
    Location
    Ukraine
    Search PM
    Originally Posted by sesamap159 View Post
    Do you have a video master.m3u8 link? It will be easier to download.
    #EXTM3U
    #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="Azərbaycanca", DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="az", URI="https://cdn01.koroqlu.com/media/films/2019/11/191119-Abandon_Atilmish_az_en_ru_720p-2003/main/audio/az/index.m3u8"
    #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="Русский", DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="ru", URI="https://cdn01.koroqlu.com/media/films/2019/11/191119-Abandon_Atilmish_az_en_ru_720p-2003/main/audio/ru/index.m3u8"
    #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",NAME="English", DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="en", URI="https://cdn01.koroqlu.com/media/films/2019/11/191119-Abandon_Atilmish_az_en_ru_720p-2003/main/audio/en/index.m3u8"
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1989000,RESOLUTION=1280x720,CODECS= "avc1.66.30,mp4a.40.2",AUDIO="aac"
    https://cdn01.koroqlu.com/media/films/2019/11/191119-Abandon_Atilmish_az_en_ru_720p-20...20p/index.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=889000,RESOLUTION=640x360,CODECS="a vc1.66.30,mp4a.40.2",AUDIO="aac"
    https://cdn01.koroqlu.com/media/films/2019/11/191119-Abandon_Atilmish_az_en_ru_720p-20...60p/index.m3u8

    - I only need the video and all three audio tracks.
    Quote Quote  
  8. 'I only need' access.
    Last edited by LZAA; 29th Dec 2025 at 11:17.
    Quote Quote  
  9. Have you tried using Stream Detector to download the video : https://www.videohelp.com/software/The-Stream-Detector

    In copy stream url copy: select N_M3U8DL-RE
    Quote Quote  
  10. Member
    Join Date
    Aug 2023
    Location
    Ukraine
    Search PM
    Originally Posted by sesamap159 View Post
    Have you tried using Stream Detector to download the video : https://www.videohelp.com/software/The-Stream-Detector

    In copy stream url copy: select N_M3U8DL-RE

    This data - N_m3u8DL-RE "https://tvseans.az/az/hls/2377/0/index.m3u8?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1N iJ9.eyJleHAiOjE3NjcwMjA0ODF9.PH0zxgU7IlrB2_S0723gW o6LVb_97wCsneZ9Z0jpnys" --header "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" --header "Cookie: _ga=GA1.1.2015003564.1766828401; _identity-frontend=471ab06b5a50cc59b994cced6b2506ca7ed716890 0e0e7c6fbbbba3df04a5b1fa%3A2%3A%7Bi%3A0%3Bs%3A18%3 A%22_identity-frontend%22%3Bi%3A1%3Bs%3A51%3A%22%5B346270%2C%22G pMhAmBJ8yBtTv93CLvGvYjkuICQ6Yti%22%2C2592000%5D%22 %3B%7D; _csrf-frontend=e5a0b74028c19589821a7c5769a8582d00b0e9f3b cca534c1e8251f9ddee491fa%3A2%3A%7Bi%3A0%3Bs%3A14%3 A%22_csrf-frontend%22%3Bi%3A1%3Bs%3A32%3A%22-jXkGl9-KuJ6G79MaiQmTN3HwdrPNXG_%22%3B%7D; _language=7f5cf297ed446f10eaeccd0de093e834ca0126d7 c47aae8b7f519cb387caefa3a%3A2%3A%7Bi%3A0%3Bs%3A9%3 A%22_language%22%3Bi%3A1%3Bs%3A2%3A%22az%22%3B%7D; advanced-frontend=4aeccdce7a1a475e3b721b1796d7346c; _ga_8D4GYGMNST=GS2.1.s1767020354$o7$g1$t1767020357 $j57$l0$h0" --header "Referer: https://tvseans.az/az/film/2377/atilmis/watch?player=1" --save-name "Abandon 2002" -M format=mkv is from that program Stream Detector

    https://tvseans.az/az/film/2377/atilmis/watch?player=1
    Quote Quote  
  11. Token with 2 minute expiry
    https://tvseans.az/az/ajax/getcr



    proxy.py
    Code:
    import requests
    import time
    import re
    from flask import Flask, Response, request
    
    app = Flask(__name__)
    
    # CONFIGURATION
    # The Master URL without the token
    MASTER_INDEX = "https://tvseans.az/az/hls/2377/0/index.m3u8"
    TOKEN_API = "https://tvseans.az/az/ajax/getcr"
    HEADERS = {"Referer": "https://tvseans.az/", "User-Agent": "Mozilla/5.0"}
    
    cache = {"token": None, "expiry": 0}
    
    def get_token():
        if cache["token"] and (time.time() - cache["expiry"] < 80):
            return cache["token"]
        try:
            r = requests.get(TOKEN_API, headers=HEADERS, timeout=5).json()
            cache["token"], cache["expiry"] = r['t'], time.time()
            print(f"[*] New Token Acquired: {cache['token'][:20]}...")
            return cache["token"]
        except: return cache["token"]
    
    @app.route('/index.m3u8')
    def master_index():
        # Fetch the real master playlist
        token = get_token()
        resp = requests.get(f"{MASTER_INDEX}?token={token}", headers=HEADERS).text
        
        # Rewrite all URLs in the master playlist to go through this proxy
        # This catches both the Video index and the Audio index URLs
        rewritten = re.sub(r'(https?://[^\s]+)', r'http://127.0.0.1:5000/proxy?url=\1', resp)
        return Response(rewritten, mimetype='application/vnd.apple.mpegurl')
    
    @app.route('/proxy')
    def proxy_playlist_or_segment():
        original_url = request.args.get('url')
        token = get_token()
        
        # Check if we are requesting a playlist (.m3u8) or a data segment (.ts)
        if ".m3u8" in original_url:
            resp = requests.get(f"{original_url}?token={token}", headers=HEADERS).text
            # Rewrite segments inside sub-playlists to point back here
            base_url = original_url.rsplit('/', 1)[0] + '/'
            lines = []
            for line in resp.splitlines():
                if line.endswith(".ts") and not line.startswith("http"):
                    lines.append(f"http://127.0.0.1:5000/proxy?url={base_url}{line}")
                elif line.startswith("http"):
                     lines.append(f"http://127.0.0.1:5000/proxy?url={line}")
                else:
                    lines.append(line)
            return Response("\n".join(lines), mimetype='application/vnd.apple.mpegurl')
        else:
            # It's a .ts segment; stream the binary data
            req = requests.get(f"{original_url}?token={token}", headers=HEADERS, stream=True)
            return Response(req.iter_content(chunk_size=1024*64), content_type=req.headers.get('Content-Type'))
    
    if __name__ == '__main__':
        print("--- MASTER PROXY RUNNING ---")
        print("Point N_m3u8DL-RE to: http://127.0.0.1:5000/index.m3u8")
        app.run(port=5000, threaded=True)
    Code:
    N_m3u8DL-RE "http://127.0.0.1:5000/index.m3u8" --save-name "Abandon_2003" --thread-count 100 -M format=mkv
    Quote Quote  
  12. Member
    Join Date
    Aug 2023
    Location
    Ukraine
    Search PM
    Originally Posted by Frieren View Post
    Token with 2 minute expiry
    https://tvseans.az/az/ajax/getcr



    proxy.py
    Code:
    import requests
    import time
    import re
    from flask import Flask, Response, request
    
    app = Flask(__name__)
    
    # CONFIGURATION
    # The Master URL without the token
    MASTER_INDEX = "https://tvseans.az/az/hls/2377/0/index.m3u8"
    TOKEN_API = "https://tvseans.az/az/ajax/getcr"
    HEADERS = {"Referer": "https://tvseans.az/", "User-Agent": "Mozilla/5.0"}
    
    cache = {"token": None, "expiry": 0}
    
    def get_token():
        if cache["token"] and (time.time() - cache["expiry"] < 80):
            return cache["token"]
        try:
            r = requests.get(TOKEN_API, headers=HEADERS, timeout=5).json()
            cache["token"], cache["expiry"] = r['t'], time.time()
            print(f"[*] New Token Acquired: {cache['token'][:20]}...")
            return cache["token"]
        except: return cache["token"]
    
    @app.route('/index.m3u8')
    def master_index():
        # Fetch the real master playlist
        token = get_token()
        resp = requests.get(f"{MASTER_INDEX}?token={token}", headers=HEADERS).text
        
        # Rewrite all URLs in the master playlist to go through this proxy
        # This catches both the Video index and the Audio index URLs
        rewritten = re.sub(r'(https?://[^\s]+)', r'http://127.0.0.1:5000/proxy?url=\1', resp)
        return Response(rewritten, mimetype='application/vnd.apple.mpegurl')
    
    @app.route('/proxy')
    def proxy_playlist_or_segment():
        original_url = request.args.get('url')
        token = get_token()
        
        # Check if we are requesting a playlist (.m3u8) or a data segment (.ts)
        if ".m3u8" in original_url:
            resp = requests.get(f"{original_url}?token={token}", headers=HEADERS).text
            # Rewrite segments inside sub-playlists to point back here
            base_url = original_url.rsplit('/', 1)[0] + '/'
            lines = []
            for line in resp.splitlines():
                if line.endswith(".ts") and not line.startswith("http"):
                    lines.append(f"http://127.0.0.1:5000/proxy?url={base_url}{line}")
                elif line.startswith("http"):
                     lines.append(f"http://127.0.0.1:5000/proxy?url={line}")
                else:
                    lines.append(line)
            return Response("\n".join(lines), mimetype='application/vnd.apple.mpegurl')
        else:
            # It's a .ts segment; stream the binary data
            req = requests.get(f"{original_url}?token={token}", headers=HEADERS, stream=True)
            return Response(req.iter_content(chunk_size=1024*64), content_type=req.headers.get('Content-Type'))
    
    if __name__ == '__main__':
        print("--- MASTER PROXY RUNNING ---")
        print("Point N_m3u8DL-RE to: http://127.0.0.1:5000/index.m3u8")
        app.run(port=5000, threaded=True)
    Code:
    N_m3u8DL-RE "http://127.0.0.1:5000/index.m3u8" --save-name "Abandon_2003" --thread-count 100 -M format=mkv

    Thanks. It's a shame you wrote the script in Python, I switched to PowerShell, I'll have to struggle a bit to make a similar script in PowerShell!
    Quote Quote  
  13. Originally Posted by nadya86 View Post
    Originally Posted by Frieren View Post
    Token with 2 minute expiry
    https://tvseans.az/az/ajax/getcr



    proxy.py
    Code:
    import requests
    import time
    import re
    from flask import Flask, Response, request
    
    app = Flask(__name__)
    
    # CONFIGURATION
    # The Master URL without the token
    MASTER_INDEX = "https://tvseans.az/az/hls/2377/0/index.m3u8"
    TOKEN_API = "https://tvseans.az/az/ajax/getcr"
    HEADERS = {"Referer": "https://tvseans.az/", "User-Agent": "Mozilla/5.0"}
    
    cache = {"token": None, "expiry": 0}
    
    def get_token():
        if cache["token"] and (time.time() - cache["expiry"] < 80):
            return cache["token"]
        try:
            r = requests.get(TOKEN_API, headers=HEADERS, timeout=5).json()
            cache["token"], cache["expiry"] = r['t'], time.time()
            print(f"[*] New Token Acquired: {cache['token'][:20]}...")
            return cache["token"]
        except: return cache["token"]
    
    @app.route('/index.m3u8')
    def master_index():
        # Fetch the real master playlist
        token = get_token()
        resp = requests.get(f"{MASTER_INDEX}?token={token}", headers=HEADERS).text
        
        # Rewrite all URLs in the master playlist to go through this proxy
        # This catches both the Video index and the Audio index URLs
        rewritten = re.sub(r'(https?://[^\s]+)', r'http://127.0.0.1:5000/proxy?url=\1', resp)
        return Response(rewritten, mimetype='application/vnd.apple.mpegurl')
    
    @app.route('/proxy')
    def proxy_playlist_or_segment():
        original_url = request.args.get('url')
        token = get_token()
        
        # Check if we are requesting a playlist (.m3u8) or a data segment (.ts)
        if ".m3u8" in original_url:
            resp = requests.get(f"{original_url}?token={token}", headers=HEADERS).text
            # Rewrite segments inside sub-playlists to point back here
            base_url = original_url.rsplit('/', 1)[0] + '/'
            lines = []
            for line in resp.splitlines():
                if line.endswith(".ts") and not line.startswith("http"):
                    lines.append(f"http://127.0.0.1:5000/proxy?url={base_url}{line}")
                elif line.startswith("http"):
                     lines.append(f"http://127.0.0.1:5000/proxy?url={line}")
                else:
                    lines.append(line)
            return Response("\n".join(lines), mimetype='application/vnd.apple.mpegurl')
        else:
            # It's a .ts segment; stream the binary data
            req = requests.get(f"{original_url}?token={token}", headers=HEADERS, stream=True)
            return Response(req.iter_content(chunk_size=1024*64), content_type=req.headers.get('Content-Type'))
    
    if __name__ == '__main__':
        print("--- MASTER PROXY RUNNING ---")
        print("Point N_m3u8DL-RE to: http://127.0.0.1:5000/index.m3u8")
        app.run(port=5000, threaded=True)
    Code:
    N_m3u8DL-RE "http://127.0.0.1:5000/index.m3u8" --save-name "Abandon_2003" --thread-count 100 -M format=mkv

    Thanks. It's a shame you wrote the script in Python, I switched to PowerShell, I'll have to struggle a bit to make a similar script in PowerShell!
    proxy.ps1
    Code:
    $MasterUrl = "https://tvseans.az/az/hls/2377/0/index.m3u8"
    $TokenApi = "https://tvseans.az/az/ajax/getcr"
    $Port = 5000
    $Listener = New-Object System.Net.HttpListener
    $Listener.Prefixes.Add("http://127.0.0.1:$Port/")
    $Listener.Start()
    
    $Cache = @{ Token = $null; Expiry = 0 }
    
    function Get-FreshToken {
        $now = [DateTimeOffset]::Now.ToUnixTimeSeconds()
        if ($Cache.Token -and ($now - $Cache.Expiry -lt 80)) {
            return $Cache.Token
        }
        try {
            $resp = Invoke-RestMethod -Uri $TokenApi -Headers @{"Referer"="https://tvseans.az/"}
            $Cache.Token = $resp.t
            $Cache.Expiry = $now
            Write-Host "[*] New Token Acquired" -ForegroundColor Cyan
            return $Cache.Token
        } catch { return $Cache.Token }
    }
    
    Write-Host "--- PowerShell Master Proxy Active ---" -ForegroundColor Green
    Write-Host "Listening on http://127.0.0.1:$Port/index.m3u8"
    Write-Host "Press Ctrl+C to stop.`n"
    
    try {
        while ($Listener.IsListening) {
            $Context = $Listener.GetContext()
            $Request = $Context.Request
            $Response = $Context.Response
            $LocalPath = $Request.Url.LocalPath
            $QueryUrl = $Request.QueryString["url"]
    
            if ($LocalPath -eq "/index.m3u8") {
                # 1. Handle Master Playlist
                $token = Get-FreshToken
                $content = Invoke-RestMethod -Uri "$MasterUrl?token=$token" -Headers @{"Referer"="https://tvseans.az/"}
                # Rewrite all absolute URLs to go through our proxy
                $rewritten = $content -replace '(https?://[^\s\r\n]+)', "http://127.0.0.1:$Port/proxy?url=`$1"
                $buffer = [System.Text.Encoding]::UTF8.GetBytes($rewritten)
                $Response.ContentType = "application/vnd.apple.mpegurl"
                $Response.OutputStream.Write($buffer, 0, $buffer.Length)
            }
            elseif ($LocalPath -eq "/proxy" -and $QueryUrl) {
                $token = Get-FreshToken
                if ($QueryUrl -like "*.m3u8*") {
                    # 2. Handle Sub-Playlists (Video/Audio)
                    $content = Invoke-RestMethod -Uri "$QueryUrl?token=$token" -Headers @{"Referer"="https://tvseans.az/"}
                    $baseUrl = $QueryUrl.Substring(0, $QueryUrl.LastIndexOf('/') + 1)
                    
                    # Rewrite relative .ts paths to absolute proxy paths
                    $lines = $content -split "`r?`n"
                    $newLines = foreach ($line in $lines) {
                        if ($line -like "*.ts*" -and $line -notlike "http*") {
                            "http://127.0.0.1:$Port/proxy?url=$baseUrl$line"
                        } elseif ($line -like "http*") {
                            "http://127.0.0.1:$Port/proxy?url=$line"
                        } else { $line }
                    }
                    $buffer = [System.Text.Encoding]::UTF8.GetBytes(($newLines -join "`n"))
                    $Response.ContentType = "application/vnd.apple.mpegurl"
                    $Response.OutputStream.Write($buffer, 0, $buffer.Length)
                } else {
                    # 3. Handle Binary Segments (.ts)
                    try {
                        $data = Invoke-WebRequest -Uri "$QueryUrl?token=$token" -Headers @{"Referer"="https://tvseans.az/"} -UseBasicParsing
                        $Response.ContentType = "video/MP2T"
                        $Response.OutputStream.Write($data.Content, 0, $data.Content.Length)
                    } catch { $Response.StatusCode = 404 }
                }
            }
            $Response.Close()
        }
    } finally {
        $Listener.Stop()
    }
    Quote Quote  
  14. Member
    Join Date
    Aug 2023
    Location
    Ukraine
    Search PM
    Originally Posted by Frieren View Post
    Originally Posted by nadya86 View Post
    Originally Posted by Frieren View Post
    Token with 2 minute expiry
    https://tvseans.az/az/ajax/getcr



    proxy.py
    Code:
    import requests
    import time
    import re
    from flask import Flask, Response, request
    
    app = Flask(__name__)
    
    # CONFIGURATION
    # The Master URL without the token
    MASTER_INDEX = "https://tvseans.az/az/hls/2377/0/index.m3u8"
    TOKEN_API = "https://tvseans.az/az/ajax/getcr"
    HEADERS = {"Referer": "https://tvseans.az/", "User-Agent": "Mozilla/5.0"}
    
    cache = {"token": None, "expiry": 0}
    
    def get_token():
        if cache["token"] and (time.time() - cache["expiry"] < 80):
            return cache["token"]
        try:
            r = requests.get(TOKEN_API, headers=HEADERS, timeout=5).json()
            cache["token"], cache["expiry"] = r['t'], time.time()
            print(f"[*] New Token Acquired: {cache['token'][:20]}...")
            return cache["token"]
        except: return cache["token"]
    
    @app.route('/index.m3u8')
    def master_index():
        # Fetch the real master playlist
        token = get_token()
        resp = requests.get(f"{MASTER_INDEX}?token={token}", headers=HEADERS).text
        
        # Rewrite all URLs in the master playlist to go through this proxy
        # This catches both the Video index and the Audio index URLs
        rewritten = re.sub(r'(https?://[^\s]+)', r'http://127.0.0.1:5000/proxy?url=\1', resp)
        return Response(rewritten, mimetype='application/vnd.apple.mpegurl')
    
    @app.route('/proxy')
    def proxy_playlist_or_segment():
        original_url = request.args.get('url')
        token = get_token()
        
        # Check if we are requesting a playlist (.m3u8) or a data segment (.ts)
        if ".m3u8" in original_url:
            resp = requests.get(f"{original_url}?token={token}", headers=HEADERS).text
            # Rewrite segments inside sub-playlists to point back here
            base_url = original_url.rsplit('/', 1)[0] + '/'
            lines = []
            for line in resp.splitlines():
                if line.endswith(".ts") and not line.startswith("http"):
                    lines.append(f"http://127.0.0.1:5000/proxy?url={base_url}{line}")
                elif line.startswith("http"):
                     lines.append(f"http://127.0.0.1:5000/proxy?url={line}")
                else:
                    lines.append(line)
            return Response("\n".join(lines), mimetype='application/vnd.apple.mpegurl')
        else:
            # It's a .ts segment; stream the binary data
            req = requests.get(f"{original_url}?token={token}", headers=HEADERS, stream=True)
            return Response(req.iter_content(chunk_size=1024*64), content_type=req.headers.get('Content-Type'))
    
    if __name__ == '__main__':
        print("--- MASTER PROXY RUNNING ---")
        print("Point N_m3u8DL-RE to: http://127.0.0.1:5000/index.m3u8")
        app.run(port=5000, threaded=True)
    Code:
    N_m3u8DL-RE "http://127.0.0.1:5000/index.m3u8" --save-name "Abandon_2003" --thread-count 100 -M format=mkv

    Thanks. It's a shame you wrote the script in Python, I switched to PowerShell, I'll have to struggle a bit to make a similar script in PowerShell!
    proxy.ps1
    Code:
    $MasterUrl = "https://tvseans.az/az/hls/2377/0/index.m3u8"
    $TokenApi = "https://tvseans.az/az/ajax/getcr"
    $Port = 5000
    $Listener = New-Object System.Net.HttpListener
    $Listener.Prefixes.Add("http://127.0.0.1:$Port/")
    $Listener.Start()
    
    $Cache = @{ Token = $null; Expiry = 0 }
    
    function Get-FreshToken {
        $now = [DateTimeOffset]::Now.ToUnixTimeSeconds()
        if ($Cache.Token -and ($now - $Cache.Expiry -lt 80)) {
            return $Cache.Token
        }
        try {
            $resp = Invoke-RestMethod -Uri $TokenApi -Headers @{"Referer"="https://tvseans.az/"}
            $Cache.Token = $resp.t
            $Cache.Expiry = $now
            Write-Host "[*] New Token Acquired" -ForegroundColor Cyan
            return $Cache.Token
        } catch { return $Cache.Token }
    }
    
    Write-Host "--- PowerShell Master Proxy Active ---" -ForegroundColor Green
    Write-Host "Listening on http://127.0.0.1:$Port/index.m3u8"
    Write-Host "Press Ctrl+C to stop.`n"
    
    try {
        while ($Listener.IsListening) {
            $Context = $Listener.GetContext()
            $Request = $Context.Request
            $Response = $Context.Response
            $LocalPath = $Request.Url.LocalPath
            $QueryUrl = $Request.QueryString["url"]
    
            if ($LocalPath -eq "/index.m3u8") {
                # 1. Handle Master Playlist
                $token = Get-FreshToken
                $content = Invoke-RestMethod -Uri "$MasterUrl?token=$token" -Headers @{"Referer"="https://tvseans.az/"}
                # Rewrite all absolute URLs to go through our proxy
                $rewritten = $content -replace '(https?://[^\s\r\n]+)', "http://127.0.0.1:$Port/proxy?url=`$1"
                $buffer = [System.Text.Encoding]::UTF8.GetBytes($rewritten)
                $Response.ContentType = "application/vnd.apple.mpegurl"
                $Response.OutputStream.Write($buffer, 0, $buffer.Length)
            }
            elseif ($LocalPath -eq "/proxy" -and $QueryUrl) {
                $token = Get-FreshToken
                if ($QueryUrl -like "*.m3u8*") {
                    # 2. Handle Sub-Playlists (Video/Audio)
                    $content = Invoke-RestMethod -Uri "$QueryUrl?token=$token" -Headers @{"Referer"="https://tvseans.az/"}
                    $baseUrl = $QueryUrl.Substring(0, $QueryUrl.LastIndexOf('/') + 1)
                    
                    # Rewrite relative .ts paths to absolute proxy paths
                    $lines = $content -split "`r?`n"
                    $newLines = foreach ($line in $lines) {
                        if ($line -like "*.ts*" -and $line -notlike "http*") {
                            "http://127.0.0.1:$Port/proxy?url=$baseUrl$line"
                        } elseif ($line -like "http*") {
                            "http://127.0.0.1:$Port/proxy?url=$line"
                        } else { $line }
                    }
                    $buffer = [System.Text.Encoding]::UTF8.GetBytes(($newLines -join "`n"))
                    $Response.ContentType = "application/vnd.apple.mpegurl"
                    $Response.OutputStream.Write($buffer, 0, $buffer.Length)
                } else {
                    # 3. Handle Binary Segments (.ts)
                    try {
                        $data = Invoke-WebRequest -Uri "$QueryUrl?token=$token" -Headers @{"Referer"="https://tvseans.az/"} -UseBasicParsing
                        $Response.ContentType = "video/MP2T"
                        $Response.OutputStream.Write($data.Content, 0, $data.Content.Length)
                    } catch { $Response.StatusCode = 404 }
                }
            }
            $Response.Close()
        }
    } finally {
        $Listener.Stop()
    }
    Thank you very much!
    Quote Quote  
  15. Member
    Join Date
    Aug 2023
    Location
    Ukraine
    Search PM
    --- PowerShell Master Proxy Active ---
    Listening on http://127.0.0.1:5000/index.m3u8
    Press Ctrl+C to stop.[*] New Token Acquired
    ERROR: Invoke-RestMethod : Invalid URI: The hostname could not be parsed.
    proxy.ps1 (39, 24): ERROR: At Line: 39 char: 24
    ERROR: + ... $content = Invoke-RestMethod -Uri "$MasterUrl?token=$token" -Headers ...
    ERROR: + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~
    ERROR: + CategoryInfo : NotSpecified: ( [Invoke-RestMethod], UriFormatException
    ERROR: + FullyQualifiedErrorId : System.UriFormatException,Microsoft.PowerShell.Com mands.InvokeRestMethodCommand
    ERROR:
    Quote Quote  
  16. Originally Posted by nadya86 View Post
    --- PowerShell Master Proxy Active ---
    Listening on http://127.0.0.1:5000/index.m3u8
    Press Ctrl+C to stop.[*] New Token Acquired
    ERROR: Invoke-RestMethod : Invalid URI: The hostname could not be parsed.
    proxy.ps1 (39, 24): ERROR: At Line: 39 char: 24
    ERROR: + ... $content = Invoke-RestMethod -Uri "$MasterUrl?token=$token" -Headers ...
    ERROR: + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~
    ERROR: + CategoryInfo : NotSpecified: ( [Invoke-RestMethod], UriFormatException
    ERROR: + FullyQualifiedErrorId : System.UriFormatException,Microsoft.PowerShell.Com mands.InvokeRestMethodCommand
    ERROR:
    Fix

    Code:
    $ErrorActionPreference = "Stop"
    
    # 1. Clean Configuration
    $RawMaster = "https://tvseans.az/az/hls/2377/0/index.m3u8"
    $MasterString = [regex]::Replace($RawMaster, "[^a-zA-Z0-9\/\.\:\-]", "").Trim()
    $TokenApi = "https://tvseans.az/az/ajax/getcr"
    
    # --- REQUIRED HEADERS ---
    # Note: If you still get 401 errors, paste your browser Cookie below.
    $GlobalHeaders = @{
        "Referer"    = "https://tvseans.az/"
        "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"
        # "Cookie"   = "PHPSESSID=your_session_id_here" 
    }
    
    $Port = 5000
    $Listener = New-Object System.Net.HttpListener
    $Listener.Prefixes.Add("http://127.0.0.1:$Port/")
    $Listener.Start()
    
    $Cache = @{ Token = $null; Expiry = 0 }
    
    function Get-FreshToken {
        $now = [DateTimeOffset]::Now.ToUnixTimeSeconds()
        if ($Cache.Token -and ($now - $Cache.Expiry -lt 80)) { return $Cache.Token }
        try {
            $resp = Invoke-RestMethod -Uri $TokenApi -Headers $GlobalHeaders -Method Get
            # Fixed Regex: Removed the invalid backslash before the underscore
            $Cache.Token = [regex]::Replace($resp.t, "[^a-zA-Z0-9\.\-_]", "").Trim()
            $Cache.Expiry = $now
            Write-Host "[*] Token Refreshed" -ForegroundColor Cyan
            return $Cache.Token
        } catch { 
            Write-Host "[!] Token API Error: $($_.Exception.Message)" -ForegroundColor Red
            return $Cache.Token 
        }
    }
    
    Write-Host "--- Master Proxy Active ---" -ForegroundColor Green
    Write-Host "Local URL: http://127.0.0.1:$Port/index.m3u8"
    
    try {
        while ($Listener.IsListening) {
            $Context = $Listener.GetContext()
            $Request = $Context.Request
            $Response = $Context.Response
            
            if ($Request.Url.LocalPath -eq "/index.m3u8") {
                $token = Get-FreshToken
                $ub = New-Object System.UriBuilder($MasterString)
                $ub.Query = "token=$token"
                
                $content = Invoke-RestMethod -Uri $ub.Uri -Headers $GlobalHeaders
                $rewritten = $content -replace '(https?://[^\s\r\n]+)', "http://127.0.0.1:$Port/proxy?url=`$1"
                
                $buffer = [System.Text.Encoding]::UTF8.GetBytes($rewritten)
                $Response.ContentType = "application/vnd.apple.mpegurl"
                $Response.OutputStream.Write($buffer, 0, $buffer.Length)
            }
            elseif ($Request.Url.LocalPath -eq "/proxy") {
                $targetBase = $Request.QueryString["url"]
                $token = Get-FreshToken
                
                $ub = New-Object System.UriBuilder($targetBase)
                $existingQuery = $ub.Query.Replace("?", "")
                $ub.Query = if ($existingQuery) { "$existingQuery&token=$token" } else { "token=$token" }
    
                if ($targetBase -like "*.m3u8*") {
                    $content = Invoke-RestMethod -Uri $ub.Uri -Headers $GlobalHeaders
                    $baseUrl = $targetBase.Substring(0, $targetBase.LastIndexOf('/') + 1)
                    $lines = $content -split "`r?`n"
                    $newLines = foreach ($line in $lines) {
                        if ($line -like "*.ts*" -and $line -notlike "http*") {
                            "http://127.0.0.1:$Port/proxy?url=$($baseUrl)$($line)"
                        } elseif ($line -like "http*") {
                            "http://127.0.0.1:$Port/proxy?url=$($line)"
                        } else { $line }
                    }
                    $buffer = [System.Text.Encoding]::UTF8.GetBytes(($newLines -join "`n"))
                    $Response.ContentType = "application/vnd.apple.mpegurl"
                    $Response.OutputStream.Write($buffer, 0, $buffer.Length)
                } else {
                    # --- FAST BINARY DOWNLOAD ---
                    # Using a WebClient for better binary performance than Invoke-WebRequest
                    try {
                        $wc = New-Object System.Net.WebClient
                        foreach ($key in $GlobalHeaders.Keys) { $wc.Headers.Add($key, $GlobalHeaders[$key]) }
                        $data = $wc.DownloadData($ub.Uri)
                        $Response.OutputStream.Write($data, 0, $data.Length)
                    } catch {
                        $Response.StatusCode = 500
                    }
                }
            }
            $Response.Close()
        }
    } finally {
        $Listener.Stop()
    }
    Quote Quote  
  17. Member
    Join Date
    Aug 2023
    Location
    Ukraine
    Search PM
    Originally Posted by Frieren View Post
    Originally Posted by nadya86 View Post
    --- PowerShell Master Proxy Active ---
    Listening on http://127.0.0.1:5000/index.m3u8
    Press Ctrl+C to stop.[*] New Token Acquired
    ERROR: Invoke-RestMethod : Invalid URI: The hostname could not be parsed.
    proxy.ps1 (39, 24): ERROR: At Line: 39 char: 24
    ERROR: + ... $content = Invoke-RestMethod -Uri "$MasterUrl?token=$token" -Headers ...
    ERROR: + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~
    ERROR: + CategoryInfo : NotSpecified: ( [Invoke-RestMethod], UriFormatException
    ERROR: + FullyQualifiedErrorId : System.UriFormatException,Microsoft.PowerShell.Com mands.InvokeRestMethodCommand
    ERROR:
    Fix

    Code:
    $ErrorActionPreference = "Stop"
    
    # 1. Clean Configuration
    $RawMaster = "https://tvseans.az/az/hls/2377/0/index.m3u8"
    $MasterString = [regex]::Replace($RawMaster, "[^a-zA-Z0-9\/\.\:\-]", "").Trim()
    $TokenApi = "https://tvseans.az/az/ajax/getcr"
    
    # --- REQUIRED HEADERS ---
    # Note: If you still get 401 errors, paste your browser Cookie below.
    $GlobalHeaders = @{
        "Referer"    = "https://tvseans.az/"
        "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"
        # "Cookie"   = "PHPSESSID=your_session_id_here" 
    }
    
    $Port = 5000
    $Listener = New-Object System.Net.HttpListener
    $Listener.Prefixes.Add("http://127.0.0.1:$Port/")
    $Listener.Start()
    
    $Cache = @{ Token = $null; Expiry = 0 }
    
    function Get-FreshToken {
        $now = [DateTimeOffset]::Now.ToUnixTimeSeconds()
        if ($Cache.Token -and ($now - $Cache.Expiry -lt 80)) { return $Cache.Token }
        try {
            $resp = Invoke-RestMethod -Uri $TokenApi -Headers $GlobalHeaders -Method Get
            # Fixed Regex: Removed the invalid backslash before the underscore
            $Cache.Token = [regex]::Replace($resp.t, "[^a-zA-Z0-9\.\-_]", "").Trim()
            $Cache.Expiry = $now
            Write-Host "[*] Token Refreshed" -ForegroundColor Cyan
            return $Cache.Token
        } catch { 
            Write-Host "[!] Token API Error: $($_.Exception.Message)" -ForegroundColor Red
            return $Cache.Token 
        }
    }
    
    Write-Host "--- Master Proxy Active ---" -ForegroundColor Green
    Write-Host "Local URL: http://127.0.0.1:$Port/index.m3u8"
    
    try {
        while ($Listener.IsListening) {
            $Context = $Listener.GetContext()
            $Request = $Context.Request
            $Response = $Context.Response
            
            if ($Request.Url.LocalPath -eq "/index.m3u8") {
                $token = Get-FreshToken
                $ub = New-Object System.UriBuilder($MasterString)
                $ub.Query = "token=$token"
                
                $content = Invoke-RestMethod -Uri $ub.Uri -Headers $GlobalHeaders
                $rewritten = $content -replace '(https?://[^\s\r\n]+)', "http://127.0.0.1:$Port/proxy?url=`$1"
                
                $buffer = [System.Text.Encoding]::UTF8.GetBytes($rewritten)
                $Response.ContentType = "application/vnd.apple.mpegurl"
                $Response.OutputStream.Write($buffer, 0, $buffer.Length)
            }
            elseif ($Request.Url.LocalPath -eq "/proxy") {
                $targetBase = $Request.QueryString["url"]
                $token = Get-FreshToken
                
                $ub = New-Object System.UriBuilder($targetBase)
                $existingQuery = $ub.Query.Replace("?", "")
                $ub.Query = if ($existingQuery) { "$existingQuery&token=$token" } else { "token=$token" }
    
                if ($targetBase -like "*.m3u8*") {
                    $content = Invoke-RestMethod -Uri $ub.Uri -Headers $GlobalHeaders
                    $baseUrl = $targetBase.Substring(0, $targetBase.LastIndexOf('/') + 1)
                    $lines = $content -split "`r?`n"
                    $newLines = foreach ($line in $lines) {
                        if ($line -like "*.ts*" -and $line -notlike "http*") {
                            "http://127.0.0.1:$Port/proxy?url=$($baseUrl)$($line)"
                        } elseif ($line -like "http*") {
                            "http://127.0.0.1:$Port/proxy?url=$($line)"
                        } else { $line }
                    }
                    $buffer = [System.Text.Encoding]::UTF8.GetBytes(($newLines -join "`n"))
                    $Response.ContentType = "application/vnd.apple.mpegurl"
                    $Response.OutputStream.Write($buffer, 0, $buffer.Length)
                } else {
                    # --- FAST BINARY DOWNLOAD ---
                    # Using a WebClient for better binary performance than Invoke-WebRequest
                    try {
                        $wc = New-Object System.Net.WebClient
                        foreach ($key in $GlobalHeaders.Keys) { $wc.Headers.Add($key, $GlobalHeaders[$key]) }
                        $data = $wc.DownloadData($ub.Uri)
                        $Response.OutputStream.Write($data, 0, $data.Length)
                    } catch {
                        $Response.StatusCode = 500
                    }
                }
            }
            $Response.Close()
        }
    } finally {
        $Listener.Stop()
    }
    Thank you very much!
    Quote Quote  
  18. Originally Posted by Frieren View Post
    Token with 2 minute expiry
    https://tvseans.az/az/ajax/getcr



    proxy.py
    Code:
    import requests
    import time
    import re
    from flask import Flask, Response, request
    
    app = Flask(__name__)
    
    # CONFIGURATION
    # The Master URL without the token
    MASTER_INDEX = "https://tvseans.az/az/hls/2377/0/index.m3u8"
    TOKEN_API = "https://tvseans.az/az/ajax/getcr"
    HEADERS = {"Referer": "https://tvseans.az/", "User-Agent": "Mozilla/5.0"}
    
    cache = {"token": None, "expiry": 0}
    
    def get_token():
        if cache["token"] and (time.time() - cache["expiry"] < 80):
            return cache["token"]
        try:
            r = requests.get(TOKEN_API, headers=HEADERS, timeout=5).json()
            cache["token"], cache["expiry"] = r['t'], time.time()
            print(f"[*] New Token Acquired: {cache['token'][:20]}...")
            return cache["token"]
        except: return cache["token"]
    
    @app.route('/index.m3u8')
    def master_index():
        # Fetch the real master playlist
        token = get_token()
        resp = requests.get(f"{MASTER_INDEX}?token={token}", headers=HEADERS).text
        
        # Rewrite all URLs in the master playlist to go through this proxy
        # This catches both the Video index and the Audio index URLs
        rewritten = re.sub(r'(https?://[^\s]+)', r'http://127.0.0.1:5000/proxy?url=\1', resp)
        return Response(rewritten, mimetype='application/vnd.apple.mpegurl')
    
    @app.route('/proxy')
    def proxy_playlist_or_segment():
        original_url = request.args.get('url')
        token = get_token()
        
        # Check if we are requesting a playlist (.m3u8) or a data segment (.ts)
        if ".m3u8" in original_url:
            resp = requests.get(f"{original_url}?token={token}", headers=HEADERS).text
            # Rewrite segments inside sub-playlists to point back here
            base_url = original_url.rsplit('/', 1)[0] + '/'
            lines = []
            for line in resp.splitlines():
                if line.endswith(".ts") and not line.startswith("http"):
                    lines.append(f"http://127.0.0.1:5000/proxy?url={base_url}{line}")
                elif line.startswith("http"):
                     lines.append(f"http://127.0.0.1:5000/proxy?url={line}")
                else:
                    lines.append(line)
            return Response("\n".join(lines), mimetype='application/vnd.apple.mpegurl')
        else:
            # It's a .ts segment; stream the binary data
            req = requests.get(f"{original_url}?token={token}", headers=HEADERS, stream=True)
            return Response(req.iter_content(chunk_size=1024*64), content_type=req.headers.get('Content-Type'))
    
    if __name__ == '__main__':
        print("--- MASTER PROXY RUNNING ---")
        print("Point N_m3u8DL-RE to: http://127.0.0.1:5000/index.m3u8")
        app.run(port=5000, threaded=True)
    Code:
    N_m3u8DL-RE "http://127.0.0.1:5000/index.m3u8" --save-name "Abandon_2003" --thread-count 100 -M format=mkv
    wow impressive
    there are things you don't see and learn anywhere and I'm learning it for free
    thanks a lot Frieren.. amazing solution
    Quote Quote  
  19. Member
    Join Date
    Aug 2023
    Location
    Ukraine
    Search PM
    Thank you very much!
    Quote Quote  
  20. You can download TikTok videos using IDM : https://www.internetdownloadmanager.com/
    Quote Quote  
  21. yt-dlp --referer https://www.tiktok.com/ --add-header "Cookie: ttwid=1%7CuM0rklYgjxZTNxWsF17zesEEGfra2MjSNH3_6D4f rIk%7C1767171164%7C953d80f41bbd8a8f9b2d59fe84114b7 e66cb55daa6fe763bcd7e9cff56d89b0c; tt_csrf_token=D8scpWak-MoLx3w9xRnzoDDdEBHYZd9vcbfs; tt_chain_token=mGFC2/1z0ezmcXQFFjX41g==; msToken=HA-KbSvglAfeZduOsiENxGqzLVF75YCRZmNERMLp9dYKPhnjKuhDc e5ZIwbhHj0QvJr9DitqgyZGYAlMfvHLqH6pP-x3EFK8KrvU7O4NDVsAI1Ii29rwXfH9OZ8Bezgi_dZO2MsTsA== " "https://v16-webapp-prime.tiktok.com/video/tos/useast2a/tos-useast2a-ve-0068c002/ow9gIGlEREiAwJmP9rIQtBBnk0uiiBZtBQnevf/?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd= 0%7C0%7C0%7C&cv=1&br=2488&bt=1244&cs=0&ds=2&ft=I~d a4os3D12Nviq9Z.IxROyNJlBF-UjNS1opiX&mime_type=video_mp4&qs=0&rc=NGg3ZTM7aGZm OzM4Zzc3OUBpMzs5ZXc5cnN1eTMzNzczM0BhLV42NC5fXzAxLz AyYzI0YSNrLTVlMmQ0cHJgLS1kMTZzcw%3D%3D&btag=e00088 000&expire=1767344271&l=20251231165707C3FC5556DF96 B062A391&ply_type=2&policy=2&signature=b7a75947944 c9529577d799f343ac7dd&tk=tt_chain_token"
    Deprecated Feature: Passing cookies as a header is a potential security risk; they will be scoped to the domain of the downloaded urls. Please consider loading cookies from a file or browser instead.
    [generic] Extracting URL: https://v16-webapp-prime.tiktok.com/video/tos/useast2a/tos-useast2a-ve-0068c002/ow9gIG...tt_chain_token
    [generic] ?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd= 0|0|0|&cv=1&br=2488&bt=1244&cs=0&ds=2&ft=I~da4os3D 12Nviq9Z: Downloading webpage
    [info] ?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd= 0|0|0|&cv=1&br=2488&bt=1244&cs=0&ds=2&ft=I~da4os3D 12Nviq9Z: Downloading 1 format(s): mp4
    [download] Destination: ow9gIGlEREiAwJmP9rIQtBBnk0uiiBZtBQnevf [?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd= 0|0|0|&cv=1&br=2488&bt=1244&cs=0&ds=2&ft=I~da4os3D 12Nviq9Z].mp4
    [download] 100% of 6.57MiB in 00:00:03 at 1.66MiB/s
    Quote Quote  
  22. you can use emojis or gifs instead
    Quote Quote  
  23. Originally Posted by LZAA View Post
    yt-dlp --referer https://www.tiktok.com/ --add-header "Cookie: ttwid=1%7CuM0rklYgjxZTNxWsF17zesEEGfra2MjSNH3_6D4f rIk%7C1767171164%7C953d80f41bbd8a8f9b2d59fe84114b7 e66cb55daa6fe763bcd7e9cff56d89b0c; tt_csrf_token=D8scpWak-MoLx3w9xRnzoDDdEBHYZd9vcbfs; tt_chain_token=mGFC2/1z0ezmcXQFFjX41g==; msToken=HA-KbSvglAfeZduOsiENxGqzLVF75YCRZmNERMLp9dYKPhnjKuhDc e5ZIwbhHj0QvJr9DitqgyZGYAlMfvHLqH6pP-x3EFK8KrvU7O4NDVsAI1Ii29rwXfH9OZ8Bezgi_dZO2MsTsA== " "https://v16-webapp-prime.tiktok.com/video/tos/useast2a/tos-useast2a-ve-0068c002/ow9gIGlEREiAwJmP9rIQtBBnk0uiiBZtBQnevf/?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd= 0%7C0%7C0%7C&cv=1&br=2488&bt=1244&cs=0&ds=2&ft=I~d a4os3D12Nviq9Z.IxROyNJlBF-UjNS1opiX&mime_type=video_mp4&qs=0&rc=NGg3ZTM7aGZm OzM4Zzc3OUBpMzs5ZXc5cnN1eTMzNzczM0BhLV42NC5fXzAxLz AyYzI0YSNrLTVlMmQ0cHJgLS1kMTZzcw%3D%3D&btag=e00088 000&expire=1767344271&l=20251231165707C3FC5556DF96 B062A391&ply_type=2&policy=2&signature=b7a75947944 c9529577d799f343ac7dd&tk=tt_chain_token"
    Deprecated Feature: Passing cookies as a header is a potential security risk; they will be scoped to the domain of the downloaded urls. Please consider loading cookies from a file or browser instead.
    [generic] Extracting URL: https://v16-webapp-prime.tiktok.com/video/tos/useast2a/tos-useast2a-ve-0068c002/ow9gIG...tt_chain_token
    [generic] ?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd= 0|0|0|&cv=1&br=2488&bt=1244&cs=0&ds=2&ft=I~da4os3D 12Nviq9Z: Downloading webpage
    [info] ?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd= 0|0|0|&cv=1&br=2488&bt=1244&cs=0&ds=2&ft=I~da4os3D 12Nviq9Z: Downloading 1 format(s): mp4
    [download] Destination: ow9gIGlEREiAwJmP9rIQtBBnk0uiiBZtBQnevf [?a=1988&bti=ODszNWYuMDE6&ch=0&cr=3&dr=0&lr=all&cd= 0|0|0|&cv=1&br=2488&bt=1244&cs=0&ds=2&ft=I~da4os3D 12Nviq9Z].mp4
    [download] 100% of 6.57MiB in 00:00:03 at 1.66MiB/s
    that's my present for you, my friend
    Quote Quote  
  24. Member
    Join Date
    Aug 2023
    Location
    Ukraine
    Search PM
    I want to download from
    Code:
    https://www.youtube.com/watch?v=d9eFHjTSR6Y
    using the program yt-dlp.exe

    Image
    [Attachment 90555 - Click to enlarge]


    position under code 96 (27.84Gib 5574k) but it does not load, instead a video under code 137 (11.38Gib 2278k) loads, and so on with all videos on this service. Question, why?
    Quote Quote  
  25. Frieren.

    Happy New Year!

    nadya86.

    yt-dlp -f 96 https://www.youtube.com/watch?v=d9eFHjTSR6Y
    [youtube] Extracting URL: https://www.youtube.com/watch?v=d9eFHjTSR6Y
    [youtube] d9eFHjTSR6Y: Downloading webpage
    WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one
    [youtube] d9eFHjTSR6Y: Downloading android sdkless player API JSON
    [youtube] d9eFHjTSR6Y: Downloading web safari player API JSON
    WARNING: [youtube] d9eFHjTSR6Y: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details
    [youtube] d9eFHjTSR6Y: Downloading m3u8 information
    WARNING: [youtube] d9eFHjTSR6Y: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details
    [info] d9eFHjTSR6Y: Downloading 1 format(s): 96
    [download] Sleeping 5.00 seconds as required by the site...
    [hlsnative] Downloading m3u8 manifest
    [hlsnative] Total fragments: 8581
    [download] Destination: Magic's Biggest Secrets Revealed [d9eFHjTSR6Y].mp4
    [download] 0.2% of ~ 15.62GiB at 1.00MiB/s ETA 06:25:27 (frag 15/8581)
    ...
    Quote Quote  
  26. Member
    Join Date
    Aug 2023
    Location
    Ukraine
    Search PM
    General
    Unique ID : 326500602048786899183171211230101573230 (0xF5A1BA87CC6FDEB304332FC4AE1F0E6E)
    Complete name : E:\Magic's Biggest Secrets Revealed.mkv
    Format : Matroska
    Format version : Version 4 / Version 2
    File size : 12.0 GiB
    Duration : 11 h 54 min
    Overall bit rate : 2 409 kb/s
    Movie name : Magic's Biggest Secrets Revealed
    Description : World's Scariest Magic Tricks - http://bit.ly/24REkEJ / Unbelievable Psychic Magic - http://bit.ly/1UVM4jy / Mind-blowing Illusions - http://bit.ly/23cpZn7 / Tricky Slight of Hand - http://bit.ly/1UzYCgx / Death Defying Tricks - http://bit.ly/1UwlhOW / Amazing Escapes - http://bit.ly/24REU5r / Classic Magic Illusions - http://bit.ly/1txa4nB / Stupefying Vanishing Acts - http://bit.ly/1YsN98v / / Come to our channel every Thursday to see more magic tricks and how they are performed! / / Breaking the Magician's Code: Magic's Biggest Secrets Finally Revealed is a series of television shows produced by Nash Entertainment in which the closely guarded secrets behind classic magic tricks and illusions are exposed by the Masked Magician, aided by his beautiful assistants. / / The enormously popular TV specials and series featured the incognito magician performing large-scale illusions and a few smaller-scale close-up magic tricks... then revealing the secrets of how the tricks were done.
    Writing application : Lavf60.16.100
    Writing library : Lavf60.16.100
    Comment : https://www.youtube.com/watch?v=d9eFHjTSR6Y
    ErrorDetectionType : Per level 1
    ARTIST : Magic Secrets Revealed
    DATE : 20250308
    GENRE : Entertainment
    PURL : https://www.youtube.com/watch?v=d9eFHjTSR6Y
    SYNOPSIS : World's Scariest Magic Tricks - http://bit.ly/24REkEJ / Unbelievable Psychic Magic - http://bit.ly/1UVM4jy / Mind-blowing Illusions - http://bit.ly/23cpZn7 / Tricky Slight of Hand - http://bit.ly/1UzYCgx / Death Defying Tricks - http://bit.ly/1UwlhOW / Amazing Escapes - http://bit.ly/24REU5r / Classic Magic Illusions - http://bit.ly/1txa4nB / Stupefying Vanishing Acts - http://bit.ly/1YsN98v / / Come to our channel every Thursday to see more magic tricks and how they are performed! / / Breaking the Magician's Code: Magic's Biggest Secrets Finally Revealed is a series of television shows produced by Nash Entertainment in which the closely guarded secrets behind classic magic tricks and illusions are exposed by the Masked Magician, aided by his beautiful assistants. / / The enormously popular TV specials and series featured the incognito magician performing large-scale illusions and a few smaller-scale close-up magic tricks... then revealing the secrets of how the tricks were done.

    Video
    ID : 2
    Format : AVC
    Format/Info : Advanced Video Codec
    Format profile : High@L4
    Format settings, CABAC : Yes
    Format settings, RefFrames : 3 frames
    Codec ID : V_MPEG4/ISO/AVC
    Duration : 11 h 54 min
    Width : 1 920 pixels
    Height : 1 080 pixels
    Display aspect ratio : 16:9
    Frame rate mode : Constant
    Frame rate : 30.000 FPS
    Color space : YUV
    Chroma subsampling : 4:2:0
    Bit depth : 8 bits
    Scan type : Progressive
    Language : English
    Default : No
    Forced : No
    Color range : Limited
    Color primaries : BT.709
    Transfer characteristics : BT.709
    Matrix coefficients : BT.709
    DURATION : 11:54:58.166000000

    Audio
    ID : 1
    Format : AAC
    Format/Info : Advanced Audio Codec
    Format profile : LC
    Codec ID : A_AAC
    Duration : 11 h 54 min
    Channel(s) : 2 channels
    Channel positions : Front: L R
    Sampling rate : 44.1 kHz
    Frame rate : 43.066 FPS (1024 SPF)
    Compression mode : Lossy
    Delay relative to video : -33 ms
    Language : English
    Default : No
    Forced : No
    DURATION : 11:54:58.193000000
    Quote Quote  
  27. Member
    Join Date
    Aug 2023
    Location
    Ukraine
    Search PM
    Originally Posted by LZAA View Post
    ?.
    File size : 12.0 GiB

    position under code 96 (27.84Gib 5574k) but it does not load, instead a video under code 137 (11.38Gib 2278k) loads, and so on with all videos on this service. Question, why?
    Quote Quote  



Similar Threads

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