From 91557e752cf758cbab229373939a1bb1ca08afbb Mon Sep 17 00:00:00 2001 From: df Date: Mon, 13 Sep 2021 13:06:03 +0100 Subject: [PATCH] Use player_token in JSON retrieval --- youtube_dl/extractor/slideslive.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/youtube_dl/extractor/slideslive.py b/youtube_dl/extractor/slideslive.py index 9409a0100..31071d014 100644 --- a/youtube_dl/extractor/slideslive.py +++ b/youtube_dl/extractor/slideslive.py @@ -4,6 +4,7 @@ from __future__ import unicode_literals from .common import InfoExtractor from ..utils import ( bool_or_none, + extract_attributes, smuggle_url, try_get, url_or_none, @@ -54,8 +55,17 @@ class SlidesLiveIE(InfoExtractor): def _real_extract(self, url): video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + player = self._search_regex( + r']*?id\s*=\s*(?P\'|"|\b)player(?P=q)(?:\s[^>]*)?>.*?', + webpage, 'player div', fatal=False, group=0) + player = (player and extract_attributes(player)) or {} + token = player.get('data-player-token') + if not token: + raise ExtractorError('Unable to get player token', expected=True) video_data = self._download_json( - 'https://ben.slideslive.com/player/' + video_id, video_id) + 'https://ben.slideslive.com/player/' + video_id, video_id, + query={'player_token': token, }) service_name = video_data['video_service_name'].lower() assert service_name in ('url', 'yoda', 'vimeo', 'youtube') service_id = video_data['video_service_id']