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

Code before:
                'embed_parent_url': referer,
                'embed_container_origin': f'https://{urllib.parse.urlparse(referer).netloc}',
            })
        return video_url

    def _extract_videos(self, videos, url):
        for video in traverse_obj(videos, ('videos', ...)):
            video_id = video.get('youtube_id')
            if not video_id:
                continue
            ie_key = None
            if video.get('type') == 'youtube':
                video_url = video_id
                ie_key = 'Youtube'
            else:
                video_url = video.get('embed_url')
                if urllib.parse.urlparse(video_url).netloc == 'slideslive.com':
                    ie_key = 'SlidesLive'
                    video_url = self._create_slideslive_url(video_url, video_id, url)
            if not video_url:
                continue
            yield self.url_result(video_url, ie_key, video_id)


class VideoKenIE(VideoKenBaseIE):
    _VALID_URL = VideoKenBaseIE._BASE_URL_RE + r'(?:(?:topic|category)/[^/#?]+/)?video/(?P<id>[\w_-]+)'
    _TESTS = [{
        # neurips -> videoken -> slideslive
        'url': 'https://videos.neurips.cc/video/slideslive-38922815',
        'info_dict': {
            'id': '38922815',
            'ext': 'mp4',
            'title': 'Efficient Processing of Deep Neural Network: from Algorithms to Hardware Architectures',
            'timestamp': 1630939331,
            'upload_date': '20210906',
            'thumbnail': r're:^https?://.*\.(?:jpg|png)',
            'thumbnails': 'count:330',
            'chapters': 'count:329',
        },
        'params': {
            'skip_download': 'm3u8',
        },
    }, {
        # neurips -> videoken -> slideslive -> youtube
        'url': 'https://videos.neurips.cc/topic/machine%20learning/video/slideslive-38923348',
        'info_dict': {
            'id': '2Xa_dt78rJE',
            'ext': 'mp4',
            'display_id': '38923348',
            'title': 'Machine Education',
            'description': 'Watch full version of this video at https://slideslive.com/38923348.',

Review comment (suggestion):
```suggestion
    _VALID_URL = VideoKenBaseIE._BASE_URL_RE + r'(?:(?:topic|category)/[^/#?]+/)?video/(?P<id>[\w-]+)'
```
\w includes _

Code after:
            video_url = f'https://slideslive.com/embed/{video_id.lstrip("slideslive-")}'
        if url_or_none(referer):
            return update_url_query(video_url, {
                'embed_parent_url': referer,
                'embed_container_origin': f'https://{urllib.parse.urlparse(referer).netloc}',
            })
        return video_url

    def _extract_videos(self, videos, url):
        for video in traverse_obj(videos, (('videos', 'results'), ...)):
            video_id = traverse_obj(video, 'youtube_id', 'videoid')
            if not video_id:
                continue
            ie_key = None
            if traverse_obj(video, 'type', 'source') == 'youtube':
                video_url = video_id
                ie_key = 'Youtube'
            else:
                video_url = traverse_obj(video, 'embed_url', 'embeddableurl')
                if urllib.parse.urlparse(video_url).netloc == 'slideslive.com':
                    ie_key = SlidesLiveIE
                    video_url = self._create_slideslive_url(video_url, video_id, url)
            if not video_url:
                continue
            yield self.url_result(video_url, ie_key, video_id)


class VideoKenIE(VideoKenBaseIE):
    _VALID_URL = VideoKenBaseIE._BASE_URL_RE + r'(?:(?:topic|category)/[^/#?]+/)?video/(?P<id>[\w-]+)'
    _TESTS = [{
        # neurips -> videoken -> slideslive
        'url': 'https://videos.neurips.cc/video/slideslive-38922815',
        'info_dict': {
            'id': '38922815',
            'ext': 'mp4',
            'title': 'Efficient Processing of Deep Neural Network: from Algorithms to Hardware Architectures',
            'timestamp': 1630939331,
            'upload_date': '20210906',
            'thumbnail': r're:^https?://.*\.(?:jpg|png)',
            'thumbnails': 'count:330',
            'chapters': 'count:329',
        },
        'params': {
            'skip_download': 'm3u8',
        },
        'expected_warnings': ['Failed to download VideoKen API JSON'],
    }, {
        # neurips -> videoken -> slideslive -> youtube
        'url': 'https://videos.neurips.cc/topic/machine%20learning/video/slideslive-38923348',
        'info_dict': {
            'id': '2Xa_dt78rJE',