|
|
@ -852,8 +852,9 @@ class YoutubeDL(object): |
|
|
|
extract_flat = self.params.get('extract_flat', False) |
|
|
|
if ((extract_flat == 'in_playlist' and 'playlist' in extra_info) |
|
|
|
or extract_flat is True): |
|
|
|
if self.params.get('forcejson', False): |
|
|
|
self.to_stdout(json.dumps(ie_result)) |
|
|
|
self.__forced_printings( |
|
|
|
ie_result, self.prepare_filename(ie_result), |
|
|
|
incomplete=True) |
|
|
|
return ie_result |
|
|
|
|
|
|
|
if result_type == 'video': |
|
|
@ -1693,6 +1694,36 @@ class YoutubeDL(object): |
|
|
|
subs[lang] = f |
|
|
|
return subs |
|
|
|
|
|
|
|
def __forced_printings(self, info_dict, filename, incomplete): |
|
|
|
def print_mandatory(field): |
|
|
|
if (self.params.get('force%s' % field, False) |
|
|
|
and (not incomplete or info_dict.get(field) is not None)): |
|
|
|
self.to_stdout(info_dict[field]) |
|
|
|
|
|
|
|
def print_optional(field): |
|
|
|
if (self.params.get('force%s' % field, False) |
|
|
|
and info_dict.get(field) is not None): |
|
|
|
self.to_stdout(info_dict[field]) |
|
|
|
|
|
|
|
print_mandatory('title') |
|
|
|
print_mandatory('id') |
|
|
|
if self.params.get('forceurl', False) and not incomplete: |
|
|
|
if info_dict.get('requested_formats') is not None: |
|
|
|
for f in info_dict['requested_formats']: |
|
|
|
self.to_stdout(f['url'] + f.get('play_path', '')) |
|
|
|
else: |
|
|
|
# For RTMP URLs, also include the playpath |
|
|
|
self.to_stdout(info_dict['url'] + info_dict.get('play_path', '')) |
|
|
|
print_optional('thumbnail') |
|
|
|
print_optional('description') |
|
|
|
if self.params.get('forcefilename', False) and filename is not None: |
|
|
|
self.to_stdout(filename) |
|
|
|
if self.params.get('forceduration', False) and info_dict.get('duration') is not None: |
|
|
|
self.to_stdout(formatSeconds(info_dict['duration'])) |
|
|
|
print_mandatory('format') |
|
|
|
if self.params.get('forcejson', False): |
|
|
|
self.to_stdout(json.dumps(info_dict)) |
|
|
|
|
|
|
|
def process_info(self, info_dict): |
|
|
|
"""Process a single resolved IE result.""" |
|
|
|
|
|
|
@ -1703,9 +1734,8 @@ class YoutubeDL(object): |
|
|
|
if self._num_downloads >= int(max_downloads): |
|
|
|
raise MaxDownloadsReached() |
|
|
|
|
|
|
|
# TODO: backward compatibility, to be removed |
|
|
|
info_dict['fulltitle'] = info_dict['title'] |
|
|
|
if len(info_dict['title']) > 200: |
|
|
|
info_dict['title'] = info_dict['title'][:197] + '...' |
|
|
|
|
|
|
|
if 'format' not in info_dict: |
|
|
|
info_dict['format'] = info_dict['ext'] |
|
|
@ -1720,29 +1750,7 @@ class YoutubeDL(object): |
|
|
|
info_dict['_filename'] = filename = self.prepare_filename(info_dict) |
|
|
|
|
|
|
|
# Forced printings |
|
|
|
if self.params.get('forcetitle', False): |
|
|
|
self.to_stdout(info_dict['fulltitle']) |
|
|
|
if self.params.get('forceid', False): |
|
|
|
self.to_stdout(info_dict['id']) |
|
|
|
if self.params.get('forceurl', False): |
|
|
|
if info_dict.get('requested_formats') is not None: |
|
|
|
for f in info_dict['requested_formats']: |
|
|
|
self.to_stdout(f['url'] + f.get('play_path', '')) |
|
|
|
else: |
|
|
|
# For RTMP URLs, also include the playpath |
|
|
|
self.to_stdout(info_dict['url'] + info_dict.get('play_path', '')) |
|
|
|
if self.params.get('forcethumbnail', False) and info_dict.get('thumbnail') is not None: |
|
|
|
self.to_stdout(info_dict['thumbnail']) |
|
|
|
if self.params.get('forcedescription', False) and info_dict.get('description') is not None: |
|
|
|
self.to_stdout(info_dict['description']) |
|
|
|
if self.params.get('forcefilename', False) and filename is not None: |
|
|
|
self.to_stdout(filename) |
|
|
|
if self.params.get('forceduration', False) and info_dict.get('duration') is not None: |
|
|
|
self.to_stdout(formatSeconds(info_dict['duration'])) |
|
|
|
if self.params.get('forceformat', False): |
|
|
|
self.to_stdout(info_dict['format']) |
|
|
|
if self.params.get('forcejson', False): |
|
|
|
self.to_stdout(json.dumps(info_dict)) |
|
|
|
self.__forced_printings(info_dict, filename, incomplete=False) |
|
|
|
|
|
|
|
# Do nothing else if in simulate mode |
|
|
|
if self.params.get('simulate', False): |
|
|
|