From d2176c80116c90ca5cac676fbbba07a55198ff43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergey=20M=E2=80=A4?= Date: Fri, 25 Apr 2014 21:34:44 +0700 Subject: [PATCH] [nrk] Add support for nrk.no (Closes #2804) --- youtube_dl/extractor/__init__.py | 1 + youtube_dl/extractor/nrk.py | 67 ++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 youtube_dl/extractor/nrk.py diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index 1823b5518e..9a0983e170 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -188,6 +188,7 @@ from .novamov import NovaMovIE from .nowness import NownessIE from .nowvideo import NowVideoIE +from .nrk import NRKIE from .ntv import NTVIE from .oe1 import OE1IE from .ooyala import OoyalaIE diff --git a/youtube_dl/extractor/nrk.py b/youtube_dl/extractor/nrk.py new file mode 100644 index 0000000000..a331a7702f --- /dev/null +++ b/youtube_dl/extractor/nrk.py @@ -0,0 +1,67 @@ +# encoding: utf-8 +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor +from ..utils import ExtractorError + + +class NRKIE(InfoExtractor): + _VALID_URL = r'http://(?:www\.)?nrk\.no/(?:video|lyd)/[^/]+/(?P[\dA-F]{16})' + + _TESTS = [ + { + 'url': 'http://www.nrk.no/video/dompap_og_andre_fugler_i_piip_show/D0FA54B5C8B6CE59/emne/piipshow/', + 'md5': '12618eef328c9a35c1b47d5583d9c30d', + 'info_dict': { + 'id': '150533', + 'ext': 'flv', + 'title': 'Dompap og andre fugler i Piip-Show', + 'description': 'md5:d9261ba34c43b61c812cb6b0269a5c8f' + } + }, + { + 'url': 'http://www.nrk.no/lyd/lyd_av_oppleser_for_blinde/AEFDDD5473BA0198/', + 'md5': '390b2ce15c0d6aa376ef5059ac9f865e', + 'info_dict': { + 'id': '154915', + 'ext': 'flv', + 'title': 'Slik høres internett ut når du er blind', + 'description': 'md5:a621f5cc1bd75c8d5104cb048c6b8568', + } + }, + ] + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url) + video_id = mobj.group('id') + + page = self._download_webpage(url, video_id) + + video_id = self._html_search_regex(r'
', page, 'video id') + + data = self._download_json( + 'http://v7.psapi.nrk.no/mediaelement/%s' % video_id, video_id, 'Downloading media JSON') + + if data['usageRights']['isGeoBlocked']: + raise ExtractorError('NRK har ikke rettig-heter til å vise dette programmet utenfor Norge', expected=True) + + video_url = data['mediaUrl'] + '?hdcore=3.1.1&plugin=aasp-3.1.1.69.124' + + images = data.get('images') + if images: + thumbnails = images['webImages'] + thumbnails.sort(key=lambda image: image['pixelWidth']) + thumbnail = thumbnails[-1]['imageUrl'] + else: + thumbnail = None + + return { + 'id': video_id, + 'url': video_url, + 'ext': 'flv', + 'title': data['title'], + 'description': data['description'], + 'thumbnail': thumbnail, + } \ No newline at end of file