1
1
mirror of https://github.com/ytdl-org/youtube-dl synced 2024-11-06 03:57:17 +01: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:
dirkf 2023-04-05 18:47:49 +01:00
parent 78da22489b
commit 25124bd640
2 changed files with 26 additions and 3 deletions

View File

@ -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__':

View File

@ -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 """