Apply --no-overwrites for --write-* files as well (Fixes #1980)
This commit is contained in:
		| @@ -366,22 +366,6 @@ class YoutubeDL(object): | ||||
|         error_message = u'%s %s' % (_msg_header, message) | ||||
|         self.trouble(error_message, tb) | ||||
|  | ||||
|     def report_writedescription(self, descfn): | ||||
|         """ Report that the description file is being written """ | ||||
|         self.to_screen(u'[info] Writing video description to: ' + descfn) | ||||
|  | ||||
|     def report_writesubtitles(self, sub_filename): | ||||
|         """ Report that the subtitles file is being written """ | ||||
|         self.to_screen(u'[info] Writing video subtitles to: ' + sub_filename) | ||||
|  | ||||
|     def report_writeinfojson(self, infofn): | ||||
|         """ Report that the metadata file has been written """ | ||||
|         self.to_screen(u'[info] Video description metadata as JSON to: ' + infofn) | ||||
|  | ||||
|     def report_writeannotations(self, annofn): | ||||
|         """ Report that the annotations file has been written. """ | ||||
|         self.to_screen(u'[info] Writing video annotations to: ' + annofn) | ||||
|  | ||||
|     def report_file_already_downloaded(self, file_name): | ||||
|         """Report file has already been fully downloaded.""" | ||||
|         try: | ||||
| @@ -791,28 +775,34 @@ class YoutubeDL(object): | ||||
|             return | ||||
|  | ||||
|         if self.params.get('writedescription', False): | ||||
|             try: | ||||
|                 descfn = filename + u'.description' | ||||
|                 self.report_writedescription(descfn) | ||||
|                 with io.open(encodeFilename(descfn), 'w', encoding='utf-8') as descfile: | ||||
|                     descfile.write(info_dict['description']) | ||||
|             except (KeyError, TypeError): | ||||
|                 self.report_warning(u'There\'s no description to write.') | ||||
|             except (OSError, IOError): | ||||
|                 self.report_error(u'Cannot write description file ' + descfn) | ||||
|                 return | ||||
|             descfn = filename + u'.description' | ||||
|             if self.params.get('nooverwrites', False) and os.path.exists(encodeFilename(descfn)): | ||||
|                 self.to_screen(u'[info] Video description is already present') | ||||
|             else: | ||||
|                 try: | ||||
|                     self.to_screen(u'[info] Writing video description to: ' + descfn) | ||||
|                     with io.open(encodeFilename(descfn), 'w', encoding='utf-8') as descfile: | ||||
|                         descfile.write(info_dict['description']) | ||||
|                 except (KeyError, TypeError): | ||||
|                     self.report_warning(u'There\'s no description to write.') | ||||
|                 except (OSError, IOError): | ||||
|                     self.report_error(u'Cannot write description file ' + descfn) | ||||
|                     return | ||||
|  | ||||
|         if self.params.get('writeannotations', False): | ||||
|             try: | ||||
|                 annofn = filename + u'.annotations.xml' | ||||
|                 self.report_writeannotations(annofn) | ||||
|                 with io.open(encodeFilename(annofn), 'w', encoding='utf-8') as annofile: | ||||
|                     annofile.write(info_dict['annotations']) | ||||
|             except (KeyError, TypeError): | ||||
|                 self.report_warning(u'There are no annotations to write.') | ||||
|             except (OSError, IOError): | ||||
|                 self.report_error(u'Cannot write annotations file: ' + annofn) | ||||
|                 return | ||||
|             annofn = filename + u'.annotations.xml' | ||||
|             if self.params.get('nooverwrites', False) and os.path.exists(encodeFilename(annofn)): | ||||
|                 self.to_screen(u'[info] Video annotations are already present') | ||||
|             else: | ||||
|                 try: | ||||
|                     self.to_screen(u'[info] Writing video annotations to: ' + annofn) | ||||
|                     with io.open(encodeFilename(annofn), 'w', encoding='utf-8') as annofile: | ||||
|                         annofile.write(info_dict['annotations']) | ||||
|                 except (KeyError, TypeError): | ||||
|                     self.report_warning(u'There are no annotations to write.') | ||||
|                 except (OSError, IOError): | ||||
|                     self.report_error(u'Cannot write annotations file: ' + annofn) | ||||
|                     return | ||||
|  | ||||
|         subtitles_are_requested = any([self.params.get('writesubtitles', False), | ||||
|                                        self.params.get('writeautomaticsub')]) | ||||
| @@ -828,38 +818,48 @@ class YoutubeDL(object): | ||||
|                     continue | ||||
|                 try: | ||||
|                     sub_filename = subtitles_filename(filename, sub_lang, sub_format) | ||||
|                     self.report_writesubtitles(sub_filename) | ||||
|                     with io.open(encodeFilename(sub_filename), 'w', encoding='utf-8') as subfile: | ||||
|                             subfile.write(sub) | ||||
|                     if self.params.get('nooverwrites', False) and os.path.exists(encodeFilename(sub_filename)): | ||||
|                         self.to_screen(u'[info] Video subtitle %s.%s is already_present' % (sub_lang, sub_format)) | ||||
|                     else: | ||||
|                         self.to_screen(u'[info] Writing video subtitles to: ' + sub_filename) | ||||
|                         with io.open(encodeFilename(sub_filename), 'w', encoding='utf-8') as subfile: | ||||
|                                 subfile.write(sub) | ||||
|                 except (OSError, IOError): | ||||
|                     self.report_error(u'Cannot write subtitles file ' + descfn) | ||||
|                     return | ||||
|  | ||||
|         if self.params.get('writeinfojson', False): | ||||
|             infofn = os.path.splitext(filename)[0] + u'.info.json' | ||||
|             self.report_writeinfojson(infofn) | ||||
|             try: | ||||
|                 json_info_dict = dict((k, v) for k, v in info_dict.items() if not k in ['urlhandle']) | ||||
|                 write_json_file(json_info_dict, encodeFilename(infofn)) | ||||
|             except (OSError, IOError): | ||||
|                 self.report_error(u'Cannot write metadata to JSON file ' + infofn) | ||||
|                 return | ||||
|             if self.params.get('nooverwrites', False) and os.path.exists(encodeFilename(infofn)): | ||||
|                 self.to_screen(u'[info] Video description metadata is already present') | ||||
|             else: | ||||
|                 self.to_screen(u'[info] Writing video description metadata as JSON to: ' + infofn) | ||||
|                 try: | ||||
|                     json_info_dict = dict((k, v) for k, v in info_dict.items() if not k in ['urlhandle']) | ||||
|                     write_json_file(json_info_dict, encodeFilename(infofn)) | ||||
|                 except (OSError, IOError): | ||||
|                     self.report_error(u'Cannot write metadata to JSON file ' + infofn) | ||||
|                     return | ||||
|  | ||||
|         if self.params.get('writethumbnail', False): | ||||
|             if info_dict.get('thumbnail') is not None: | ||||
|                 thumb_format = determine_ext(info_dict['thumbnail'], u'jpg') | ||||
|                 thumb_filename = os.path.splitext(filename)[0] + u'.' + thumb_format | ||||
|                 self.to_screen(u'[%s] %s: Downloading thumbnail ...' % | ||||
|                                (info_dict['extractor'], info_dict['id'])) | ||||
|                 try: | ||||
|                     uf = compat_urllib_request.urlopen(info_dict['thumbnail']) | ||||
|                     with open(thumb_filename, 'wb') as thumbf: | ||||
|                         shutil.copyfileobj(uf, thumbf) | ||||
|                     self.to_screen(u'[%s] %s: Writing thumbnail to: %s' % | ||||
|                         (info_dict['extractor'], info_dict['id'], thumb_filename)) | ||||
|                 except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: | ||||
|                     self.report_warning(u'Unable to download thumbnail "%s": %s' % | ||||
|                         (info_dict['thumbnail'], compat_str(err))) | ||||
|                 if self.params.get('nooverwrites', False) and os.path.exists(encodeFilename(infofn)): | ||||
|                     self.to_screen(u'[%s] %s: Thumbnail is already present' % | ||||
|                                    (info_dict['extractor'], info_dict['id'])) | ||||
|                 else: | ||||
|                     self.to_screen(u'[%s] %s: Downloading thumbnail ...' % | ||||
|                                    (info_dict['extractor'], info_dict['id'])) | ||||
|                     try: | ||||
|                         uf = compat_urllib_request.urlopen(info_dict['thumbnail']) | ||||
|                         with open(thumb_filename, 'wb') as thumbf: | ||||
|                             shutil.copyfileobj(uf, thumbf) | ||||
|                         self.to_screen(u'[%s] %s: Writing thumbnail to: %s' % | ||||
|                             (info_dict['extractor'], info_dict['id'], thumb_filename)) | ||||
|                     except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: | ||||
|                         self.report_warning(u'Unable to download thumbnail "%s": %s' % | ||||
|                             (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)): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Philipp Hagemeister
					Philipp Hagemeister