diff options
| author | Sergey M․ <dstftw@gmail.com> | 2015-05-05 00:39:24 +0600 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2015-05-05 00:39:24 +0600 | 
| commit | f943b7ddce1a426c9168cf0d8bd47e539fc17694 (patch) | |
| tree | fbf33a367273510a68a132b74114cc534ca9ebb0 | |
| parent | 1aa43d77c084bc2dd735fcd3d03b8b2fc3407c51 (diff) | |
| parent | ff9d68e7be2dd01a21cc0ed90aaa594b5d36697f (diff) | |
Merge branch 'noco' of https://github.com/Tassatux/youtube-dl into Tassatux-noco
| -rw-r--r-- | youtube_dl/extractor/noco.py | 67 | 
1 files changed, 47 insertions, 20 deletions
diff --git a/youtube_dl/extractor/noco.py b/youtube_dl/extractor/noco.py index 251e6da07..f86d210ee 100644 --- a/youtube_dl/extractor/noco.py +++ b/youtube_dl/extractor/noco.py @@ -25,21 +25,38 @@ class NocoIE(InfoExtractor):      _SUB_LANG_TEMPLATE = '&sub_lang=%s'      _NETRC_MACHINE = 'noco' -    _TEST = { -        'url': 'http://noco.tv/emission/11538/nolife/ami-ami-idol-hello-france/', -        'md5': '0a993f0058ddbcd902630b2047ef710e', -        'info_dict': { -            'id': '11538', -            'ext': 'mp4', -            'title': 'Ami Ami Idol - Hello! France', -            'description': 'md5:4eaab46ab68fa4197a317a88a53d3b86', -            'upload_date': '20140412', -            'uploader': 'Nolife', -            'uploader_id': 'NOL', -            'duration': 2851.2, +    _TESTS = [ +        { +            'url': 'http://noco.tv/emission/11538/nolife/ami-ami-idol-hello-france/', +            'md5': '0a993f0058ddbcd902630b2047ef710e', +            'info_dict': { +                'id': '11538', +                'ext': 'mp4', +                'title': 'Ami Ami Idol - Hello! France', +                'description': 'md5:4eaab46ab68fa4197a317a88a53d3b86', +                'upload_date': '20140412', +                'uploader': 'Nolife', +                'uploader_id': 'NOL', +                'duration': 2851.2, +            }, +            'skip': 'Requires noco account',          }, -        'skip': 'Requires noco account', -    } +        { +            'url': 'http://noco.tv/emission/12610/lbl42/the-guild/s01e01-wake-up-call', +            'md5': 'c190f1f48e313c55838f1f412225934d', +            'info_dict': { +                'id': '12610', +                'ext': 'mp4', +                'title': 'The Guild #1 - Wake-Up Call', +                'description': '', +                'upload_date': '20140627', +                'uploader': 'LBL42', +                'uploader_id': 'LBL', +                'duration': 233.023, +            }, +            'skip': 'Requires noco account', +        } +    ]      def _real_initialize(self):          self._login() @@ -86,22 +103,36 @@ class NocoIE(InfoExtractor):          mobj = re.match(self._VALID_URL, url)          video_id = mobj.group('id') +        options = self._call_api('users/init', None, 'Downloading user options JSON')['options'] +        audio_lang = options.get('audio_language', 'fr') +          medias = self._call_api(              'shows/%s/medias' % video_id,              video_id, 'Downloading video JSON') +        show = self._call_api( +            'shows/by_id/%s' % video_id, +            video_id, 'Downloading show JSON')[0] + +        if audio_lang == 'original': +            audio_lang = show['original_lang'] +        if len(medias) == 1: +            audio_lang = list(medias.keys())[0] +        elif not audio_lang in medias: +            audio_lang = 'fr' +          qualities = self._call_api(              'qualities',              video_id, 'Downloading qualities JSON')          formats = [] -        for lang, lang_dict in medias['fr']['video_list'].items(): +        for lang, lang_dict in medias[audio_lang]['video_list'].items():              for format_id, fmt in lang_dict['quality_list'].items():                  format_id_extended = '%s-%s' % (lang, format_id) if lang != 'none' else format_id                  video = self._call_api( -                    'shows/%s/video/%s/fr' % (video_id, format_id.lower()), +                    'shows/%s/video/%s/%s' % (video_id, format_id.lower(), audio_lang),                      video_id, 'Downloading %s video JSON' % format_id_extended,                      lang if lang != 'none' else None) @@ -127,10 +158,6 @@ class NocoIE(InfoExtractor):          self._sort_formats(formats) -        show = self._call_api( -            'shows/by_id/%s' % video_id, -            video_id, 'Downloading show JSON')[0] -          upload_date = unified_strdate(show['online_date_start_utc'])          uploader = show['partner_name']          uploader_id = show['partner_key']  | 
