[NBC] No video formats found (ThePlatform: Failed to download m3u8 information: HTTP Error 400: Bad Request) #25666

Open
opened 2026-02-21 13:54:28 -05:00 by deekerman · 5 comments
Owner

Originally created by @miyagi-sensei on GitHub (Jan 9, 2023).

Checklist

  • I'm reporting a broken site support
  • I've verified that I'm running youtube-dl version 2021.12.17
  • I've checked that all provided URLs are alive and playable in a browser
  • I've checked that all URLs and arguments with special characters are properly quoted or escaped
  • I've searched the bugtracker for similar issues including closed ones

Verbose log

[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--verbose', '-F', 'https://www.nbc.com/today/video/sunday-today-1823/9000318673']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8
[debug] youtube-dl version 2021.12.17
[debug] Python version 3.9.6 (CPython) - macOS-12.6.2-arm64-arm-64bit
[debug] exe versions: ffmpeg 5.1.2, ffprobe 5.1.2, rtmpdump 2.4
[debug] Proxy map: {}
[NBC] 9000318673: Downloading JSON metadata
[ThePlatform] 9000318673: Downloading SMIL data
[ThePlatform] 9000318673: Downloading m3u8 information
WARNING: Failed to download m3u8 information: HTTP Error 400: Bad Request
ERROR: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "/Library/Python/3.9/site-packages/youtube_dl/YoutubeDL.py", line 815, in wrapper
    return func(self, *args, **kwargs)
  File "/Library/Python/3.9/site-packages/youtube_dl/YoutubeDL.py", line 836, in __extract_info
    ie_result = ie.extract(url)
  File "/Library/Python/3.9/site-packages/youtube_dl/extractor/common.py", line 534, in extract
    ie_result = self._real_extract(url)
  File "/Library/Python/3.9/site-packages/youtube_dl/extractor/theplatform.py", line 309, in _real_extract
    self._sort_formats(formats)
  File "/Library/Python/3.9/site-packages/youtube_dl/extractor/common.py", line 1374, in _sort_formats
    raise ExtractorError('No video formats found')
youtube_dl.utils.ExtractorError: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

Description

has been broken since Jan 1st, 2023

Originally created by @miyagi-sensei on GitHub (Jan 9, 2023). <!-- ###################################################################### WARNING! IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE ###################################################################### --> ## Checklist <!-- Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dl: - First of, make sure you are using the latest version of youtube-dl. Run `youtube-dl --version` and ensure your version is 2021.12.17. If it's not, see https://yt-dl.org/update on how to update. Issues with outdated version will be REJECTED. - Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser. - Make sure that all URLs and arguments with special characters are properly quoted or escaped as explained in http://yt-dl.org/escape. - Search the bugtracker for similar issues: http://yt-dl.org/search-issues. DO NOT post duplicates. - Finally, put x into all relevant boxes (like this [x]) --> - [x] I'm reporting a broken site support - [x] I've verified that I'm running youtube-dl version **2021.12.17** - [x] I've checked that all provided URLs are alive and playable in a browser - [x] I've checked that all URLs and arguments with special characters are properly quoted or escaped - [x] I've searched the bugtracker for similar issues including closed ones ## Verbose log <!-- Provide the complete verbose output of youtube-dl that clearly demonstrates the problem. Add the `-v` flag to your command line you run youtube-dl with (`youtube-dl -v <your command line>`), copy the WHOLE output and insert it below. It should look similar to this: [debug] System config: [] [debug] User config: [] [debug] Command-line args: [u'-v', u'http://www.youtube.com/watch?v=BaW_jenozKcj'] [debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251 [debug] youtube-dl version 2021.12.17 [debug] Python version 2.7.11 - Windows-2003Server-5.2.3790-SP2 [debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4 [debug] Proxy map: {} <more lines> --> ``` [debug] System config: [] [debug] User config: [] [debug] Custom config: [] [debug] Command-line args: ['--verbose', '-F', 'https://www.nbc.com/today/video/sunday-today-1823/9000318673'] [debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8 [debug] youtube-dl version 2021.12.17 [debug] Python version 3.9.6 (CPython) - macOS-12.6.2-arm64-arm-64bit [debug] exe versions: ffmpeg 5.1.2, ffprobe 5.1.2, rtmpdump 2.4 [debug] Proxy map: {} [NBC] 9000318673: Downloading JSON metadata [ThePlatform] 9000318673: Downloading SMIL data [ThePlatform] 9000318673: Downloading m3u8 information WARNING: Failed to download m3u8 information: HTTP Error 400: Bad Request ERROR: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output. Traceback (most recent call last): File "/Library/Python/3.9/site-packages/youtube_dl/YoutubeDL.py", line 815, in wrapper return func(self, *args, **kwargs) File "/Library/Python/3.9/site-packages/youtube_dl/YoutubeDL.py", line 836, in __extract_info ie_result = ie.extract(url) File "/Library/Python/3.9/site-packages/youtube_dl/extractor/common.py", line 534, in extract ie_result = self._real_extract(url) File "/Library/Python/3.9/site-packages/youtube_dl/extractor/theplatform.py", line 309, in _real_extract self._sort_formats(formats) File "/Library/Python/3.9/site-packages/youtube_dl/extractor/common.py", line 1374, in _sort_formats raise ExtractorError('No video formats found') youtube_dl.utils.ExtractorError: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output. ``` ## Description <!-- Provide an explanation of your issue in an arbitrary form. Provide any additional information, suggested solution and as much context and examples as possible. If work on your issue requires account credentials please provide them or explain how one can obtain them. --> has been broken since Jan 1st, 2023
Author
Owner

@dirkf commented on GitHub (Jan 10, 2023):

Presumably the same issue and fix as yt-dlp#5918, with this common feature:

WARNING: [ThePlatform] Failed to download m3u8 information: HTTP Error 400: Bad Request

Required patch:

--- old/youtube_dl/extractor/nbc.py
+++ new/youtube_dl/extractor/nbc.py
@@ -130,6 +130,7 @@
         query = {
             'mbr': 'true',
             'manifest': 'm3u',
+            'switch': 'HLSServiceSecure',
         }
         video_id = video_data['mpxGuid']
         title = video_data['secondaryTitle']

The original title was better!

@dirkf commented on GitHub (Jan 10, 2023): Presumably the same issue and fix as [yt-dlp#5918](https://github.com/yt-dlp/yt-dlp/issues/5918), with this common feature: ``` WARNING: [ThePlatform] Failed to download m3u8 information: HTTP Error 400: Bad Request ``` Required patch: ```diff --- old/youtube_dl/extractor/nbc.py +++ new/youtube_dl/extractor/nbc.py @@ -130,6 +130,7 @@ query = { 'mbr': 'true', 'manifest': 'm3u', + 'switch': 'HLSServiceSecure', } video_id = video_data['mpxGuid'] title = video_data['secondaryTitle'] ``` The original title was better!
Author
Owner

@GeeReeGee commented on GitHub (Jan 22, 2023):

I'm having a similar problem "No Video Formats found" with SBS.
I see the green lozenge patch-available. Not sure how I use that ?
Thx

Xxxxx :~ xxxxx $ youtube-DL -F --verbose https://www.sbs.com.au/ondemand/watch/1726825539597
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-F', u'--verbose', u'https://www.sbs.com.au/ondemand/watch/1726825539597']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2021.12.17
[debug] Python version 2.7.10 (CPython) - Darwin-16.7.0-x86_64-i386-64bit
[debug] exe versions: ffmpeg 3.4.2, ffprobe 3.4.2
[debug] Proxy map: {}
[SBS] 1726825539597: Downloading JSON metadata
[ThePlatform] vW3DpH__wRtP: Downloading SMIL data
[ThePlatform] vW3DpH__wRtP: Downloading m3u8 information
WARNING: Failed to download m3u8 information: HTTP Error 403: Forbidden
ERROR: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "/usr/local/bin/youtube-DL/youtube_dl/YoutubeDL.py", line 815, in wrapper
    return func(self, *args, **kwargs)
  File "/usr/local/bin/youtube-DL/youtube_dl/YoutubeDL.py", line 836, in __extract_info
    ie_result = ie.extract(url)
  File "/usr/local/bin/youtube-DL/youtube_dl/extractor/common.py", line 534, in extract
    ie_result = self._real_extract(url)
  File "/usr/local/bin/youtube-DL/youtube_dl/extractor/theplatform.py", line 309, in _real_extract
    self._sort_formats(formats)
  File "/usr/local/bin/youtube-DL/youtube_dl/extractor/common.py", line 1374, in _sort_formats
    raise ExtractorError('No video formats found')
ExtractorError: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
@GeeReeGee commented on GitHub (Jan 22, 2023): I'm having a similar problem "No Video Formats found" with SBS. I see the green lozenge patch-available. Not sure how I use that ? Thx ``` Xxxxx :~ xxxxx $ youtube-DL -F --verbose https://www.sbs.com.au/ondemand/watch/1726825539597 [debug] System config: [] [debug] User config: [] [debug] Custom config: [] [debug] Command-line args: [u'-F', u'--verbose', u'https://www.sbs.com.au/ondemand/watch/1726825539597'] [debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8 [debug] youtube-dl version 2021.12.17 [debug] Python version 2.7.10 (CPython) - Darwin-16.7.0-x86_64-i386-64bit [debug] exe versions: ffmpeg 3.4.2, ffprobe 3.4.2 [debug] Proxy map: {} [SBS] 1726825539597: Downloading JSON metadata [ThePlatform] vW3DpH__wRtP: Downloading SMIL data [ThePlatform] vW3DpH__wRtP: Downloading m3u8 information WARNING: Failed to download m3u8 information: HTTP Error 403: Forbidden ERROR: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose flag and include its complete output. Traceback (most recent call last): File "/usr/local/bin/youtube-DL/youtube_dl/YoutubeDL.py", line 815, in wrapper return func(self, *args, **kwargs) File "/usr/local/bin/youtube-DL/youtube_dl/YoutubeDL.py", line 836, in __extract_info ie_result = ie.extract(url) File "/usr/local/bin/youtube-DL/youtube_dl/extractor/common.py", line 534, in extract ie_result = self._real_extract(url) File "/usr/local/bin/youtube-DL/youtube_dl/extractor/theplatform.py", line 309, in _real_extract self._sort_formats(formats) File "/usr/local/bin/youtube-DL/youtube_dl/extractor/common.py", line 1374, in _sort_formats raise ExtractorError('No video formats found') ExtractorError: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose flag and include its complete output. ```
Author
Owner

@dirkf commented on GitHub (Jan 22, 2023):

Similar, not the same. 400 means yt-dl didn't send a request that had what the site expected; 403 means the site saw yt-dl's request and denied access to yt-dl.

You may need to provide --username ... --password ..., or, more likely to succeed, pass cookies from your logged-in browser session using --cookies ....

If you don't succeed please open a new broken site issue.

@dirkf commented on GitHub (Jan 22, 2023): Similar, not the same. 400 means yt-dl didn't send a request that had what the site expected; 403 means the site saw yt-dl's request and denied access to yt-dl. You may need to provide `--username ... --password ...`, or, more likely to succeed, pass cookies from your logged-in browser session using `--cookies ...`. If you don't succeed please open a new broken site issue.
Author
Owner

@jaaan-t commented on GitHub (Apr 23, 2024):

Presumably the same issue and fix as yt-dlp#5918, with this common feature:

WARNING: [ThePlatform] Failed to download m3u8 information: HTTP Error 400: Bad Request

Required patch:

--- old/youtube_dl/extractor/nbc.py
+++ new/youtube_dl/extractor/nbc.py
@@ -130,6 +130,7 @@
         query = {
             'mbr': 'true',
             'manifest': 'm3u',
+            'switch': 'HLSServiceSecure',
         }
         video_id = video_data['mpxGuid']
         title = video_data['secondaryTitle']

Same issue, this fixed it for me. Thanks!
For Mac users who installed ytdl with brew, wondering where this file is:
/opt/homebrew/Cellar/youtube-dl/<version>/libexec/lib/python3.12/site-packages/youtube_dl/extractor

@jaaan-t commented on GitHub (Apr 23, 2024): > Presumably the same issue and fix as [yt-dlp#5918](https://github.com/yt-dlp/yt-dlp/issues/5918), with this common feature: > > ``` > WARNING: [ThePlatform] Failed to download m3u8 information: HTTP Error 400: Bad Request > ``` > > Required patch: > > ```diff > --- old/youtube_dl/extractor/nbc.py > +++ new/youtube_dl/extractor/nbc.py > @@ -130,6 +130,7 @@ > query = { > 'mbr': 'true', > 'manifest': 'm3u', > + 'switch': 'HLSServiceSecure', > } > video_id = video_data['mpxGuid'] > title = video_data['secondaryTitle'] > ``` Same issue, this fixed it for me. Thanks! For Mac users who installed ytdl with brew, wondering where this file is: `/opt/homebrew/Cellar/youtube-dl/<version>/libexec/lib/python3.12/site-packages/youtube_dl/extractor `
Author
Owner

@3052 commented on GitHub (Apr 23, 2024):

note the above does not work for locked content:

> curl link.theplatform.com/s/NnzsPC/media/guid/2304992029/3448375?switch=HLSServiceSecure
{
        "title": "Invalid Token",
        "description": "This content requires a valid, unexpired auth token.",
        "isException": true,
        "exception": "InvalidAuthToken",
        "responseCode": "403"
}

but if you have a Widevine setup you can get it:

msg=POST URL=https://friendship.nbc.co/v2/graphql
msg=GET URL="https://lemonade.nbc.com/v1/vod/2304992029/3448375?platform=web&programmingType=Movie"
msg=GET URL=https://vod-lf-oneapp2-prd.akamaized.net/prod/usa/HN4/Udk/3448375/1701289607724-vzczo/cmaf/mpeg_cenc_2sec/master_cmaf.mpd
msg=GET URL=https://vod-lf-oneapp2-prd.akamaized.net/prod/usa/HN4/Udk/3448375/1701289607724-vzczo/cmaf/mpeg_cenc_2sec/7830k_1080_cmaf/_226617476_1.mp4
msg=POST URL="https://drmproxy.digitalsvc.apps.nbcuni.com/drm-proxy/license/widevine?time=1713910840095&hash=e774057bd8a7ed32c5ebbf9d2398bb28a82eb608d1c83d31a9b3e848afe88d48&device=web"
msg="0.47 %" size="8.67 megabyte" rate="8.55 megabyte/s"
@3052 commented on GitHub (Apr 23, 2024): note the above does not work for locked content: ~~~ > curl link.theplatform.com/s/NnzsPC/media/guid/2304992029/3448375?switch=HLSServiceSecure { "title": "Invalid Token", "description": "This content requires a valid, unexpired auth token.", "isException": true, "exception": "InvalidAuthToken", "responseCode": "403" } ~~~ but if you have a Widevine setup you can get it: ~~~ msg=POST URL=https://friendship.nbc.co/v2/graphql msg=GET URL="https://lemonade.nbc.com/v1/vod/2304992029/3448375?platform=web&programmingType=Movie" msg=GET URL=https://vod-lf-oneapp2-prd.akamaized.net/prod/usa/HN4/Udk/3448375/1701289607724-vzczo/cmaf/mpeg_cenc_2sec/master_cmaf.mpd msg=GET URL=https://vod-lf-oneapp2-prd.akamaized.net/prod/usa/HN4/Udk/3448375/1701289607724-vzczo/cmaf/mpeg_cenc_2sec/7830k_1080_cmaf/_226617476_1.mp4 msg=POST URL="https://drmproxy.digitalsvc.apps.nbcuni.com/drm-proxy/license/widevine?time=1713910840095&hash=e774057bd8a7ed32c5ebbf9d2398bb28a82eb608d1c83d31a9b3e848afe88d48&device=web" msg="0.47 %" size="8.67 megabyte" rate="8.55 megabyte/s" ~~~
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/youtube-dl-ytdl-org#25666
No description provided.