diff options
| author | Sergey M․ <dstftw@gmail.com> | 2014-05-25 07:14:18 +0700 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2014-05-25 07:14:18 +0700 | 
| commit | dfb2e1a325236404c438fdbda73da8c6ca8383cd (patch) | |
| tree | 20866713012d65a002ba11b47a19739bea77f3fc | |
| parent | 65bab327b4c34ec347dff0e8fb8e00f65c11568a (diff) | |
[nrktv] Add support for tv.nrk.no (Closes #2980)
| -rw-r--r-- | youtube_dl/extractor/__init__.py | 5 | ||||
| -rw-r--r-- | youtube_dl/extractor/nrk.py | 80 | 
2 files changed, 83 insertions, 2 deletions
| diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index 4a4eb4b74..def58f1d6 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -194,7 +194,10 @@ from .normalboots import NormalbootsIE  from .novamov import NovaMovIE  from .nowness import NownessIE  from .nowvideo import NowVideoIE -from .nrk import NRKIE +from .nrk import ( +    NRKIE, +    NRKTVIE, +)  from .ntv import NTVIE  from .nytimes import NYTimesIE  from .nuvid import NuvidIE diff --git a/youtube_dl/extractor/nrk.py b/youtube_dl/extractor/nrk.py index e6d68b836..f5117d7b3 100644 --- a/youtube_dl/extractor/nrk.py +++ b/youtube_dl/extractor/nrk.py @@ -4,7 +4,11 @@ from __future__ import unicode_literals  import re  from .common import InfoExtractor -from ..utils import ExtractorError +from ..utils import ( +    ExtractorError, +    int_or_none, +    unified_strdate, +)  class NRKIE(InfoExtractor): @@ -64,4 +68,78 @@ class NRKIE(InfoExtractor):              'title': data['title'],              'description': data['description'],              'thumbnail': thumbnail, +        } + + +class NRKTVIE(InfoExtractor): +    _VALID_URL = r'http://tv\.nrk\.no/(?:serie/[^/]+|program)/(?P<id>[a-z]{4}\d{8})' + +    _TESTS = [ +        { +            'url': 'http://tv.nrk.no/serie/20-spoersmaal-tv/muhh48000314/23-05-2014', +            'md5': '7b96112fbae1faf09a6f9ae1aff6cb84', +            'info_dict': { +                'id': 'muhh48000314', +                'ext': 'flv', +                'title': '20 spørsmål', +                'description': 'md5:bdea103bc35494c143c6a9acdd84887a', +                'upload_date': '20140523', +                'duration': 1741.52, +            } +        }, +        { +            'url': 'http://tv.nrk.no/program/mdfp15000514', +            'md5': '383650ece2b25ecec996ad7b5bb2a384', +            'info_dict': { +                'id': 'mdfp15000514', +                'ext': 'flv', +                'title': 'Kunnskapskanalen: Grunnlovsjubiléet - Stor ståhei for ingenting', +                'description': 'md5:654c12511f035aed1e42bdf5db3b206a', +                'upload_date': '20140524', +                'duration': 4605.0, +            } +        }, +    ] + +    def _real_extract(self, url): +        mobj = re.match(self._VALID_URL, url) +        video_id = mobj.group('id') + +        page = self._download_webpage(url, video_id) + +        title = self._html_search_meta('title', page, 'title') +        description = self._html_search_meta('description', page, 'description') +        thumbnail = self._html_search_regex(r'data-posterimage="([^"]+)"', page, 'thumbnail', fatal=False) +        upload_date = unified_strdate(self._html_search_meta('rightsfrom', page, 'upload date', fatal=False)) +        duration = self._html_search_regex(r'data-duration="([^"]+)"', page, 'duration', fatal=False) +        if duration: +            duration = float(duration) + +        formats = [] + +        f4m_url = re.search(r'data-media="([^"]+)"', page) +        if f4m_url: +            formats.append({ +                'url': f4m_url.group(1) + '?hdcore=3.1.1&plugin=aasp-3.1.1.69.124', +                'format_id': 'f4m', +                'ext': 'flv', +            }) + +        m3u8_url = re.search(r'data-hls-media="([^"]+)"', page) +        if m3u8_url: +            formats.append({ +                'url': m3u8_url.group(1), +                'format_id': 'm3u8', +            }) + +        self._sort_formats(formats) + +        return { +            'id': video_id, +            'title': title, +            'description': description, +            'thumbnail': thumbnail, +            'upload_date': upload_date, +            'duration': duration, +            'formats': formats,          }
\ No newline at end of file | 
