def METHOD_NAME(self, url):
    video_id = self._match_id(url)
    content = self._call_api(
        '1.5', 'IN/CONTENT/VIDEOURL/VOD/' + video_id, video_id)
    if content.get('isEncrypted'):
        raise ExtractorError('This video is DRM protected.', expected=True)
    dash_url = content['videoURL']
    headers = {
        'x-playback-session-id': '%s-%d' % (uuid.uuid4().hex, time.time() * 1000)
    }
    formats = self._extract_mpd_formats(
        dash_url, video_id, mpd_id='dash', headers=headers, fatal=False)
    formats.extend(self._extract_m3u8_formats(
        dash_url.replace('.mpd', '.m3u8').replace('/DASH/', '/HLS/'),
        video_id, 'mp4', m3u8_id='hls', headers=headers, fatal=False))
    for f in formats:
        f.setdefault('http_headers', {}).update(headers)
    self._sort_formats(formats)
    metadata = self._call_api(
        '1.6', 'IN/DETAIL/' + video_id, video_id)['containers'][0]['metadata']
    title = metadata['title']
    episode = metadata.get('episodeTitle')
    if episode and title != episode:
        title += ' - ' + episode
    return {
        'id': video_id,
        'title': title,
        'formats': formats,
        'thumbnail': content.get('posterURL'),
        'description': metadata.get('longDescription') or metadata.get('shortDescription'),
        'timestamp': int_or_none(metadata.get('creationDate'), 1000),
        'duration': int_or_none(metadata.get('duration')),
        'season_number': int_or_none(metadata.get('season')),
        'episode': episode,
        'episode_number': int_or_none(metadata.get('episodeNumber')),
        'release_year': int_or_none(metadata.get('year')),
    }