diff options
| author | 2023-03-31 07:24:57 -0400 | |
|---|---|---|
| committer | 2023-03-31 07:24:57 -0400 | |
| commit | 09e426350409d45e7f7a8ff369f8d8aa9eec0fe4 (patch) | |
| tree | 8a8cd3e590675fe6ecb1e5c2b4ad9eecde3dde6d /gallery_dl/formatter.py | |
| parent | 10987f08f8b6c510ba64f4b42d95ba67eec6e5b0 (diff) | |
New upstream version 1.25.1.upstream/1.25.1
Diffstat (limited to 'gallery_dl/formatter.py')
| -rw-r--r-- | gallery_dl/formatter.py | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/gallery_dl/formatter.py b/gallery_dl/formatter.py index 2c5bd11..fc36fa2 100644 --- a/gallery_dl/formatter.py +++ b/gallery_dl/formatter.py @@ -34,6 +34,8 @@ def parse(format_string, default=NONE, fmt=format): if kind == "T": cls = TemplateFormatter + elif kind == "TF": + cls = TemplateFStringFormatter elif kind == "E": cls = ExpressionFormatter elif kind == "M": @@ -197,15 +199,6 @@ class StringFormatter(): return lambda obj: fmt(conversion(obj)) -class TemplateFormatter(StringFormatter): - """Read format_string from file""" - - def __init__(self, path, default=NONE, fmt=format): - with open(util.expand_path(path)) as fp: - format_string = fp.read() - StringFormatter.__init__(self, format_string, default, fmt) - - class ExpressionFormatter(): """Generate text by evaluating a Python expression""" @@ -218,7 +211,7 @@ class ModuleFormatter(): def __init__(self, function_spec, default=NONE, fmt=None): module_name, _, function_name = function_spec.partition(":") - module = __import__(module_name) + module = util.import_file(module_name) self.format_map = getattr(module, function_name) @@ -229,6 +222,24 @@ class FStringFormatter(): self.format_map = util.compile_expression('f"""' + fstring + '"""') +class TemplateFormatter(StringFormatter): + """Read format_string from file""" + + def __init__(self, path, default=NONE, fmt=format): + with open(util.expand_path(path)) as fp: + format_string = fp.read() + StringFormatter.__init__(self, format_string, default, fmt) + + +class TemplateFStringFormatter(FStringFormatter): + """Read f-string from file""" + + def __init__(self, path, default=NONE, fmt=format): + with open(util.expand_path(path)) as fp: + format_string = fp.read() + FStringFormatter.__init__(self, format_string, default, fmt) + + def parse_field_name(field_name): first, rest = _string.formatter_field_name_split(field_name) funcs = [] @@ -245,6 +256,8 @@ def parse_field_name(field_name): try: if ":" in key: key = _slice(key) + else: + key = key.strip("\"'") except TypeError: pass # key is an integer |
