page = self._download_webpage('https://www.nfb.ca/film/%s' % video_id, video_id, 'Downloading film page')
uploader_id = self._html_search_regex(r'<a class="director-link" href="/explore-all-directors/([^/]+)/"',
- page, 'director id', fatal=False)
+ page, 'director id', fatal=False)
uploader = self._html_search_regex(r'<em class="director-name" itemprop="name">([^<]+)</em>',
- page, 'director name', fatal=False)
+ page, 'director name', fatal=False)
request = compat_urllib_request.Request('https://www.nfb.ca/film/%s/player_config' % video_id,
- compat_urllib_parse.urlencode({'getConfig': 'true'}).encode('ascii'))
+ compat_urllib_parse.urlencode({'getConfig': 'true'}).encode('ascii'))
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
request.add_header('X-NFB-Referer', 'http://www.nfb.ca/medias/flash/NFBVideoPlayer.swf')
title = media.find('title').text
description = media.find('description').text
# It seems assets always go from lower to better quality, so no need to sort
- formats = [{
- 'url': x.find('default/streamerURI').text,
- 'app': x.find('default/streamerURI').text.split('/', 3)[3],
- 'play_path': x.find('default/url').text,
- 'rtmp_live': False,
- 'ext': 'mp4',
- 'format_id': x.get('quality'),
- } for x in media.findall('assets/asset')]
+ for asset in media.findall('assets/asset'):
+ for x in asset:
+ formats.append({
+ 'url': x.find('streamerURI').text,
+ 'app': x.find('streamerURI').text.split('/', 3)[3],
+ 'play_path': x.find('url').text,
+ 'rtmp_live': False,
+ 'ext': 'mp4',
+ 'format_id': '%s-%s' % (x.tag, asset.get('quality')),
+ })
return {
'id': video_id,
'uploader': uploader,
'uploader_id': uploader_id,
'formats': formats,
- }
\ No newline at end of file
+ }