We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
"Unable to extract OpenGraph" in FC2 Video
### Checklist

- [X] I'm reporting a broken site
- [X] I've verified that I'm running yt-dlp version **2022.02.04**. ([update instructions](https://github.com/yt-dlp/yt-dlp#update))
- [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](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

Japan

### Description

I get "Unable to extract OpenGraph" error whenever I try to download video from fc2.
Although it is a 24-minute video, the downloaded video is only 24KB.
I saw #2566 but it isn't solve.
Best regards.

### Verbose log

```shell
[debug] Command-line config: ['-vU', 'https://video.fc2.com/content/20220213MSqJytgT']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, err utf-8, pref UTF-8
[debug] yt-dlp version 2022.02.04 [c1653e9ef] (zip)
[debug] Python version 3.8.10 (CPython 64bit) - Linux-5.4.0-94-generic-x86_64-with-glibc2.29
[debug] exe versions: none
[debug] Optional libraries: secretstorage, sqlite
[debug] Proxy map: {}
Latest version: 2022.02.04, Current version: 2022.02.04
yt-dlp is up to date (2022.02.04)
[debug] [fc2] Extracting URL: https://video.fc2.com/content/20220213MSqJytgT
[fc2] 20220213MSqJytgT: Downloading webpage
WARNING: [fc2] unable to extract OpenGraph description; please report this issue on  https://github.com/yt-dlp/yt-dlp , filling out the "Broken site" issue template properly. Confirm you are on the latest version using -U
[fc2] 20220213MSqJytgT: Downloading info page
[debug] Default format spec: best/bestvideo+bestaudio
[info] 20220213MSqJytgT: Downloading 1 format(s): 0
[debug] Invoking downloader on "https://video.fc2.com/api/v3/videoplay/FGSFRL7G77YLaRCSvFvsjLRa7uFRYjSSOb2psTf/2?signature=92W9Q$3S_TLED-9427TY8JLOJYNDI$.F2YBGY5ZXL-&t=1644854861"
[download] Destination: やくならマグカップも 二番窯#1 [20220213MSqJytgT].mp4
[download] 100% of 24.32KiB in 00:00
```


--- 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/fc2.py`
Content:
```
1 # coding: utf-8
2 from __future__ import unicode_literals
3 
4 from .common import InfoExtractor
5 from ..compat import (
6     compat_parse_qs,
7 )
8 from ..utils import (
9     ExtractorError,
10     sanitized_Request,
11     traverse_obj,
12     urlencode_postdata,
13     urljoin,
14 )
15 
16 
17 class FC2IE(InfoExtractor):
18     _VALID_URL = r'^(?:https?://video\.fc2\.com/(?:[^/]+/)*content/|fc2:)(?P<id>[^/]+)'
19     IE_NAME = 'fc2'
20     _NETRC_MACHINE = 'fc2'
21     _TESTS = [{
22         'url': 'http://video.fc2.com/en/content/20121103kUan1KHs',
23         'md5': 'a6ebe8ebe0396518689d963774a54eb7',
24         'info_dict': {
25             'id': '20121103kUan1KHs',
26             'ext': 'flv',
27             'title': 'Boxing again with Puff',
28         },
29     }, {
30         'url': 'http://video.fc2.com/en/content/20150125cEva0hDn/',
31         'info_dict': {
32             'id': '20150125cEva0hDn',
33             'ext': 'mp4',
34         },
35         'params': {
36             'username': 'ytdl@yt-dl.org',
37             'password': '(snip)',
38         },
39         'skip': 'requires actual password',
40     }, {
41         'url': 'http://video.fc2.com/en/a/content/20130926eZpARwsF',
42         'only_matching': True,
43     }]
44 
45     def _login(self):
46         username, password = self._get_login_info()
47         if username is None or password is None:
48             return False
49 
50         # Log in
51         login_form_strs = {
52             'email': username,
53             'password': password,
54             'done': 'video',
55             'Submit': ' Login ',
56         }
57 
58         login_data = urlencode_postdata(login_form_strs)
59         request = sanitized_Request(
60             'https://secure.id.fc2.com/index.php?mode=login&switch_language=en', login_data)
61 
62         login_results = self._download_webpage(request, None, note='Logging in', errnote='Unable to log in')
63         if 'mode=redirect&login=done' not in login_results:
64             self.report_warning('unable to log in: bad username or password')
65             return False
66 
67         # this is also needed
68         login_redir = sanitized_Request('http://id.fc2.com/?mode=redirect&login=done')
69         self._download_webpage(
70             login_redir, None, note='Login redirect', errnote='Login redirect failed')
71 
72         return True
73 
74     def _real_extract(self, url):
75         video_id = self._match_id(url)
76         self._login()
77         webpage = None
78         if not url.startswith('fc2:'):
79             webpage = self._download_webpage(url, video_id)
80             self._downloader.cookiejar.clear_session_cookies()  # must clear
81             self._login()
82 
83         title, thumbnail, description = None, None, None
84         if webpage is not None:
85             title = self._html_search_regex(
86                 (r'<h2\s+class="videoCnt_title">([^<]+?)</h2>',
87                  r'\s+href="[^"]+"\s*title="([^"]+?)"\s*rel="nofollow">\s*<img',
88                  # there's two matches in the webpage
89                  r'\s+href="[^"]+"\s*title="([^"]+?)"\s*rel="nofollow">\s*\1'),
90                 webpage,
91                 'title', fatal=False)
92             thumbnail = self._og_search_thumbnail(webpage)
93             description = self._og_search_description(webpage)
94 
95         vidplaylist = self._download_json(
96             'https://video.fc2.com/api/v3/videoplaylist/%s?sh=1&fs=0' % video_id, video_id,
97             note='Downloading info page')
98         vid_url = traverse_obj(vidplaylist, ('playlist', 'nq'))
99         if not vid_url:
100             raise ExtractorError('Unable to extract video URL')
101         vid_url = urljoin('https://video.fc2.com/', vid_url)
102 
103         return {
104             'id': video_id,
105             'title': title,
106             'url': vid_url,
107             'ext': 'mp4',
108             'description': description,
109             'thumbnail': thumbnail,
110         }
111 
112 
113 class FC2EmbedIE(InfoExtractor):
114     _VALID_URL = r'https?://video\.fc2\.com/flv2\.swf\?(?P<query>.+)'
115     IE_NAME = 'fc2:embed'
116 
117     _TEST = {
118         'url': 'http://video.fc2.com/flv2.swf?t=201404182936758512407645&i=20130316kwishtfitaknmcgd76kjd864hso93htfjcnaogz629mcgfs6rbfk0hsycma7shkf85937cbchfygd74&i=201403223kCqB3Ez&d=2625&sj=11&lang=ja&rel=1&from=11&cmt=1&tk=TlRBM09EQTNNekU9&tl=プリズン･ブレイク%20S1-01%20マイケル%20【吹替】',
119         'md5': 'b8aae5334cb691bdb1193a88a6ab5d5a',
120         'info_dict': {
121             'id': '201403223kCqB3Ez',
122             'ext': 'flv',
123             'title': 'プリズン･ブレイク S1-01 マイケル 【吹替】',
124             'thumbnail': r're:^https?://.*\.jpg$',
125         },
126     }
127 
128     def _real_extract(self, url):
129         mobj = self._match_valid_url(url)
130         query = compat_parse_qs(mobj.group('query'))
131 
132         video_id = query['i'][-1]
133         title = query.get('tl', ['FC2 video %s' % video_id])[0]
134 
135         sj = query.get('sj', [None])[0]
136         thumbnail = None
137         if sj:
138             # See thumbnailImagePath() in ServerConst.as of flv2.swf
139             thumbnail = 'http://video%s-thumbnail.fc2.com/up/pic/%s.jpg' % (
140                 sj, '/'.join((video_id[:6], video_id[6:8], video_id[-2], video_id[-1], video_id)))
141 
142         return {
143             '_type': 'url_transparent',
144             'ie_key': FC2IE.ie_key(),
145             'url': 'fc2:%s' % video_id,
146             'title': title,
147             'thumbnail': thumbnail,
148         }
149
```
--- 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/fc2.py b/yt_dlp/extractor/fc2.py
--- a/yt_dlp/extractor/fc2.py
+++ b/yt_dlp/extractor/fc2.py
@@ -90,7 +90,7 @@
                 webpage,
                 'title', fatal=False)
             thumbnail = self._og_search_thumbnail(webpage)
-            description = self._og_search_description(webpage)
+            description = self._og_search_description(webpage, default=None)
 
         vidplaylist = self._download_json(
             'https://video.fc2.com/api/v3/videoplaylist/%s?sh=1&fs=0' % video_id, video_id,
@@ -105,6 +105,7 @@
             'title': title,
             'url': vid_url,
             'ext': 'mp4',
+            'protocol': 'm3u8_native',
             'description': description,
             'thumbnail': thumbnail,
         }

{"golden_diff": "diff --git a/yt_dlp/extractor/fc2.py b/yt_dlp/extractor/fc2.py\n--- a/yt_dlp/extractor/fc2.py\n+++ b/yt_dlp/extractor/fc2.py\n@@ -90,7 +90,7 @@\n                 webpage,\n                 'title', fatal=False)\n             thumbnail = self._og_search_thumbnail(webpage)\n-            description = self._og_search_description(webpage)\n+            description = self._og_search_description(webpage, default=None)\n \n         vidplaylist = self._download_json(\n             'https://video.fc2.com/api/v3/videoplaylist/%s?sh=1&fs=0' % video_id, video_id,\n@@ -105,6 +105,7 @@\n             'title': title,\n             'url': vid_url,\n             'ext': 'mp4',\n+            'protocol': 'm3u8_native',\n             'description': description,\n             'thumbnail': thumbnail,\n         }\n", "issue": "\"Unable to extract OpenGraph\" in FC2 Video\n### Checklist\n\n- [X] I'm reporting a broken site\n- [X] I've verified that I'm running yt-dlp version **2022.02.04**. ([update instructions](https://github.com/yt-dlp/yt-dlp#update))\n- [X] I've checked that all provided URLs are alive and playable in a browser\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\nJapan\n\n### Description\n\nI get \"Unable to extract OpenGraph\" error whenever I try to download video from fc2.\r\nAlthough it is a 24-minute video, the downloaded video is only 24KB.\r\nI saw #2566 but it isn't solve.\r\nBest regards.\n\n### Verbose log\n\n```shell\n[debug] Command-line config: ['-vU', 'https://video.fc2.com/content/20220213MSqJytgT']\r\n[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, err utf-8, pref UTF-8\r\n[debug] yt-dlp version 2022.02.04 [c1653e9ef] (zip)\r\n[debug] Python version 3.8.10 (CPython 64bit) - Linux-5.4.0-94-generic-x86_64-with-glibc2.29\r\n[debug] exe versions: none\r\n[debug] Optional libraries: secretstorage, sqlite\r\n[debug] Proxy map: {}\r\nLatest version: 2022.02.04, Current version: 2022.02.04\r\nyt-dlp is up to date (2022.02.04)\r\n[debug] [fc2] Extracting URL: https://video.fc2.com/content/20220213MSqJytgT\r\n[fc2] 20220213MSqJytgT: Downloading webpage\r\nWARNING: [fc2] unable to extract OpenGraph description; please report this issue on  https://github.com/yt-dlp/yt-dlp , filling out the \"Broken site\" issue template properly. Confirm you are on the latest version using -U\r\n[fc2] 20220213MSqJytgT: Downloading info page\r\n[debug] Default format spec: best/bestvideo+bestaudio\r\n[info] 20220213MSqJytgT: Downloading 1 format(s): 0\r\n[debug] Invoking downloader on \"https://video.fc2.com/api/v3/videoplay/FGSFRL7G77YLaRCSvFvsjLRa7uFRYjSSOb2psTf/2?signature=92W9Q$3S_TLED-9427TY8JLOJYNDI$.F2YBGY5ZXL-&t=1644854861\"\r\n[download] Destination: \u3084\u304f\u306a\u3089\u30de\u30b0\u30ab\u30c3\u30d7\u3082 \u4e8c\u756a\u7aaf#1 [20220213MSqJytgT].mp4\r\n[download] 100% of 24.32KiB in 00:00\n```\n\n", "before_files": [{"content": "# coding: utf-8\nfrom __future__ import unicode_literals\n\nfrom .common import InfoExtractor\nfrom ..compat import (\n    compat_parse_qs,\n)\nfrom ..utils import (\n    ExtractorError,\n    sanitized_Request,\n    traverse_obj,\n    urlencode_postdata,\n    urljoin,\n)\n\n\nclass FC2IE(InfoExtractor):\n    _VALID_URL = r'^(?:https?://video\\.fc2\\.com/(?:[^/]+/)*content/|fc2:)(?P<id>[^/]+)'\n    IE_NAME = 'fc2'\n    _NETRC_MACHINE = 'fc2'\n    _TESTS = [{\n        'url': 'http://video.fc2.com/en/content/20121103kUan1KHs',\n        'md5': 'a6ebe8ebe0396518689d963774a54eb7',\n        'info_dict': {\n            'id': '20121103kUan1KHs',\n            'ext': 'flv',\n            'title': 'Boxing again with Puff',\n        },\n    }, {\n        'url': 'http://video.fc2.com/en/content/20150125cEva0hDn/',\n        'info_dict': {\n            'id': '20150125cEva0hDn',\n            'ext': 'mp4',\n        },\n        'params': {\n            'username': 'ytdl@yt-dl.org',\n            'password': '(snip)',\n        },\n        'skip': 'requires actual password',\n    }, {\n        'url': 'http://video.fc2.com/en/a/content/20130926eZpARwsF',\n        'only_matching': True,\n    }]\n\n    def _login(self):\n        username, password = self._get_login_info()\n        if username is None or password is None:\n            return False\n\n        # Log in\n        login_form_strs = {\n            'email': username,\n            'password': password,\n            'done': 'video',\n            'Submit': ' Login ',\n        }\n\n        login_data = urlencode_postdata(login_form_strs)\n        request = sanitized_Request(\n            'https://secure.id.fc2.com/index.php?mode=login&switch_language=en', login_data)\n\n        login_results = self._download_webpage(request, None, note='Logging in', errnote='Unable to log in')\n        if 'mode=redirect&login=done' not in login_results:\n            self.report_warning('unable to log in: bad username or password')\n            return False\n\n        # this is also needed\n        login_redir = sanitized_Request('http://id.fc2.com/?mode=redirect&login=done')\n        self._download_webpage(\n            login_redir, None, note='Login redirect', errnote='Login redirect failed')\n\n        return True\n\n    def _real_extract(self, url):\n        video_id = self._match_id(url)\n        self._login()\n        webpage = None\n        if not url.startswith('fc2:'):\n            webpage = self._download_webpage(url, video_id)\n            self._downloader.cookiejar.clear_session_cookies()  # must clear\n            self._login()\n\n        title, thumbnail, description = None, None, None\n        if webpage is not None:\n            title = self._html_search_regex(\n                (r'<h2\\s+class=\"videoCnt_title\">([^<]+?)</h2>',\n                 r'\\s+href=\"[^\"]+\"\\s*title=\"([^\"]+?)\"\\s*rel=\"nofollow\">\\s*<img',\n                 # there's two matches in the webpage\n                 r'\\s+href=\"[^\"]+\"\\s*title=\"([^\"]+?)\"\\s*rel=\"nofollow\">\\s*\\1'),\n                webpage,\n                'title', fatal=False)\n            thumbnail = self._og_search_thumbnail(webpage)\n            description = self._og_search_description(webpage)\n\n        vidplaylist = self._download_json(\n            'https://video.fc2.com/api/v3/videoplaylist/%s?sh=1&fs=0' % video_id, video_id,\n            note='Downloading info page')\n        vid_url = traverse_obj(vidplaylist, ('playlist', 'nq'))\n        if not vid_url:\n            raise ExtractorError('Unable to extract video URL')\n        vid_url = urljoin('https://video.fc2.com/', vid_url)\n\n        return {\n            'id': video_id,\n            'title': title,\n            'url': vid_url,\n            'ext': 'mp4',\n            'description': description,\n            'thumbnail': thumbnail,\n        }\n\n\nclass FC2EmbedIE(InfoExtractor):\n    _VALID_URL = r'https?://video\\.fc2\\.com/flv2\\.swf\\?(?P<query>.+)'\n    IE_NAME = 'fc2:embed'\n\n    _TEST = {\n        'url': 'http://video.fc2.com/flv2.swf?t=201404182936758512407645&i=20130316kwishtfitaknmcgd76kjd864hso93htfjcnaogz629mcgfs6rbfk0hsycma7shkf85937cbchfygd74&i=201403223kCqB3Ez&d=2625&sj=11&lang=ja&rel=1&from=11&cmt=1&tk=TlRBM09EQTNNekU9&tl=\u30d7\u30ea\u30ba\u30f3\uff65\u30d6\u30ec\u30a4\u30af%20S1-01%20\u30de\u30a4\u30b1\u30eb%20\u3010\u5439\u66ff\u3011',\n        'md5': 'b8aae5334cb691bdb1193a88a6ab5d5a',\n        'info_dict': {\n            'id': '201403223kCqB3Ez',\n            'ext': 'flv',\n            'title': '\u30d7\u30ea\u30ba\u30f3\uff65\u30d6\u30ec\u30a4\u30af S1-01 \u30de\u30a4\u30b1\u30eb \u3010\u5439\u66ff\u3011',\n            'thumbnail': r're:^https?://.*\\.jpg$',\n        },\n    }\n\n    def _real_extract(self, url):\n        mobj = self._match_valid_url(url)\n        query = compat_parse_qs(mobj.group('query'))\n\n        video_id = query['i'][-1]\n        title = query.get('tl', ['FC2 video %s' % video_id])[0]\n\n        sj = query.get('sj', [None])[0]\n        thumbnail = None\n        if sj:\n            # See thumbnailImagePath() in ServerConst.as of flv2.swf\n            thumbnail = 'http://video%s-thumbnail.fc2.com/up/pic/%s.jpg' % (\n                sj, '/'.join((video_id[:6], video_id[6:8], video_id[-2], video_id[-1], video_id)))\n\n        return {\n            '_type': 'url_transparent',\n            'ie_key': FC2IE.ie_key(),\n            'url': 'fc2:%s' % video_id,\n            'title': title,\n            'thumbnail': thumbnail,\n        }\n", "path": "yt_dlp/extractor/fc2.py"}], "after_files": [{"content": "# coding: utf-8\nfrom __future__ import unicode_literals\n\nfrom .common import InfoExtractor\nfrom ..compat import (\n    compat_parse_qs,\n)\nfrom ..utils import (\n    ExtractorError,\n    sanitized_Request,\n    traverse_obj,\n    urlencode_postdata,\n    urljoin,\n)\n\n\nclass FC2IE(InfoExtractor):\n    _VALID_URL = r'^(?:https?://video\\.fc2\\.com/(?:[^/]+/)*content/|fc2:)(?P<id>[^/]+)'\n    IE_NAME = 'fc2'\n    _NETRC_MACHINE = 'fc2'\n    _TESTS = [{\n        'url': 'http://video.fc2.com/en/content/20121103kUan1KHs',\n        'md5': 'a6ebe8ebe0396518689d963774a54eb7',\n        'info_dict': {\n            'id': '20121103kUan1KHs',\n            'ext': 'flv',\n            'title': 'Boxing again with Puff',\n        },\n    }, {\n        'url': 'http://video.fc2.com/en/content/20150125cEva0hDn/',\n        'info_dict': {\n            'id': '20150125cEva0hDn',\n            'ext': 'mp4',\n        },\n        'params': {\n            'username': 'ytdl@yt-dl.org',\n            'password': '(snip)',\n        },\n        'skip': 'requires actual password',\n    }, {\n        'url': 'http://video.fc2.com/en/a/content/20130926eZpARwsF',\n        'only_matching': True,\n    }]\n\n    def _login(self):\n        username, password = self._get_login_info()\n        if username is None or password is None:\n            return False\n\n        # Log in\n        login_form_strs = {\n            'email': username,\n            'password': password,\n            'done': 'video',\n            'Submit': ' Login ',\n        }\n\n        login_data = urlencode_postdata(login_form_strs)\n        request = sanitized_Request(\n            'https://secure.id.fc2.com/index.php?mode=login&switch_language=en', login_data)\n\n        login_results = self._download_webpage(request, None, note='Logging in', errnote='Unable to log in')\n        if 'mode=redirect&login=done' not in login_results:\n            self.report_warning('unable to log in: bad username or password')\n            return False\n\n        # this is also needed\n        login_redir = sanitized_Request('http://id.fc2.com/?mode=redirect&login=done')\n        self._download_webpage(\n            login_redir, None, note='Login redirect', errnote='Login redirect failed')\n\n        return True\n\n    def _real_extract(self, url):\n        video_id = self._match_id(url)\n        self._login()\n        webpage = None\n        if not url.startswith('fc2:'):\n            webpage = self._download_webpage(url, video_id)\n            self._downloader.cookiejar.clear_session_cookies()  # must clear\n            self._login()\n\n        title, thumbnail, description = None, None, None\n        if webpage is not None:\n            title = self._html_search_regex(\n                (r'<h2\\s+class=\"videoCnt_title\">([^<]+?)</h2>',\n                 r'\\s+href=\"[^\"]+\"\\s*title=\"([^\"]+?)\"\\s*rel=\"nofollow\">\\s*<img',\n                 # there's two matches in the webpage\n                 r'\\s+href=\"[^\"]+\"\\s*title=\"([^\"]+?)\"\\s*rel=\"nofollow\">\\s*\\1'),\n                webpage,\n                'title', fatal=False)\n            thumbnail = self._og_search_thumbnail(webpage)\n            description = self._og_search_description(webpage, default=None)\n\n        vidplaylist = self._download_json(\n            'https://video.fc2.com/api/v3/videoplaylist/%s?sh=1&fs=0' % video_id, video_id,\n            note='Downloading info page')\n        vid_url = traverse_obj(vidplaylist, ('playlist', 'nq'))\n        if not vid_url:\n            raise ExtractorError('Unable to extract video URL')\n        vid_url = urljoin('https://video.fc2.com/', vid_url)\n\n        return {\n            'id': video_id,\n            'title': title,\n            'url': vid_url,\n            'ext': 'mp4',\n            'protocol': 'm3u8_native',\n            'description': description,\n            'thumbnail': thumbnail,\n        }\n\n\nclass FC2EmbedIE(InfoExtractor):\n    _VALID_URL = r'https?://video\\.fc2\\.com/flv2\\.swf\\?(?P<query>.+)'\n    IE_NAME = 'fc2:embed'\n\n    _TEST = {\n        'url': 'http://video.fc2.com/flv2.swf?t=201404182936758512407645&i=20130316kwishtfitaknmcgd76kjd864hso93htfjcnaogz629mcgfs6rbfk0hsycma7shkf85937cbchfygd74&i=201403223kCqB3Ez&d=2625&sj=11&lang=ja&rel=1&from=11&cmt=1&tk=TlRBM09EQTNNekU9&tl=\u30d7\u30ea\u30ba\u30f3\uff65\u30d6\u30ec\u30a4\u30af%20S1-01%20\u30de\u30a4\u30b1\u30eb%20\u3010\u5439\u66ff\u3011',\n        'md5': 'b8aae5334cb691bdb1193a88a6ab5d5a',\n        'info_dict': {\n            'id': '201403223kCqB3Ez',\n            'ext': 'flv',\n            'title': '\u30d7\u30ea\u30ba\u30f3\uff65\u30d6\u30ec\u30a4\u30af S1-01 \u30de\u30a4\u30b1\u30eb \u3010\u5439\u66ff\u3011',\n            'thumbnail': r're:^https?://.*\\.jpg$',\n        },\n    }\n\n    def _real_extract(self, url):\n        mobj = self._match_valid_url(url)\n        query = compat_parse_qs(mobj.group('query'))\n\n        video_id = query['i'][-1]\n        title = query.get('tl', ['FC2 video %s' % video_id])[0]\n\n        sj = query.get('sj', [None])[0]\n        thumbnail = None\n        if sj:\n            # See thumbnailImagePath() in ServerConst.as of flv2.swf\n            thumbnail = 'http://video%s-thumbnail.fc2.com/up/pic/%s.jpg' % (\n                sj, '/'.join((video_id[:6], video_id[6:8], video_id[-2], video_id[-1], video_id)))\n\n        return {\n            '_type': 'url_transparent',\n            'ie_key': FC2IE.ie_key(),\n            'url': 'fc2:%s' % video_id,\n            'title': title,\n            'thumbnail': thumbnail,\n        }\n", "path": "yt_dlp/extractor/fc2.py"}]}