Repository: yt-dlp/yt-dlp
File: yt_dlp/extractor/fc2.py (Python)

Code before:
    _VALID_URL = r'(?:https?://video\.fc2\.com/(?:[^/]+/)*content/|fc2:)(?P<id>[^/]+)'
    IE_NAME = 'fc2'
    _NETRC_MACHINE = 'fc2'
    _TESTS = [{
        'url': 'http://video.fc2.com/en/content/20121103kUan1KHs',
        'md5': 'a6ebe8ebe0396518689d963774a54eb7',
        'info_dict': {
            'id': '20121103kUan1KHs',
            'title': 'Boxing again with Puff',
            'ext': 'mp4',
            'thumbnail': 're:https?://.+\\.jpe?g',
        },
        'file_minsize': 633,
        'params': {
            # Video too small to pass test
            'skip_download': 'm3u8',
        },
    }, {
        # Direct video url
        'url': 'https://video.fc2.com/content/20121129xMeT3Czt',
        'md5': '19109bbee429d5b3765986505d44a012',
        'info_dict': {
            'id': '20121129xMeT3Czt',
            'title': 'Rotfux',
            'ext': 'mp4',
            'thumbnail': 're:https?://.+\\.jpe?g',
            'description': 'Rotfux',
        },
    }, {
        'url': 'http://video.fc2.com/en/content/20150125cEva0hDn/',
        'info_dict': {
            'id': '20150125cEva0hDn',
            'ext': 'mp4',
        },
        'params': {
            'username': 'ytdl@yt-dl.org',
            'password': '(snip)',
        },
        'skip': 'requires actual password',
    }, {
        'url': 'http://video.fc2.com/en/a/content/20130926eZpARwsF',
        'only_matching': True,
    }]

    def _login(self):
        username, password = self._get_login_info()
        if username is None or password is None:
            return False

        # Log in
        login_form_strs = {

Review comment (suggestion):
```suggestion
            'thumbnail': r're:https?://.+\.jpe?g',
```

Code after:
    _VALID_URL = r'(?:https?://video\.fc2\.com/(?:[^/]+/)*content/|fc2:)(?P<id>[^/]+)'
    IE_NAME = 'fc2'
    _NETRC_MACHINE = 'fc2'
    _TESTS = [{
        'url': 'http://video.fc2.com/en/content/20121103kUan1KHs',
        'md5': 'a6ebe8ebe0396518689d963774a54eb7',
        'info_dict': {
            'id': '20121103kUan1KHs',
            'title': 'Boxing again with Puff',
            'ext': 'mp4',
            'thumbnail': r're:https?://.+\.jpe?g',
        },
        'params': {
            'skip_download': 'm3u8',
        },
    }, {
        # Direct video url
        'url': 'https://video.fc2.com/content/20121209FP73fxDx',
        'md5': '066bdb9b3a56a97f49cbf0d0b8a75a1f',
        'info_dict': {
            'id': '20121209FP73fxDx',
            'title': 'Farewelling The Wiggles Live in Sydney Dec 8 2012',
            'ext': 'mp4',
            'thumbnail': r're:https?://.+\.jpe?g',
            'description': 'Saying goodbye to the Wiggles at their Celebration Concert in Sydney, and what a concert that was!',
        },
    }, {
        'url': 'http://video.fc2.com/en/content/20150125cEva0hDn/',
        'info_dict': {
            'id': '20150125cEva0hDn',
            'ext': 'mp4',
        },
        'params': {
            'username': 'ytdl@yt-dl.org',
            'password': '(snip)',
        },
        'skip': 'requires actual password',
    }, {
        'url': 'http://video.fc2.com/en/a/content/20130926eZpARwsF',
        'only_matching': True,
    }]

    def _login(self):
        username, password = self._get_login_info()
        if username is None or password is None:
            return False

        # Log in
        login_form_strs = {
            'email': username,
            'password': password,