diff options
Diffstat (limited to 'youtube_dl/YoutubeDL.py')
| -rwxr-xr-x | youtube_dl/YoutubeDL.py | 81 | 
1 files changed, 39 insertions, 42 deletions
| diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 65581ec63..772fddd45 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -1121,49 +1121,46 @@ class YoutubeDL(object):                                              (info_dict['thumbnail'], compat_str(err)))          if not self.params.get('skip_download', False): -            if self.params.get('nooverwrites', False) and os.path.exists(encodeFilename(filename)): -                success = True -            else: -                try: -                    def dl(name, info): -                        fd = get_suitable_downloader(info)(self, self.params) -                        for ph in self._progress_hooks: -                            fd.add_progress_hook(ph) -                        if self.params.get('verbose'): -                            self.to_stdout('[debug] Invoking downloader on %r' % info.get('url')) -                        return fd.download(name, info) -                    if info_dict.get('requested_formats') is not None: -                        downloaded = [] -                        success = True -                        merger = FFmpegMergerPP(self, not self.params.get('keepvideo')) -                        if not merger._executable: -                            postprocessors = [] -                            self.report_warning('You have requested multiple ' -                                                'formats but ffmpeg or avconv are not installed.' -                                                ' The formats won\'t be merged') -                        else: -                            postprocessors = [merger] -                        for f in info_dict['requested_formats']: -                            new_info = dict(info_dict) -                            new_info.update(f) -                            fname = self.prepare_filename(new_info) -                            fname = prepend_extension(fname, 'f%s' % f['format_id']) -                            downloaded.append(fname) -                            partial_success = dl(fname, new_info) -                            success = success and partial_success -                        info_dict['__postprocessors'] = postprocessors -                        info_dict['__files_to_merge'] = downloaded +            try: +                def dl(name, info): +                    fd = get_suitable_downloader(info)(self, self.params) +                    for ph in self._progress_hooks: +                        fd.add_progress_hook(ph) +                    if self.params.get('verbose'): +                        self.to_stdout('[debug] Invoking downloader on %r' % info.get('url')) +                    return fd.download(name, info) +                if info_dict.get('requested_formats') is not None: +                    downloaded = [] +                    success = True +                    merger = FFmpegMergerPP(self, not self.params.get('keepvideo')) +                    if not merger._executable: +                        postprocessors = [] +                        self.report_warning('You have requested multiple ' +                                            'formats but ffmpeg or avconv are not installed.' +                                            ' The formats won\'t be merged')                      else: -                        # Just a single file -                        success = dl(filename, info_dict) -                except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: -                    self.report_error('unable to download video data: %s' % str(err)) -                    return -                except (OSError, IOError) as err: -                    raise UnavailableVideoError(err) -                except (ContentTooShortError, ) as err: -                    self.report_error('content too short (expected %s bytes and served %s)' % (err.expected, err.downloaded)) -                    return +                        postprocessors = [merger] +                    for f in info_dict['requested_formats']: +                        new_info = dict(info_dict) +                        new_info.update(f) +                        fname = self.prepare_filename(new_info) +                        fname = prepend_extension(fname, 'f%s' % f['format_id']) +                        downloaded.append(fname) +                        partial_success = dl(fname, new_info) +                        success = success and partial_success +                    info_dict['__postprocessors'] = postprocessors +                    info_dict['__files_to_merge'] = downloaded +                else: +                    # Just a single file +                    success = dl(filename, info_dict) +            except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: +                self.report_error('unable to download video data: %s' % str(err)) +                return +            except (OSError, IOError) as err: +                raise UnavailableVideoError(err) +            except (ContentTooShortError, ) as err: +                self.report_error('content too short (expected %s bytes and served %s)' % (err.expected, err.downloaded)) +                return              if success:                  # Fixup content | 
