From 744df7ab325c6ee28c5a877002adfba91f0e7a36 Mon Sep 17 00:00:00 2001 From: Pete Johns Date: Sun, 12 May 2019 20:42:56 +1000 Subject: [PATCH] Extract SBSNewsIE from SBSIE --- youtube_dl/extractor/extractors.py | 5 ++- youtube_dl/extractor/sbs.py | 65 ++++++++++++++++-------------- 2 files changed, 38 insertions(+), 32 deletions(-) diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index 3037b5a45..7c3cc6a14 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -1005,7 +1005,10 @@ from .safari import ( ) from .sapo import SapoIE from .savefrom import SaveFromIE -from .sbs import SBSIE +from .sbs import ( + SBSIE, + SBSNewsIE, +) from .screencast import ScreencastIE from .screencastomatic import ScreencastOMaticIE from .scrippsnetworks import ScrippsNetworksWatchIE diff --git a/youtube_dl/extractor/sbs.py b/youtube_dl/extractor/sbs.py index 9dd964cec..07a0c33fa 100644 --- a/youtube_dl/extractor/sbs.py +++ b/youtube_dl/extractor/sbs.py @@ -1,8 +1,6 @@ # coding: utf-8 from __future__ import unicode_literals -import re - from .common import InfoExtractor from ..utils import ( smuggle_url, @@ -12,23 +10,9 @@ from ..utils import ( class SBSIE(InfoExtractor): IE_DESC = 'sbs.com.au' - _VALID_URL = r'https?://(?:www\.)?sbs\.com\.au/(?:ondemand|news)/(?:video/)?(?:single/)?([0-9]+|[0-9a-z-]+)' + _VALID_URL = r'https?://(?:www\.)?sbs\.com\.au/(?:ondemand|news)/video/(?:single/)?(?P[0-9]+)' _TESTS = [{ - 'url': 'https://www.sbs.com.au/news/are-the-campaigns-working-voters-speak-out', - 'md5': '2b73ddcbb597f24a87167826c47398f8', - 'info_dict': { - 'id': 'Vznr2YGb83mF', - 'ext': 'mp4', - 'title': 'Are the campaigns cutting through?', - 'description': 'md5:d41d8cd98f00b204e9800998ecf8427e', - 'thumbnail': r're:http://.*\.jpg', - 'duration': 146, - 'timestamp': 1557552900, - 'upload_date': '20190511', - 'uploader': 'SBSC', - } - }, { # Original URL is handled by the generic IE which finds the iframe: # http://www.sbs.com.au/thefeed/blog/2014/08/21/dingo-conservation 'url': 'http://www.sbs.com.au/ondemand/video/single/320403011771/?source=drupal&vertical=thefeed', @@ -52,21 +36,8 @@ class SBSIE(InfoExtractor): 'only_matching': True, }] - def video_id_from_page_contents(self, url): - page_contents = self._download_webpage(url, None) - video_id = self._search_regex(r'id="video-(\d+)"', page_contents, 'video id') - return video_id - - def video_id(self, url): - ID_BEARING_URL = r'https?://(?:www\.)?sbs\.com\.au/(?:ondemand|news)/video/(?:single/)?(?P[0-9]+)' - match = re.match(ID_BEARING_URL, url) - if match: - return match.group('id') - else: - return self.video_id_from_page_contents(url) - def _real_extract(self, url): - video_id = self.video_id(url) + video_id = self._video_id(url) player_params = self._download_json( 'http://www.sbs.com.au/api/video_pdkvars/id/%s?form=json' % video_id, video_id) @@ -93,3 +64,35 @@ class SBSIE(InfoExtractor): 'id': video_id, 'url': smuggle_url(self._proto_relative_url(theplatform_url), {'force_smil_url': True}), } + + def _video_id(self, url): + return self._match_id(url) + + +class SBSNewsIE(SBSIE): + _VALID_URL = r'https?://(?:www\.)?sbs\.com\.au/news/(?P[0-9a-z-]+)' + + _TESTS = [{ + 'url': 'https://www.sbs.com.au/news/are-the-campaigns-working-voters-speak-out', + 'only_matching': True, + 'md5': '2b73ddcbb597f24a87167826c47398f8', + 'info_dict': { + 'id': 'Vznr2YGb83mF', + 'ext': 'mp4', + 'title': 'Are the campaigns cutting through?', + 'description': 'md5:d41d8cd98f00b204e9800998ecf8427e', + 'thumbnail': r're:http://.*\.jpg', + 'duration': 146, + 'timestamp': 1557552900, + 'upload_date': '20190511', + 'uploader': 'SBSC', + }, + }, { + 'url': 'https://www.sbs.com.au/news/sbs-world-news-bulletin-may-11', + 'only_matching': True, + }] + + def _video_id(self, url): + slug = self._match_id(url) + page_contents = self._download_webpage(url, slug) + return self._search_regex(r'id="video-(\d+)"', page_contents, 'video id')