def _real_extract(self, url):
        mobj = re.match(self._VALID_URL, url)
        video_id = mobj.group('id')
        event_name = mobj.group('event_name')
        webpage = self._download_webpage(url, video_id or event_name)

        og_video = self._og_search_video_url(
            webpage, 'player url', fatal=False, default=None)
        if og_video is not None:
            query_str = compat_urllib_parse_urlparse(og_video).query
            query = compat_urlparse.parse_qs(query_str)
            if 'play_url' in query:
                api_url = query['play_url'][0].replace('.smil', '')
                info = json.loads(self._download_webpage(
                    api_url, video_id, 'Downloading video info'))
                return self._extract_video_info(info)

        config_json = self._search_regex(
            r'window.config = ({.*?});', webpage, 'window config')
        info = json.loads(config_json)['event']

        def is_relevant(vdata, vid):
            result = vdata['type'] == 'video'
            if video_id is not None:
                result = result and compat_str(vdata['data']['id']) == vid
            return result

        videos = [self._extract_video_info(video_data['data'])
                  for video_data in info['feed']['data']
                  if is_relevant(video_data, video_id)]
        if video_id is None:
            # This is an event page:
            return self.playlist_result(videos, info['id'], info['full_name'])
        else:
            if not videos:
                raise ExtractorError('Cannot find video %s' % video_id)
            return videos[0]


# The original version of Livestream uses a different system
dataset/ETHPy150Open yasoob/youtube-dl-GUI/youtube_dl/extractor/livestream.py/LivestreamIE._real_extract/original