diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 06a6625a8..3e4818570 100644 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -778,7 +778,7 @@ class YoutubeDL(object): if not parts: success = self.fd._do_download(filename, info_dict) elif len(parts) == 1: - info_dict['url'] = parts[0] + info_dict.update(parts[0]) success = self.fd._do_download(filename, info_dict) else: # We check if the final video has already been downloaded @@ -789,9 +789,9 @@ class YoutubeDL(object): parts_success = [] parts_files = [] self.to_screen(u'[info] Downloading %s parts' % len(parts)) - for (i, part_url) in enumerate(parts): + for (i, part) in enumerate(parts): part_info = dict(info_dict) - part_info['url'] = part_url + part_info.update(part) part_filename = u'%s.%s' % (filename, i) parts_files.append(part_filename) parts_success.append(self.fd._do_download(part_filename, part_info)) diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index d619de1dc..fb0f3ca0a 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -55,7 +55,9 @@ class InfoExtractor(object): subtitles: The subtitle file contents as a dictionary in the format {language: subtitles}. view_count: How many users have watched the video on the platform. - parts: A list of urls for each of the parts of the video. + parts: A list of info_dicts for each of the parts of the video, + it must include the url field, if it's a rtmp download it + can contain additional fields for rtmpdump. urlhandle: [internal] The urlHandle to be used to download the file, like returned by urllib.request.urlopen age_limit: Age restriction for the video, as an integer (years) diff --git a/youtube_dl/extractor/tudou.py b/youtube_dl/extractor/tudou.py index d2af0b9f9..618f586dd 100644 --- a/youtube_dl/extractor/tudou.py +++ b/youtube_dl/extractor/tudou.py @@ -67,15 +67,11 @@ class TudouIE(InfoExtractor): part_id = part['k'] final_url = self._url_for_id(part_id, quality) ext = (final_url.split('?')[0]).split('.')[-1] - parts.append(final_url) + parts.append({'url': final_url}) - info_dict = {'id': video_id, - 'ext': ext, - 'title': title, - 'thumbnail': thumbnail_url, - } - if len_segs == 1: - info_dict['url'] = parts[0] - else: - info_dict['parts'] = parts - return info_dict + return {'id': video_id, + 'ext': ext, + 'title': title, + 'thumbnail': thumbnail_url, + 'parts': parts, + }