From 4194bd80f28c7ae5c7c8feec032c01c59840cbd7 Mon Sep 17 00:00:00 2001 From: Alex Seiler Date: Tue, 17 Oct 2017 03:08:12 +0200 Subject: [PATCH 1/4] [Servus] Add new extractor --- youtube_dl/extractor/extractors.py | 1 + youtube_dl/extractor/servus.py | 40 ++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 youtube_dl/extractor/servus.py diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index ecb33bc9e..57b0da5c3 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -925,6 +925,7 @@ from .seeker import SeekerIE from .senateisvp import SenateISVPIE from .sendtonews import SendtoNewsIE from .servingsys import ServingSysIE +from .servus import ServusIE from .sexu import SexuIE from .shahid import ShahidIE from .shared import ( diff --git a/youtube_dl/extractor/servus.py b/youtube_dl/extractor/servus.py new file mode 100644 index 000000000..e8f3e5e96 --- /dev/null +++ b/youtube_dl/extractor/servus.py @@ -0,0 +1,40 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor + + +class ServusIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?servus\.com/(?:at|de)/p/[^/]+/(?P[^/]+)/$' + _TEST = { + 'url': 'https://www.servus.com/de/p/Die-Gr%C3%BCnen-aus-Sicht-des-Volkes/AA-1T6VBU5PW1W12/', + 'md5': '046dee641cda1c4cabe13baef3be2c1c', + 'info_dict': { + 'id': 'AA-1T6VBU5PW1W12', + 'ext': 'mp4', + 'title': 'Die GrĂ¼nen aus Volkssicht', + 'description': 'md5:052b5da1cb2cd7d562ef1f19be5a5cba', + 'thumbnail': r're:^https?://.*\.jpg$', + } + } + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + + title = self._og_search_title(webpage) + description = self._og_search_description(webpage) + thumbnail = self._og_search_thumbnail(webpage) + + m3u8_url = 'https://stv.rbmbtnx.net/api/v1/manifests/%s.m3u8' % video_id + formats = self._extract_m3u8_formats( + m3u8_url, video_id, 'mp4', entry_protocol='m3u8_native') + self._sort_formats(formats) + + return { + 'id': video_id, + 'title': title, + 'description': description, + 'thumbnail': thumbnail, + 'formats': formats, + } From e4fb8ff34943c95326547eec0f55d5c8d9b0c089 Mon Sep 17 00:00:00 2001 From: Alex Seiler Date: Thu, 19 Oct 2017 02:38:28 +0200 Subject: [PATCH 2/4] Adjusted _VALID_URL regular expression and added m3u8_id to _extract_m3u8_formats(). --- youtube_dl/extractor/servus.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/servus.py b/youtube_dl/extractor/servus.py index e8f3e5e96..8520366f8 100644 --- a/youtube_dl/extractor/servus.py +++ b/youtube_dl/extractor/servus.py @@ -5,7 +5,7 @@ from .common import InfoExtractor class ServusIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?servus\.com/(?:at|de)/p/[^/]+/(?P[^/]+)/$' + _VALID_URL = r'https?://(?:www\.)?servus\.com/(?:at|de)/p/[^/]+/(?P(?:AA-[A-Z\d]+|\d+-\d+))/' _TEST = { 'url': 'https://www.servus.com/de/p/Die-Gr%C3%BCnen-aus-Sicht-des-Volkes/AA-1T6VBU5PW1W12/', 'md5': '046dee641cda1c4cabe13baef3be2c1c', @@ -28,7 +28,7 @@ class ServusIE(InfoExtractor): m3u8_url = 'https://stv.rbmbtnx.net/api/v1/manifests/%s.m3u8' % video_id formats = self._extract_m3u8_formats( - m3u8_url, video_id, 'mp4', entry_protocol='m3u8_native') + m3u8_url, video_id, 'mp4', entry_protocol='m3u8_native', m3u8_id='hls') self._sort_formats(formats) return { From 76c3b948604cfa607ea93e70d872755d414401cc Mon Sep 17 00:00:00 2001 From: Sergey M Date: Thu, 19 Oct 2017 22:15:57 +0700 Subject: [PATCH 3/4] [servus] Simplify --- youtube_dl/extractor/servus.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/youtube_dl/extractor/servus.py b/youtube_dl/extractor/servus.py index 8520366f8..cf5209aaa 100644 --- a/youtube_dl/extractor/servus.py +++ b/youtube_dl/extractor/servus.py @@ -5,8 +5,8 @@ from .common import InfoExtractor class ServusIE(InfoExtractor): - _VALID_URL = r'https?://(?:www\.)?servus\.com/(?:at|de)/p/[^/]+/(?P(?:AA-[A-Z\d]+|\d+-\d+))/' - _TEST = { + _VALID_URL = r'https?://(?:www\.)?servus\.com/(?:at|de)/p/[^/]+/(?PAA-\w+|\d+-\d+)' + _TESTS = [{ 'url': 'https://www.servus.com/de/p/Die-Gr%C3%BCnen-aus-Sicht-des-Volkes/AA-1T6VBU5PW1W12/', 'md5': '046dee641cda1c4cabe13baef3be2c1c', 'info_dict': { @@ -16,7 +16,10 @@ class ServusIE(InfoExtractor): 'description': 'md5:052b5da1cb2cd7d562ef1f19be5a5cba', 'thumbnail': r're:^https?://.*\.jpg$', } - } + }, { + 'url': 'https://www.servus.com/at/p/Wie-das-Leben-beginnt/1309984137314-381415152/', + 'only_matching': True, + }] def _real_extract(self, url): video_id = self._match_id(url) From b0ded8dec33ac23c38671b33976ceddca889f11c Mon Sep 17 00:00:00 2001 From: Sergey M Date: Thu, 19 Oct 2017 22:16:46 +0700 Subject: [PATCH 4/4] [servus] Simplify --- youtube_dl/extractor/servus.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/servus.py b/youtube_dl/extractor/servus.py index cf5209aaa..264e1dd8b 100644 --- a/youtube_dl/extractor/servus.py +++ b/youtube_dl/extractor/servus.py @@ -29,9 +29,9 @@ class ServusIE(InfoExtractor): description = self._og_search_description(webpage) thumbnail = self._og_search_thumbnail(webpage) - m3u8_url = 'https://stv.rbmbtnx.net/api/v1/manifests/%s.m3u8' % video_id formats = self._extract_m3u8_formats( - m3u8_url, video_id, 'mp4', entry_protocol='m3u8_native', m3u8_id='hls') + 'https://stv.rbmbtnx.net/api/v1/manifests/%s.m3u8' % video_id, + video_id, 'mp4', entry_protocol='m3u8_native', m3u8_id='hls') self._sort_formats(formats) return {