From ff2e3e38be316b8d9b0634f51093151b217d2054 Mon Sep 17 00:00:00 2001 From: Marek Chowaniok Date: Wed, 24 Oct 2018 15:19:22 -0300 Subject: [PATCH] [Northpoint] Add new extractor --- youtube_dl/extractor/extractors.py | 1 + youtube_dl/extractor/northpoint.py | 62 ++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 youtube_dl/extractor/northpoint.py diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index 17b576df3..480ed97aa 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -741,6 +741,7 @@ from .noco import NocoIE from .nonktube import NonkTubeIE from .noovo import NoovoIE from .normalboots import NormalbootsIE +from .northpoint import NorthpointIE from .nosvideo import NosVideoIE from .nova import ( NovaEmbedIE, diff --git a/youtube_dl/extractor/northpoint.py b/youtube_dl/extractor/northpoint.py new file mode 100644 index 000000000..f6113d2ad --- /dev/null +++ b/youtube_dl/extractor/northpoint.py @@ -0,0 +1,62 @@ +# coding: utf-8 +from __future__ import unicode_literals + +from .common import InfoExtractor +from .theplatform import ThePlatformIE + + +class NorthpointIE(ThePlatformIE): + _VALID_URL = r'(?:http?://)?(?:www\.)?northpoint\.org/messages/[^/]+/(?P[^/]+)' + _TESTS =[ { + 'url': 'http://northpoint.org/messages/three-things/what-makes-you-a-wonder/', + 'md5': '214af23fa75d0fae44298a5128c35d56', + 'info_dict': { + 'id': 'rosH7wGAB33s', + 'ext': 'mp4', + 'title': "Three Things I Learned from a Movie I Didn't Want to See - The Power Of Friendship", + 'series': "Three Things I Learned from a Movie I Didn't Want to See", + } + }] + + def _real_extract(self, url): + + display_id = self._match_id(url) + webpage = self._download_webpage(url, display_id) + playerCode = self._search_regex(r'playerCode\s*=\s*[\'"]([^\'"]+)',webpage, 'player Code') + seriesPermalink = self._search_regex(r'series_permalink\s*:\s*[\'"]([^\'"]+)',webpage, 'series name') + seriesJSON = self._download_json( + 'http://northpoint.org/api/mma/details/channel/npcc/permalink/%s' %seriesPermalink,display_id)['messages'] + + videoIDLink = '' + videoIDLinkTemp = '' + for serie in seriesJSON: + videoIDLinkTemp = serie['hv_msg']['id'] + if serie['title'].lower() == display_id.replace('-', ' ').lower(): + videoIDLink = serie['hv_msg']['id'] + + if not videoIDLink: + videoIDLink = videoIDLinkTemp + + linkWebpage = self._download_webpage('http://player.theplatform.com/p/IfSiAC/'+playerCode+'/embed/select/'+videoIDLink, display_id) + releaseUrl = self._search_regex(r'tp:releaseUrl\s*=\s*[\'"]([^\'"]+)',linkWebpage, 'release url') + platformMetaData = self._search_regex(r'.*.com\/s\/\s*([^\n\r]*)[ˆ?]',releaseUrl, 'release url') + theplatform_metadata = self._download_theplatform_metadata(platformMetaData, display_id) +# print theplatform_metadata + + video_id = theplatform_metadata['pid'] + title = theplatform_metadata['title'][19:] + series = theplatform_metadata['pl1$seriesName'] + +# print title, series + + formats, subtitles = self._extract_theplatform_smil(releaseUrl, video_id) + self._sort_formats(formats) + + + return { + 'id': video_id, + 'title': title, + 'subtitles': subtitles, + 'formats': formats, + 'series': series, + }