We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Cloudflare Stream is unsupported
### DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

- [X] I understand that I will be **blocked** if I *intentionally* remove or skip any mandatory\* field

### Checklist

- [X] I'm reporting a new site support request
- [X] I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))
- [X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
- [X] I've checked that none of provided URLs [violate any copyrights](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-website-primarily-used-for-piracy) or contain any [DRM](https://en.wikipedia.org/wiki/Digital_rights_management) to the best of my knowledge
- [X] I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
- [X] I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
- [X] I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and am willing to share it if required

### Region

Spain

### Example URLs

https://customer-aw5py76sw8wyqzmh.cloudflarestream.com/2463f6d3e06fa29710a337f5f5389fd8/iframe

### Provide a description that is worded well enough to be understood

Says URL is unsupported.

### Provide verbose output that clearly demonstrates the problem

- [X] Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
- [X] If using API, add `'verbose': True` to `YoutubeDL` params instead
- [X] Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below

### Complete Verbose Output

```shell
$ yt-dlp -vU 'https://customer-aw5py76sw8wyqzmh.cloudflarestream.com/2463f6d3e06fa29710a337f5f5389fd8/iframe'
[debug] Command-line config: ['-vU', 'https://customer-aw5py76sw8wyqzmh.cloudflarestream.com/2463f6d3e06fa29710a337f5f5389fd8/iframe']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version nightly@2024.02.05.232712 from yt-dlp/yt-dlp-nightly-builds [05420227a] (pip)
[debug] Python 3.10.12 (CPython x86_64 64bit) - Linux-5.15.133.1-microsoft-standard-WSL2-x86_64-with-glibc2.35 (OpenSSL 3.0.2 15 Mar 2022, glibc 2.35)
[debug] exe versions: ffmpeg 4.4.2 (setts), ffprobe 4.4.2
[debug] Optional libraries: Cryptodome-3.20.0, brotli-1.1.0, certifi-2023.11.17, mutagen-1.47.0, requests-2.31.0, secretstorage-3.3.1, sqlite3-3.37.2, urllib3-2.1.0, websockets-12.0
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets
[debug] Loaded 1832 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest
Latest version: nightly@2024.02.05.232712 from yt-dlp/yt-dlp-nightly-builds
yt-dlp is up to date (nightly@2024.02.05.232712 from yt-dlp/yt-dlp-nightly-builds)
[generic] Extracting URL: https://customer-aw5py76sw8wyqzmh.cloudflarestream.com/2463f6d3e06fa29710a337f5f5389fd8/iframe
[generic] iframe: Downloading webpage
WARNING: [generic] Falling back on generic information extractor
[generic] iframe: Extracting information
[debug] Looking for embeds
ERROR: Unsupported URL: https://customer-aw5py76sw8wyqzmh.cloudflarestream.com/2463f6d3e06fa29710a337f5f5389fd8/iframe
Traceback (most recent call last):
  File "/home/user/.local/lib/python3.10/site-packages/yt_dlp/YoutubeDL.py", line 1586, in wrapper
    return func(self, *args, **kwargs)
  File "/home/user/.local/lib/python3.10/site-packages/yt_dlp/YoutubeDL.py", line 1721, in __extract_info
    ie_result = ie.extract(url)
  File "/home/user/.local/lib/python3.10/site-packages/yt_dlp/extractor/common.py", line 718, in extract
    ie_result = self._real_extract(url)
  File "/home/user/.local/lib/python3.10/site-packages/yt_dlp/extractor/generic.py", line 2531, in _real_extract
    raise UnsupportedError(url)
yt_dlp.utils.UnsupportedError: Unsupported URL: https://customer-aw5py76sw8wyqzmh.cloudflarestream.com/2463f6d3e06fa29710a337f5f5389fd8/iframe
```


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `yt_dlp/extractor/cloudflarestream.py`
Content:
```
1 import base64
2 
3 from .common import InfoExtractor
4 
5 
6 class CloudflareStreamIE(InfoExtractor):
7     _DOMAIN_RE = r'(?:cloudflarestream\.com|(?:videodelivery|bytehighway)\.net)'
8     _EMBED_RE = r'embed\.%s/embed/[^/]+\.js\?.*?\bvideo=' % _DOMAIN_RE
9     _ID_RE = r'[\da-f]{32}|[\w-]+\.[\w-]+\.[\w-]+'
10     _VALID_URL = r'''(?x)
11                     https?://
12                         (?:
13                             (?:watch\.)?%s/|
14                             %s
15                         )
16                         (?P<id>%s)
17                     ''' % (_DOMAIN_RE, _EMBED_RE, _ID_RE)
18     _EMBED_REGEX = [fr'<script[^>]+\bsrc=(["\'])(?P<url>(?:https?:)?//{_EMBED_RE}(?:{_ID_RE}).*?)\1']
19     _TESTS = [{
20         'url': 'https://embed.cloudflarestream.com/embed/we4g.fla9.latest.js?video=31c9291ab41fac05471db4e73aa11717',
21         'info_dict': {
22             'id': '31c9291ab41fac05471db4e73aa11717',
23             'ext': 'mp4',
24             'title': '31c9291ab41fac05471db4e73aa11717',
25         },
26         'params': {
27             'skip_download': True,
28         },
29     }, {
30         'url': 'https://watch.cloudflarestream.com/9df17203414fd1db3e3ed74abbe936c1',
31         'only_matching': True,
32     }, {
33         'url': 'https://cloudflarestream.com/31c9291ab41fac05471db4e73aa11717/manifest/video.mpd',
34         'only_matching': True,
35     }, {
36         'url': 'https://embed.videodelivery.net/embed/r4xu.fla9.latest.js?video=81d80727f3022488598f68d323c1ad5e',
37         'only_matching': True,
38     }]
39 
40     def _real_extract(self, url):
41         video_id = self._match_id(url)
42         domain = 'bytehighway.net' if 'bytehighway.net/' in url else 'videodelivery.net'
43         base_url = 'https://%s/%s/' % (domain, video_id)
44         if '.' in video_id:
45             video_id = self._parse_json(base64.urlsafe_b64decode(
46                 video_id.split('.')[1] + '==='), video_id)['sub']
47         manifest_base_url = base_url + 'manifest/video.'
48 
49         formats, subtitles = self._extract_m3u8_formats_and_subtitles(
50             manifest_base_url + 'm3u8', video_id, 'mp4',
51             'm3u8_native', m3u8_id='hls', fatal=False)
52         fmts, subs = self._extract_mpd_formats_and_subtitles(
53             manifest_base_url + 'mpd', video_id, mpd_id='dash', fatal=False)
54         formats.extend(fmts)
55         self._merge_subtitles(subs, target=subtitles)
56 
57         return {
58             'id': video_id,
59             'title': video_id,
60             'thumbnail': base_url + 'thumbnails/thumbnail.jpg',
61             'formats': formats,
62             'subtitles': subtitles,
63         }
64
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/yt_dlp/extractor/cloudflarestream.py b/yt_dlp/extractor/cloudflarestream.py
--- a/yt_dlp/extractor/cloudflarestream.py
+++ b/yt_dlp/extractor/cloudflarestream.py
@@ -10,7 +10,7 @@
     _VALID_URL = r'''(?x)
                     https?://
                         (?:
-                            (?:watch\.)?%s/|
+                            (?:[\w-]+\.)?%s/|
                             %s
                         )
                         (?P<id>%s)
@@ -35,6 +35,9 @@
     }, {
         'url': 'https://embed.videodelivery.net/embed/r4xu.fla9.latest.js?video=81d80727f3022488598f68d323c1ad5e',
         'only_matching': True,
+    }, {
+        'url': 'https://customer-aw5py76sw8wyqzmh.cloudflarestream.com/2463f6d3e06fa29710a337f5f5389fd8/iframe',
+        'only_matching': True,
     }]
 
     def _real_extract(self, url):

{"golden_diff": "diff --git a/yt_dlp/extractor/cloudflarestream.py b/yt_dlp/extractor/cloudflarestream.py\n--- a/yt_dlp/extractor/cloudflarestream.py\n+++ b/yt_dlp/extractor/cloudflarestream.py\n@@ -10,7 +10,7 @@\n     _VALID_URL = r'''(?x)\n                     https?://\n                         (?:\n-                            (?:watch\\.)?%s/|\n+                            (?:[\\w-]+\\.)?%s/|\n                             %s\n                         )\n                         (?P<id>%s)\n@@ -35,6 +35,9 @@\n     }, {\n         'url': 'https://embed.videodelivery.net/embed/r4xu.fla9.latest.js?video=81d80727f3022488598f68d323c1ad5e',\n         'only_matching': True,\n+    }, {\n+        'url': 'https://customer-aw5py76sw8wyqzmh.cloudflarestream.com/2463f6d3e06fa29710a337f5f5389fd8/iframe',\n+        'only_matching': True,\n     }]\n \n     def _real_extract(self, url):\n", "issue": "Cloudflare Stream is unsupported\n### DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE\n\n- [X] I understand that I will be **blocked** if I *intentionally* remove or skip any mandatory\\* field\n\n### Checklist\n\n- [X] I'm reporting a new site support request\n- [X] I've verified that I have **updated yt-dlp to nightly or master** ([update instructions](https://github.com/yt-dlp/yt-dlp#update-channels))\n- [X] I've checked that all provided URLs are playable in a browser with the same IP and same login details\n- [X] I've checked that none of provided URLs [violate any copyrights](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#is-the-website-primarily-used-for-piracy) or contain any [DRM](https://en.wikipedia.org/wiki/Digital_rights_management) to the best of my knowledge\n- [X] I've searched [known issues](https://github.com/yt-dlp/yt-dlp/issues/3766) and the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates\n- [X] I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)\n- [X] I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and am willing to share it if required\n\n### Region\n\nSpain\n\n### Example URLs\n\nhttps://customer-aw5py76sw8wyqzmh.cloudflarestream.com/2463f6d3e06fa29710a337f5f5389fd8/iframe\n\n### Provide a description that is worded well enough to be understood\n\nSays URL is unsupported.\n\n### Provide verbose output that clearly demonstrates the problem\n\n- [X] Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)\n- [X] If using API, add `'verbose': True` to `YoutubeDL` params instead\n- [X] Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below\n\n### Complete Verbose Output\n\n```shell\n$ yt-dlp -vU 'https://customer-aw5py76sw8wyqzmh.cloudflarestream.com/2463f6d3e06fa29710a337f5f5389fd8/iframe'\r\n[debug] Command-line config: ['-vU', 'https://customer-aw5py76sw8wyqzmh.cloudflarestream.com/2463f6d3e06fa29710a337f5f5389fd8/iframe']\r\n[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8\r\n[debug] yt-dlp version nightly@2024.02.05.232712 from yt-dlp/yt-dlp-nightly-builds [05420227a] (pip)\r\n[debug] Python 3.10.12 (CPython x86_64 64bit) - Linux-5.15.133.1-microsoft-standard-WSL2-x86_64-with-glibc2.35 (OpenSSL 3.0.2 15 Mar 2022, glibc 2.35)\r\n[debug] exe versions: ffmpeg 4.4.2 (setts), ffprobe 4.4.2\r\n[debug] Optional libraries: Cryptodome-3.20.0, brotli-1.1.0, certifi-2023.11.17, mutagen-1.47.0, requests-2.31.0, secretstorage-3.3.1, sqlite3-3.37.2, urllib3-2.1.0, websockets-12.0\r\n[debug] Proxy map: {}\r\n[debug] Request Handlers: urllib, requests, websockets\r\n[debug] Loaded 1832 extractors\r\n[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp-nightly-builds/releases/latest\r\nLatest version: nightly@2024.02.05.232712 from yt-dlp/yt-dlp-nightly-builds\r\nyt-dlp is up to date (nightly@2024.02.05.232712 from yt-dlp/yt-dlp-nightly-builds)\r\n[generic] Extracting URL: https://customer-aw5py76sw8wyqzmh.cloudflarestream.com/2463f6d3e06fa29710a337f5f5389fd8/iframe\r\n[generic] iframe: Downloading webpage\r\nWARNING: [generic] Falling back on generic information extractor\r\n[generic] iframe: Extracting information\r\n[debug] Looking for embeds\r\nERROR: Unsupported URL: https://customer-aw5py76sw8wyqzmh.cloudflarestream.com/2463f6d3e06fa29710a337f5f5389fd8/iframe\r\nTraceback (most recent call last):\r\n  File \"/home/user/.local/lib/python3.10/site-packages/yt_dlp/YoutubeDL.py\", line 1586, in wrapper\r\n    return func(self, *args, **kwargs)\r\n  File \"/home/user/.local/lib/python3.10/site-packages/yt_dlp/YoutubeDL.py\", line 1721, in __extract_info\r\n    ie_result = ie.extract(url)\r\n  File \"/home/user/.local/lib/python3.10/site-packages/yt_dlp/extractor/common.py\", line 718, in extract\r\n    ie_result = self._real_extract(url)\r\n  File \"/home/user/.local/lib/python3.10/site-packages/yt_dlp/extractor/generic.py\", line 2531, in _real_extract\r\n    raise UnsupportedError(url)\r\nyt_dlp.utils.UnsupportedError: Unsupported URL: https://customer-aw5py76sw8wyqzmh.cloudflarestream.com/2463f6d3e06fa29710a337f5f5389fd8/iframe\n```\n\n", "before_files": [{"content": "import base64\n\nfrom .common import InfoExtractor\n\n\nclass CloudflareStreamIE(InfoExtractor):\n    _DOMAIN_RE = r'(?:cloudflarestream\\.com|(?:videodelivery|bytehighway)\\.net)'\n    _EMBED_RE = r'embed\\.%s/embed/[^/]+\\.js\\?.*?\\bvideo=' % _DOMAIN_RE\n    _ID_RE = r'[\\da-f]{32}|[\\w-]+\\.[\\w-]+\\.[\\w-]+'\n    _VALID_URL = r'''(?x)\n                    https?://\n                        (?:\n                            (?:watch\\.)?%s/|\n                            %s\n                        )\n                        (?P<id>%s)\n                    ''' % (_DOMAIN_RE, _EMBED_RE, _ID_RE)\n    _EMBED_REGEX = [fr'<script[^>]+\\bsrc=([\"\\'])(?P<url>(?:https?:)?//{_EMBED_RE}(?:{_ID_RE}).*?)\\1']\n    _TESTS = [{\n        'url': 'https://embed.cloudflarestream.com/embed/we4g.fla9.latest.js?video=31c9291ab41fac05471db4e73aa11717',\n        'info_dict': {\n            'id': '31c9291ab41fac05471db4e73aa11717',\n            'ext': 'mp4',\n            'title': '31c9291ab41fac05471db4e73aa11717',\n        },\n        'params': {\n            'skip_download': True,\n        },\n    }, {\n        'url': 'https://watch.cloudflarestream.com/9df17203414fd1db3e3ed74abbe936c1',\n        'only_matching': True,\n    }, {\n        'url': 'https://cloudflarestream.com/31c9291ab41fac05471db4e73aa11717/manifest/video.mpd',\n        'only_matching': True,\n    }, {\n        'url': 'https://embed.videodelivery.net/embed/r4xu.fla9.latest.js?video=81d80727f3022488598f68d323c1ad5e',\n        'only_matching': True,\n    }]\n\n    def _real_extract(self, url):\n        video_id = self._match_id(url)\n        domain = 'bytehighway.net' if 'bytehighway.net/' in url else 'videodelivery.net'\n        base_url = 'https://%s/%s/' % (domain, video_id)\n        if '.' in video_id:\n            video_id = self._parse_json(base64.urlsafe_b64decode(\n                video_id.split('.')[1] + '==='), video_id)['sub']\n        manifest_base_url = base_url + 'manifest/video.'\n\n        formats, subtitles = self._extract_m3u8_formats_and_subtitles(\n            manifest_base_url + 'm3u8', video_id, 'mp4',\n            'm3u8_native', m3u8_id='hls', fatal=False)\n        fmts, subs = self._extract_mpd_formats_and_subtitles(\n            manifest_base_url + 'mpd', video_id, mpd_id='dash', fatal=False)\n        formats.extend(fmts)\n        self._merge_subtitles(subs, target=subtitles)\n\n        return {\n            'id': video_id,\n            'title': video_id,\n            'thumbnail': base_url + 'thumbnails/thumbnail.jpg',\n            'formats': formats,\n            'subtitles': subtitles,\n        }\n", "path": "yt_dlp/extractor/cloudflarestream.py"}], "after_files": [{"content": "import base64\n\nfrom .common import InfoExtractor\n\n\nclass CloudflareStreamIE(InfoExtractor):\n    _DOMAIN_RE = r'(?:cloudflarestream\\.com|(?:videodelivery|bytehighway)\\.net)'\n    _EMBED_RE = r'embed\\.%s/embed/[^/]+\\.js\\?.*?\\bvideo=' % _DOMAIN_RE\n    _ID_RE = r'[\\da-f]{32}|[\\w-]+\\.[\\w-]+\\.[\\w-]+'\n    _VALID_URL = r'''(?x)\n                    https?://\n                        (?:\n                            (?:[\\w-]+\\.)?%s/|\n                            %s\n                        )\n                        (?P<id>%s)\n                    ''' % (_DOMAIN_RE, _EMBED_RE, _ID_RE)\n    _EMBED_REGEX = [fr'<script[^>]+\\bsrc=([\"\\'])(?P<url>(?:https?:)?//{_EMBED_RE}(?:{_ID_RE}).*?)\\1']\n    _TESTS = [{\n        'url': 'https://embed.cloudflarestream.com/embed/we4g.fla9.latest.js?video=31c9291ab41fac05471db4e73aa11717',\n        'info_dict': {\n            'id': '31c9291ab41fac05471db4e73aa11717',\n            'ext': 'mp4',\n            'title': '31c9291ab41fac05471db4e73aa11717',\n        },\n        'params': {\n            'skip_download': True,\n        },\n    }, {\n        'url': 'https://watch.cloudflarestream.com/9df17203414fd1db3e3ed74abbe936c1',\n        'only_matching': True,\n    }, {\n        'url': 'https://cloudflarestream.com/31c9291ab41fac05471db4e73aa11717/manifest/video.mpd',\n        'only_matching': True,\n    }, {\n        'url': 'https://embed.videodelivery.net/embed/r4xu.fla9.latest.js?video=81d80727f3022488598f68d323c1ad5e',\n        'only_matching': True,\n    }, {\n        'url': 'https://customer-aw5py76sw8wyqzmh.cloudflarestream.com/2463f6d3e06fa29710a337f5f5389fd8/iframe',\n        'only_matching': True,\n    }]\n\n    def _real_extract(self, url):\n        video_id = self._match_id(url)\n        domain = 'bytehighway.net' if 'bytehighway.net/' in url else 'videodelivery.net'\n        base_url = 'https://%s/%s/' % (domain, video_id)\n        if '.' in video_id:\n            video_id = self._parse_json(base64.urlsafe_b64decode(\n                video_id.split('.')[1] + '==='), video_id)['sub']\n        manifest_base_url = base_url + 'manifest/video.'\n\n        formats, subtitles = self._extract_m3u8_formats_and_subtitles(\n            manifest_base_url + 'm3u8', video_id, 'mp4',\n            'm3u8_native', m3u8_id='hls', fatal=False)\n        fmts, subs = self._extract_mpd_formats_and_subtitles(\n            manifest_base_url + 'mpd', video_id, mpd_id='dash', fatal=False)\n        formats.extend(fmts)\n        self._merge_subtitles(subs, target=subtitles)\n\n        return {\n            'id': video_id,\n            'title': video_id,\n            'thumbnail': base_url + 'thumbnails/thumbnail.jpg',\n            'formats': formats,\n            'subtitles': subtitles,\n        }\n", "path": "yt_dlp/extractor/cloudflarestream.py"}]}