def METHOD_NAME(self, url):
    display_id = self._match_id(url)
    webpage = self._download_webpage(url, display_id)
    page_data = self._parse_json(self._search_regex(
        r'window\.__data\s*=\s*({.*?});', webpage,
        'page data', default='{}'), display_id, fatal=False)
    if not page_data:
        page_data = self._parse_json(self._parse_json(self._search_regex(
            r'window\.__data\s*=\s*JSON\.parse\s*\(\s*(".+?")\s*\)\s*;',
            webpage, 'page data'), display_id), display_id)
    for kind in ('episode', 'clip'):
        current_key = page_data.get(kind, {}).get(
            'current%sKey' % kind.capitalize())
        if not current_key:
            continue
        cache = page_data.get(kind, {}).get('%sCache' % kind, {})
        if not cache:
            continue
        common_data = {
            'episode': (cache.get(current_key) or list(cache.values())[0])[kind],
            'season': (cache.get(current_key) or list(cache.values())[0]).get('season', None)
        }
        break
    else:
        raise ExtractorError('Unable to find video data')
    if not self.get_param('allow_unplayable_formats') and try_get(common_data, lambda x: x['episode']['video']['drm'], bool):
        self.report_drm(display_id)
    brightcove_id = try_get(
        common_data, lambda x: x['episode']['video']['brightcoveId'], compat_str) or 'ref:%s' % common_data['episode']['video']['referenceId']
    video_id = str_or_none(try_get(common_data, lambda x: x['episode']['video']['id'])) or brightcove_id
    title = try_get(common_data, lambda x: x['episode']['name'], compat_str)
    season_number = try_get(common_data, lambda x: x['season']['seasonNumber'], int)
    episode_number = try_get(common_data, lambda x: x['episode']['episodeNumber'], int)
    timestamp = unified_timestamp(try_get(common_data, lambda x: x['episode']['airDate'], compat_str))
    release_date = unified_strdate(try_get(common_data, lambda x: x['episode']['availability'], compat_str))
    thumbnails_data = try_get(common_data, lambda x: x['episode']['image']['sizes'], dict) or {}
    thumbnails = [{
        'id': thumbnail_id,
        'url': thumbnail_url,
        'width': int_or_none(thumbnail_id[1:]),
    } for thumbnail_id, thumbnail_url in thumbnails_data.items()]
    return {
        '_type': 'url_transparent',
        'url': smuggle_url(
            self.BRIGHTCOVE_URL_TEMPLATE % brightcove_id,
            {'geo_countries': self._GEO_COUNTRIES}),
        'id': video_id,
        'title': title,
        'description': try_get(common_data, lambda x: x['episode']['description'], compat_str),
        'duration': float_or_none(try_get(common_data, lambda x: x['episode']['video']['duration'], float), 1000),
        'thumbnails': thumbnails,
        'ie_key': 'BrightcoveNew',
        'season_number': season_number,
        'episode_number': episode_number,
        'timestamp': timestamp,
        'release_date': release_date,
    }