We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[Bloomberg] Extracter does not work.
### Checklist

- [X] I'm reporting a broken site
- [X] I've verified that I'm running yt-dlp version **2022.05.18** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
- [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 all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/ytdl-org/youtube-dl#video-url-contains-an-ampersand-and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
- [X] I've searched 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 I'm willing to share it if required

### Region

USA

### Description

Bloomberg extractor complains about being unable to extract ID, same for any video.
I used "https://www.bloomberg.com/news/videos/2022-05-19/bloomberg-studio-1-0-roblox-ceo-david-baszucki-video" as an example.

### Verbose log

```shell
[debug] Command-line config: ['-vU', 'https://www.bloomberg.com/news/videos/2022-05-19/bloomberg-studio-1-0-roblox-ceo-david-baszucki-video']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] Lazy loading extractors is disabled
[debug] Python version 3.10.4 (CPython 64bit) - Windows-10-10.0.19044-SP0
[debug] Checking exe version: ffprobe -bsfs
[debug] Checking exe version: ffmpeg -bsfs
[debug] exe versions: ffmpeg N-106452-g7fbf1dd47e-20220329 (setts), ffprobe N-106452-g7fbf1dd47e-20220329
[debug] Optional libraries: Cryptodome-3.14.1, brotli-1.0.9, certifi-2022.05.18, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
Latest version: 2022.05.18, Current version: 2022.05.18
yt-dlp is up to date (2022.05.18)
[debug] [Bloomberg] Extracting URL: https://www.bloomberg.com/news/videos/2022-05-19/bloomberg-studio-1-0-roblox-ceo-david-baszucki-video
[Bloomberg] bloomberg-studio-1-0-roblox-ceo-david-baszucki-video: Downloading webpage
ERROR: [Bloomberg] bloomberg-studio-1-0-roblox-ceo-david-baszucki-video: Unable to extract id; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
  File "C:\Users\mystu\AppData\Local\Programs\Python\Python310\lib\site-packages\yt_dlp\extractor\common.py", line 642, in extract
    ie_result = self._real_extract(url)
  File "C:\Users\mystu\AppData\Local\Programs\Python\Python310\lib\site-packages\yt_dlp\extractor\bloomberg.py", line 54, in _real_extract
    bplayer_data = self._parse_json(self._search_regex(
  File "C:\Users\mystu\AppData\Local\Programs\Python\Python310\lib\site-packages\yt_dlp\extractor\common.py", line 1226, in _search_regex
    raise RegexNotFoundError('Unable to extract %s' % _name)
```


--- 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/bloomberg.py`
Content:
```
1 import re
2 
3 from .common import InfoExtractor
4 
5 
6 class BloombergIE(InfoExtractor):
7     _VALID_URL = r'https?://(?:www\.)?bloomberg\.com/(?:[^/]+/)*(?P<id>[^/?#]+)'
8 
9     _TESTS = [{
10         'url': 'http://www.bloomberg.com/news/videos/b/aaeae121-5949-481e-a1ce-4562db6f5df2',
11         # The md5 checksum changes
12         'info_dict': {
13             'id': 'qurhIVlJSB6hzkVi229d8g',
14             'ext': 'flv',
15             'title': 'Shah\'s Presentation on Foreign-Exchange Strategies',
16             'description': 'md5:a8ba0302912d03d246979735c17d2761',
17         },
18         'params': {
19             'format': 'best[format_id^=hds]',
20         },
21     }, {
22         # video ID in BPlayer(...)
23         'url': 'http://www.bloomberg.com/features/2016-hello-world-new-zealand/',
24         'info_dict': {
25             'id': '938c7e72-3f25-4ddb-8b85-a9be731baa74',
26             'ext': 'flv',
27             'title': 'Meet the Real-Life Tech Wizards of Middle Earth',
28             'description': 'Hello World, Episode 1: New Zealand’s freaky AI babies, robot exoskeletons, and a virtual you.',
29         },
30         'params': {
31             'format': 'best[format_id^=hds]',
32         },
33     }, {
34         # data-bmmrid=
35         'url': 'https://www.bloomberg.com/politics/articles/2017-02-08/le-pen-aide-briefed-french-central-banker-on-plan-to-print-money',
36         'only_matching': True,
37     }, {
38         'url': 'http://www.bloomberg.com/news/articles/2015-11-12/five-strange-things-that-have-been-happening-in-financial-markets',
39         'only_matching': True,
40     }, {
41         'url': 'http://www.bloomberg.com/politics/videos/2015-11-25/karl-rove-on-jeb-bush-s-struggles-stopping-trump',
42         'only_matching': True,
43     }]
44 
45     def _real_extract(self, url):
46         name = self._match_id(url)
47         webpage = self._download_webpage(url, name)
48         video_id = self._search_regex(
49             (r'["\']bmmrId["\']\s*:\s*(["\'])(?P<id>(?:(?!\1).)+)\1',
50              r'videoId\s*:\s*(["\'])(?P<id>(?:(?!\1).)+)\1',
51              r'data-bmmrid=(["\'])(?P<id>(?:(?!\1).)+)\1'),
52             webpage, 'id', group='id', default=None)
53         if not video_id:
54             bplayer_data = self._parse_json(self._search_regex(
55                 r'BPlayer\(null,\s*({[^;]+})\);', webpage, 'id'), name)
56             video_id = bplayer_data['id']
57         title = re.sub(': Video$', '', self._og_search_title(webpage))
58 
59         embed_info = self._download_json(
60             'http://www.bloomberg.com/api/embed?id=%s' % video_id, video_id)
61         formats = []
62         for stream in embed_info['streams']:
63             stream_url = stream.get('url')
64             if not stream_url:
65                 continue
66             if stream['muxing_format'] == 'TS':
67                 formats.extend(self._extract_m3u8_formats(
68                     stream_url, video_id, 'mp4', m3u8_id='hls', fatal=False))
69             else:
70                 formats.extend(self._extract_f4m_formats(
71                     stream_url, video_id, f4m_id='hds', fatal=False))
72         self._sort_formats(formats)
73 
74         return {
75             'id': video_id,
76             'title': title,
77             'formats': formats,
78             'description': self._og_search_description(webpage),
79             'thumbnail': self._og_search_thumbnail(webpage),
80         }
81
```
--- 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/bloomberg.py b/yt_dlp/extractor/bloomberg.py
--- a/yt_dlp/extractor/bloomberg.py
+++ b/yt_dlp/extractor/bloomberg.py
@@ -7,13 +7,11 @@
     _VALID_URL = r'https?://(?:www\.)?bloomberg\.com/(?:[^/]+/)*(?P<id>[^/?#]+)'
 
     _TESTS = [{
-        'url': 'http://www.bloomberg.com/news/videos/b/aaeae121-5949-481e-a1ce-4562db6f5df2',
-        # The md5 checksum changes
+        'url': 'https://www.bloomberg.com/news/videos/2021-09-14/apple-unveils-the-new-iphone-13-stock-doesn-t-move-much-video',
         'info_dict': {
-            'id': 'qurhIVlJSB6hzkVi229d8g',
+            'id': 'V8cFcYMxTHaMcEiiYVr39A',
             'ext': 'flv',
-            'title': 'Shah\'s Presentation on Foreign-Exchange Strategies',
-            'description': 'md5:a8ba0302912d03d246979735c17d2761',
+            'title': 'Apple Unveils the New IPhone 13, Stock Doesn\'t Move Much',
         },
         'params': {
             'format': 'best[format_id^=hds]',
@@ -57,7 +55,7 @@
         title = re.sub(': Video$', '', self._og_search_title(webpage))
 
         embed_info = self._download_json(
-            'http://www.bloomberg.com/api/embed?id=%s' % video_id, video_id)
+            'http://www.bloomberg.com/multimedia/api/embed?id=%s' % video_id, video_id)
         formats = []
         for stream in embed_info['streams']:
             stream_url = stream.get('url')

{"golden_diff": "diff --git a/yt_dlp/extractor/bloomberg.py b/yt_dlp/extractor/bloomberg.py\n--- a/yt_dlp/extractor/bloomberg.py\n+++ b/yt_dlp/extractor/bloomberg.py\n@@ -7,13 +7,11 @@\n     _VALID_URL = r'https?://(?:www\\.)?bloomberg\\.com/(?:[^/]+/)*(?P<id>[^/?#]+)'\n \n     _TESTS = [{\n-        'url': 'http://www.bloomberg.com/news/videos/b/aaeae121-5949-481e-a1ce-4562db6f5df2',\n-        # The md5 checksum changes\n+        'url': 'https://www.bloomberg.com/news/videos/2021-09-14/apple-unveils-the-new-iphone-13-stock-doesn-t-move-much-video',\n         'info_dict': {\n-            'id': 'qurhIVlJSB6hzkVi229d8g',\n+            'id': 'V8cFcYMxTHaMcEiiYVr39A',\n             'ext': 'flv',\n-            'title': 'Shah\\'s Presentation on Foreign-Exchange Strategies',\n-            'description': 'md5:a8ba0302912d03d246979735c17d2761',\n+            'title': 'Apple Unveils the New IPhone 13, Stock Doesn\\'t Move Much',\n         },\n         'params': {\n             'format': 'best[format_id^=hds]',\n@@ -57,7 +55,7 @@\n         title = re.sub(': Video$', '', self._og_search_title(webpage))\n \n         embed_info = self._download_json(\n-            'http://www.bloomberg.com/api/embed?id=%s' % video_id, video_id)\n+            'http://www.bloomberg.com/multimedia/api/embed?id=%s' % video_id, video_id)\n         formats = []\n         for stream in embed_info['streams']:\n             stream_url = stream.get('url')\n", "issue": "[Bloomberg] Extracter does not work.\n### Checklist\n\n- [X] I'm reporting a broken site\n- [X] I've verified that I'm running yt-dlp version **2022.05.18** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)\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 all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/ytdl-org/youtube-dl#video-url-contains-an-ampersand-and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)\n- [X] I've searched 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 I'm willing to share it if required\n\n### Region\n\nUSA\n\n### Description\n\nBloomberg extractor complains about being unable to extract ID, same for any video.\r\nI used \"https://www.bloomberg.com/news/videos/2022-05-19/bloomberg-studio-1-0-roblox-ceo-david-baszucki-video\" as an example.\n\n### Verbose log\n\n```shell\n[debug] Command-line config: ['-vU', 'https://www.bloomberg.com/news/videos/2022-05-19/bloomberg-studio-1-0-roblox-ceo-david-baszucki-video']\r\n[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8\r\n[debug] Lazy loading extractors is disabled\r\n[debug] Python version 3.10.4 (CPython 64bit) - Windows-10-10.0.19044-SP0\r\n[debug] Checking exe version: ffprobe -bsfs\r\n[debug] Checking exe version: ffmpeg -bsfs\r\n[debug] exe versions: ffmpeg N-106452-g7fbf1dd47e-20220329 (setts), ffprobe N-106452-g7fbf1dd47e-20220329\r\n[debug] Optional libraries: Cryptodome-3.14.1, brotli-1.0.9, certifi-2022.05.18, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3\r\n[debug] Proxy map: {}\r\nLatest version: 2022.05.18, Current version: 2022.05.18\r\nyt-dlp is up to date (2022.05.18)\r\n[debug] [Bloomberg] Extracting URL: https://www.bloomberg.com/news/videos/2022-05-19/bloomberg-studio-1-0-roblox-ceo-david-baszucki-video\r\n[Bloomberg] bloomberg-studio-1-0-roblox-ceo-david-baszucki-video: Downloading webpage\r\nERROR: [Bloomberg] bloomberg-studio-1-0-roblox-ceo-david-baszucki-video: Unable to extract id; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U\r\n  File \"C:\\Users\\mystu\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\yt_dlp\\extractor\\common.py\", line 642, in extract\r\n    ie_result = self._real_extract(url)\r\n  File \"C:\\Users\\mystu\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\yt_dlp\\extractor\\bloomberg.py\", line 54, in _real_extract\r\n    bplayer_data = self._parse_json(self._search_regex(\r\n  File \"C:\\Users\\mystu\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\yt_dlp\\extractor\\common.py\", line 1226, in _search_regex\r\n    raise RegexNotFoundError('Unable to extract %s' % _name)\n```\n\n", "before_files": [{"content": "import re\n\nfrom .common import InfoExtractor\n\n\nclass BloombergIE(InfoExtractor):\n    _VALID_URL = r'https?://(?:www\\.)?bloomberg\\.com/(?:[^/]+/)*(?P<id>[^/?#]+)'\n\n    _TESTS = [{\n        'url': 'http://www.bloomberg.com/news/videos/b/aaeae121-5949-481e-a1ce-4562db6f5df2',\n        # The md5 checksum changes\n        'info_dict': {\n            'id': 'qurhIVlJSB6hzkVi229d8g',\n            'ext': 'flv',\n            'title': 'Shah\\'s Presentation on Foreign-Exchange Strategies',\n            'description': 'md5:a8ba0302912d03d246979735c17d2761',\n        },\n        'params': {\n            'format': 'best[format_id^=hds]',\n        },\n    }, {\n        # video ID in BPlayer(...)\n        'url': 'http://www.bloomberg.com/features/2016-hello-world-new-zealand/',\n        'info_dict': {\n            'id': '938c7e72-3f25-4ddb-8b85-a9be731baa74',\n            'ext': 'flv',\n            'title': 'Meet the Real-Life Tech Wizards of Middle Earth',\n            'description': 'Hello World, Episode 1: New Zealand\u2019s freaky AI babies, robot exoskeletons, and a virtual you.',\n        },\n        'params': {\n            'format': 'best[format_id^=hds]',\n        },\n    }, {\n        # data-bmmrid=\n        'url': 'https://www.bloomberg.com/politics/articles/2017-02-08/le-pen-aide-briefed-french-central-banker-on-plan-to-print-money',\n        'only_matching': True,\n    }, {\n        'url': 'http://www.bloomberg.com/news/articles/2015-11-12/five-strange-things-that-have-been-happening-in-financial-markets',\n        'only_matching': True,\n    }, {\n        'url': 'http://www.bloomberg.com/politics/videos/2015-11-25/karl-rove-on-jeb-bush-s-struggles-stopping-trump',\n        'only_matching': True,\n    }]\n\n    def _real_extract(self, url):\n        name = self._match_id(url)\n        webpage = self._download_webpage(url, name)\n        video_id = self._search_regex(\n            (r'[\"\\']bmmrId[\"\\']\\s*:\\s*([\"\\'])(?P<id>(?:(?!\\1).)+)\\1',\n             r'videoId\\s*:\\s*([\"\\'])(?P<id>(?:(?!\\1).)+)\\1',\n             r'data-bmmrid=([\"\\'])(?P<id>(?:(?!\\1).)+)\\1'),\n            webpage, 'id', group='id', default=None)\n        if not video_id:\n            bplayer_data = self._parse_json(self._search_regex(\n                r'BPlayer\\(null,\\s*({[^;]+})\\);', webpage, 'id'), name)\n            video_id = bplayer_data['id']\n        title = re.sub(': Video$', '', self._og_search_title(webpage))\n\n        embed_info = self._download_json(\n            'http://www.bloomberg.com/api/embed?id=%s' % video_id, video_id)\n        formats = []\n        for stream in embed_info['streams']:\n            stream_url = stream.get('url')\n            if not stream_url:\n                continue\n            if stream['muxing_format'] == 'TS':\n                formats.extend(self._extract_m3u8_formats(\n                    stream_url, video_id, 'mp4', m3u8_id='hls', fatal=False))\n            else:\n                formats.extend(self._extract_f4m_formats(\n                    stream_url, video_id, f4m_id='hds', fatal=False))\n        self._sort_formats(formats)\n\n        return {\n            'id': video_id,\n            'title': title,\n            'formats': formats,\n            'description': self._og_search_description(webpage),\n            'thumbnail': self._og_search_thumbnail(webpage),\n        }\n", "path": "yt_dlp/extractor/bloomberg.py"}], "after_files": [{"content": "import re\n\nfrom .common import InfoExtractor\n\n\nclass BloombergIE(InfoExtractor):\n    _VALID_URL = r'https?://(?:www\\.)?bloomberg\\.com/(?:[^/]+/)*(?P<id>[^/?#]+)'\n\n    _TESTS = [{\n        'url': 'https://www.bloomberg.com/news/videos/2021-09-14/apple-unveils-the-new-iphone-13-stock-doesn-t-move-much-video',\n        'info_dict': {\n            'id': 'V8cFcYMxTHaMcEiiYVr39A',\n            'ext': 'flv',\n            'title': 'Apple Unveils the New IPhone 13, Stock Doesn\\'t Move Much',\n        },\n        'params': {\n            'format': 'best[format_id^=hds]',\n        },\n    }, {\n        # video ID in BPlayer(...)\n        'url': 'http://www.bloomberg.com/features/2016-hello-world-new-zealand/',\n        'info_dict': {\n            'id': '938c7e72-3f25-4ddb-8b85-a9be731baa74',\n            'ext': 'flv',\n            'title': 'Meet the Real-Life Tech Wizards of Middle Earth',\n            'description': 'Hello World, Episode 1: New Zealand\u2019s freaky AI babies, robot exoskeletons, and a virtual you.',\n        },\n        'params': {\n            'format': 'best[format_id^=hds]',\n        },\n    }, {\n        # data-bmmrid=\n        'url': 'https://www.bloomberg.com/politics/articles/2017-02-08/le-pen-aide-briefed-french-central-banker-on-plan-to-print-money',\n        'only_matching': True,\n    }, {\n        'url': 'http://www.bloomberg.com/news/articles/2015-11-12/five-strange-things-that-have-been-happening-in-financial-markets',\n        'only_matching': True,\n    }, {\n        'url': 'http://www.bloomberg.com/politics/videos/2015-11-25/karl-rove-on-jeb-bush-s-struggles-stopping-trump',\n        'only_matching': True,\n    }]\n\n    def _real_extract(self, url):\n        name = self._match_id(url)\n        webpage = self._download_webpage(url, name)\n        video_id = self._search_regex(\n            (r'[\"\\']bmmrId[\"\\']\\s*:\\s*([\"\\'])(?P<id>(?:(?!\\1).)+)\\1',\n             r'videoId\\s*:\\s*([\"\\'])(?P<id>(?:(?!\\1).)+)\\1',\n             r'data-bmmrid=([\"\\'])(?P<id>(?:(?!\\1).)+)\\1'),\n            webpage, 'id', group='id', default=None)\n        if not video_id:\n            bplayer_data = self._parse_json(self._search_regex(\n                r'BPlayer\\(null,\\s*({[^;]+})\\);', webpage, 'id'), name)\n            video_id = bplayer_data['id']\n        title = re.sub(': Video$', '', self._og_search_title(webpage))\n\n        embed_info = self._download_json(\n            'http://www.bloomberg.com/multimedia/api/embed?id=%s' % video_id, video_id)\n        formats = []\n        for stream in embed_info['streams']:\n            stream_url = stream.get('url')\n            if not stream_url:\n                continue\n            if stream['muxing_format'] == 'TS':\n                formats.extend(self._extract_m3u8_formats(\n                    stream_url, video_id, 'mp4', m3u8_id='hls', fatal=False))\n            else:\n                formats.extend(self._extract_f4m_formats(\n                    stream_url, video_id, f4m_id='hds', fatal=False))\n        self._sort_formats(formats)\n\n        return {\n            'id': video_id,\n            'title': title,\n            'formats': formats,\n            'description': self._og_search_description(webpage),\n            'thumbnail': self._og_search_thumbnail(webpage),\n        }\n", "path": "yt_dlp/extractor/bloomberg.py"}]}