def METHOD_NAME(self, url):
    display_id = self._match_id(url)
    webpage = self._download_webpage(
        url, display_id, headers=self.geo_verification_headers())
    video = self._parse_json(self._search_regex(
        r'videoObject\s*=\s*JSON\.parse\(JSON\.stringify\(({.+?})\)\);',
        webpage, 'video object'), display_id)
    video_id = self._search_regex(
        r'<input\s*id\s*=\s*player-id-name\s*[^>]+value\s*=\s*(\w+)', webpage, 'video id')
    formats = self._extract_m3u8_formats(
        video['VideoSource'], video_id, 'mp4', 'm3u8_native')
    subtitles = {}
    for s in (video.get('Subtitles') or {}):
        s_url = s.get('Url')
        if not s_url:
            continue
        subtitles.setdefault(s.get('Language') or 'cz', []).append({
            'url': s_url,
        })
    entity_counts = video.get('EntityCounts') or {}
    def get_count(k):
        v = entity_counts.get(k + 's') or {}
        return int_or_none(dict_get(v, ('Count', 'StrCount')))
    info = self._search_json_ld(webpage, video_id, default={})
    return merge_dicts({
        'id': str(video_id),
        'display_id': display_id,
        'title': video.get('Title'),
        'description': clean_html(video.get('Description')),
        'thumbnail': video.get('ThumbnailUrl'),
        'formats': formats,
        'subtitles': subtitles,
        'duration': int_or_none(video.get('DurationSeconds')) or parse_duration(video.get('Duration')),
        'view_count': get_count('View'),
        'like_count': get_count('Like'),
        'dislike_count': get_count('Dislike'),
        'average_rating': float_or_none(try_get(video, lambda x: x['EntityRating']['AvarageRate'])),
        'comment_count': get_count('Comment'),
    }, info)