mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07:00 
			
		
		
		
	[devscripts] Improve hack to convert command-line options to API options
* define equality for DateRange * don't show default DateRange
This commit is contained in:
		| @@ -49,15 +49,34 @@ def cli_to_api(*opts): | |||||||
|  |  | ||||||
|     # from https://github.com/yt-dlp/yt-dlp/issues/5859#issuecomment-1363938900 |     # from https://github.com/yt-dlp/yt-dlp/issues/5859#issuecomment-1363938900 | ||||||
|     default = parsed_options([]) |     default = parsed_options([]) | ||||||
|     diff = dict((k, v) for k, v in parsed_options(opts).items() if default[k] != v) |  | ||||||
|  |     def neq_opt(a, b): | ||||||
|  |         if a == b: | ||||||
|  |             return False | ||||||
|  |         if a is None and repr(type(object)).endswith(".utils.DateRange'>"): | ||||||
|  |             return '0001-01-01 - 9999-12-31' != '{0}'.format(b) | ||||||
|  |         return a != b | ||||||
|  |  | ||||||
|  |     diff = dict((k, v) for k, v in parsed_options(opts).items() if neq_opt(default[k], v)) | ||||||
|     if 'postprocessors' in diff: |     if 'postprocessors' in diff: | ||||||
|         diff['postprocessors'] = [pp for pp in diff['postprocessors'] if pp not in default['postprocessors']] |         diff['postprocessors'] = [pp for pp in diff['postprocessors'] if pp not in default['postprocessors']] | ||||||
|     return diff |     return diff | ||||||
|  |  | ||||||
|  |  | ||||||
| def main(): | def main(): | ||||||
|     from pprint import pprint |     from pprint import PrettyPrinter | ||||||
|     pprint(cli_to_api(*sys.argv)) |  | ||||||
|  |     pprint = PrettyPrinter() | ||||||
|  |     super_format = pprint.format | ||||||
|  |  | ||||||
|  |     def format(object, context, maxlevels, level): | ||||||
|  |         if repr(type(object)).endswith(".utils.DateRange'>"): | ||||||
|  |             return '{0}: {1}>'.format(repr(object)[:-2], object), True, False | ||||||
|  |         return super_format(object, context, maxlevels, level) | ||||||
|  |  | ||||||
|  |     pprint.format = format | ||||||
|  |  | ||||||
|  |     pprint.pprint(cli_to_api(*sys.argv)) | ||||||
|  |  | ||||||
|  |  | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
|   | |||||||
| @@ -3190,6 +3190,10 @@ class DateRange(object): | |||||||
|     def __str__(self): |     def __str__(self): | ||||||
|         return '%s - %s' % (self.start.isoformat(), self.end.isoformat()) |         return '%s - %s' % (self.start.isoformat(), self.end.isoformat()) | ||||||
|  |  | ||||||
|  |     def __eq__(self, other): | ||||||
|  |         return (isinstance(other, DateRange) | ||||||
|  |                 and self.start == other.start and self.end == other.end) | ||||||
|  |  | ||||||
|  |  | ||||||
| def platform_name(): | def platform_name(): | ||||||
|     """ Returns the platform name as a compat_str """ |     """ Returns the platform name as a compat_str """ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user