Repository: yt-dlp/yt-dlp

Issue:
Site Request: Wimbledon.com
### 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'm running yt-dlp version **2023.06.22** ([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 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

canada

### Example URLs

https://www.wimbledon.com/en_GB/video/media/6330247525112.html

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

[The Wimbledon Championships, commonly known simply as Wimbledon, is the oldest tennis tournament in the world and is widely regarded as the most prestigious](https://en.wikipedia.org/wiki/Wimbledon_Championships)

### 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.py -vU 'https://www.wimbledon.com/en_GB/video/media/6330247525112.html'
[debug] Command-line config: ['-vU', "'https://www.wimbledon.com/en_GB/video/media/6330247525112.html'"]
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version stable@2023.06.22 [812cdfa06] (zip)
[debug] Python 3.10.5 (CPython AMD64 64bit) - Windows-10-10.0.14393-SP0 (OpenSSL 1.1.1n  15 Mar 2022)
[debug] exe versions: ffmpeg 4.3.2-2021-02-02-full_build-www.gyan.dev, ffprobe 4.3.2-2021-02-02-full_build-www.gyan.dev, rtmpdump 2.4
[debug] Optional libraries: sqlite3-2.6.0
[debug] Proxy map: {}
[debug] Loaded 1851 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Available version: stable@2023.06.22, Current version: stable@2023.06.22
Current Build Hash: 924464eb831bdb99d854b9d47ff9e1c0870eab276113adaf8a74a8561ad332b9
yt-dlp is up to date (stable@2023.06.22)
[generic] Extracting URL: 'https://www.wimbledon.com/en_GB/video/media/6330247525112.html'
ERROR: [generic] None: "'https://www.wimbledon.com/en_GB/video/media/6330247525112.html'" is not a valid URL. Set --default-search "ytsearch" (or run  yt-dlp "ytsearch:'https://www.wimbledon.com/en_GB/video/media/6330247525112.html'" ) to search YouTube
  File "C:\Transmogrifier\yt-dlp.py\yt_dlp\extractor\common.py", line 708, in extract
    ie_result = self._real_extract(url)
  File "C:\Transmogrifier\yt-dlp.py\yt_dlp\extractor\generic.py", line 2403, in _real_extract
    raise ExtractorError(
```



Discussion:
don't single-quote your input URL if you are using cmd, it treats them as normal characters that are part of the argument
MyBad... @bashonly  is correct... 
```

>yt-dlp.py -vU "https://www.wimbledon.com/en_GB/video/media/6330247525112.html"
[debug] Command-line config: ['-vU', 'https://www.wimbledon.com/en_GB/video/media/6330247525112.html']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version stable@2023.06.22 [812cdfa06] (zip)
[debug] Python 3.10.5 (CPython AMD64 64bit) - Windows-10-10.0.14393-SP0 (OpenSSL 1.1.1n  15 Mar 2022)
[debug] exe versions: ffmpeg 4.3.2-2021-02-02-full_build-www.gyan.dev, ffprobe 4.3.2-2021-02-02-full_build-www.gyan.dev, rtmpdump 2.4
[debug] Optional libraries: sqlite3-2.6.0
[debug] Proxy map: {}
[debug] Loaded 1851 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Available version: stable@2023.06.22, Current version: stable@2023.06.22
Current Build Hash: 924464eb831bdb99d854b9d47ff9e1c0870eab276113adaf8a74a8561ad332b9
yt-dlp is up to date (stable@2023.06.22)
[generic] Extracting URL: https://www.wimbledon.com/en_GB/video/media/6330247525112.html
[generic] 6330247525112: Downloading webpage
WARNING: [generic] Falling back on generic information extractor
[generic] 6330247525112: Extracting information
[debug] Looking for embeds
ERROR: Unsupported URL: https://www.wimbledon.com/en_GB/video/media/6330247525112.html
Traceback (most recent call last):
  File "C:\Transmogrifier\yt-dlp.py\yt_dlp\YoutubeDL.py", line 1555, in wrapper
    return func(self, *args, **kwargs)
  File "C:\Transmogrifier\yt-dlp.py\yt_dlp\YoutubeDL.py", line 1631, in __extract_info
    ie_result = ie.extract(url)
  File "C:\Transmogrifier\yt-dlp.py\yt_dlp\extractor\common.py", line 708, in extract
    ie_result = self._real_extract(url)
  File "C:\Transmogrifier\yt-dlp.py\yt_dlp\extractor\generic.py", line 2568, in _real_extract
    raise UnsupportedError(url)
yt_dlp.utils.UnsupportedError: Unsupported URL: https://www.wimbledon.com/en_GB/video/media/6330247525112.html

```
notes for devs:

We can extract the id from the url (`6330247525112`), which is both the brightcove video id and the wimbledon api id

site calls this endpoint for metadata:
https://www.wimbledon.com/relatedcontent/rest/v2/wim_v1/en/content/wim_v1_6330247525112_en

the site's  brightcove account id is `3506358525001`, and we can use this url template to return a url result to the brightcove extractor:
`https://players.brightcove.net/3506358525001/default_default/index.html?videoId={video_id}`

Resolving patch:
diff --git a/yt_dlp/extractor/_extractors.py b/yt_dlp/extractor/_extractors.py
--- a/yt_dlp/extractor/_extractors.py
+++ b/yt_dlp/extractor/_extractors.py
@@ -2360,6 +2360,7 @@
 from .whyp import WhypIE
 from .wikimedia import WikimediaIE
 from .willow import WillowIE
+from .wimbledon import WimbledonIE
 from .wimtv import WimTVIE
 from .whowatch import WhoWatchIE
 from .wistia import (
diff --git a/yt_dlp/extractor/wimbledon.py b/yt_dlp/extractor/wimbledon.py
new file mode 100644
--- /dev/null
+++ b/yt_dlp/extractor/wimbledon.py
@@ -0,0 +1,61 @@
+from .common import InfoExtractor
+from ..utils import (
+    parse_duration,
+    traverse_obj,
+)
+
+
+class WimbledonIE(InfoExtractor):
+    _VALID_URL = r'https?://(?:www\.)?wimbledon\.com/\w+/video/media/(?P<id>\d+).html'
+    _TESTS = [{
+        'url': 'https://www.wimbledon.com/en_GB/video/media/6330247525112.html',
+        'info_dict': {
+            'id': '6330247525112',
+            'ext': 'mp4',
+            'timestamp': 1687972186,
+            'description': '',
+            'thumbnail': r're:^https://[\w.-]+\.prod\.boltdns\.net/[^?#]+/image\.jpg',
+            'upload_date': '20230628',
+            'title': 'Coco Gauff | My Wimbledon Inspiration',
+            'tags': ['features', 'trending', 'homepage'],
+            'uploader_id': '3506358525001',
+            'duration': 163072.0,
+        },
+    }, {
+        'url': 'https://www.wimbledon.com/en_GB/video/media/6308703111112.html',
+        'info_dict': {
+            'id': '6308703111112',
+            'ext': 'mp4',
+            'thumbnail': r're:^https://[\w.-]+\.prod\.boltdns\.net/[^?#]+/image\.jpg',
+            'description': 'null',
+            'upload_date': '20220629',
+            'uploader_id': '3506358525001',
+            'title': 'Roblox | WimbleWorld ',
+            'duration': 101440.0,
+            'tags': ['features', 'kids'],
+            'timestamp': 1656500867,
+        },
+    }, {
+        'url': 'https://www.wimbledon.com/en_US/video/media/6309327106112.html',
+        'only_matching': True,
+    }, {
+        'url': 'https://www.wimbledon.com/es_Es/video/media/6308377909112.html',
+        'only_matching': True,
+    }]
+
+    def _real_extract(self, url):
+        video_id = self._match_id(url)
+        metadata = self._download_json(
+            f'https://www.wimbledon.com/relatedcontent/rest/v2/wim_v1/en/content/wim_v1_{video_id}_en', video_id)
+
+        return {
+            '_type': 'url_transparent',
+            'url': f'http://players.brightcove.net/3506358525001/default_default/index.html?videoId={video_id}',
+            'ie_key': 'BrightcoveNew',
+            'id': video_id,
+            **traverse_obj(metadata, {
+                'title': 'title',
+                'description': 'description',
+                'duration': ('metadata', 'duration', {parse_duration}),
+            }),
+        }


Test patch: