summaryrefslogtreecommitdiffstats
path: root/gallery_dl/util.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/util.py')
-rw-r--r--gallery_dl/util.py23
1 files changed, 21 insertions, 2 deletions
diff --git a/gallery_dl/util.py b/gallery_dl/util.py
index d85d2b3..a334b6e 100644
--- a/gallery_dl/util.py
+++ b/gallery_dl/util.py
@@ -48,12 +48,22 @@ def bdecode(data, alphabet="0123456789"):
def advance(iterable, num):
- """"Advance the iterable by 'num' steps"""
+ """"Advance 'iterable' by 'num' steps"""
iterator = iter(iterable)
next(itertools.islice(iterator, num, num), None)
return iterator
+def unique(iterable):
+ """Yield unique elements from 'iterable' while preserving order"""
+ seen = set()
+ add = seen.add
+ for element in iterable:
+ if element not in seen:
+ add(element)
+ yield element
+
+
def raises(cls):
"""Returns a function that raises 'cls' as exception"""
def wrap(*args):
@@ -713,6 +723,12 @@ class PathFormat():
directory_fmt = extractor.config("directory", extractor.directory_fmt)
kwdefault = extractor.config("keywords-default")
+ extension_map = extractor.config("extension-map")
+ if extension_map is None:
+ # TODO: better default value in 1.16.0
+ extension_map = {}
+ self.extension_map = extension_map.get
+
try:
self.filename_formatter = Formatter(
filename_fmt, kwdefault).format_map
@@ -840,7 +856,9 @@ class PathFormat():
"""Set general filename data"""
self.kwdict = kwdict
self.temppath = self.prefix = ""
- self.extension = kwdict["extension"]
+
+ ext = kwdict["extension"]
+ kwdict["extension"] = self.extension = self.extension_map(ext, ext)
if self.extension:
self.build_path()
@@ -849,6 +867,7 @@ class PathFormat():
def set_extension(self, extension, real=True):
"""Set filename extension"""
+ extension = self.extension_map(extension, extension)
if real:
self.extension = extension
self.kwdict["extension"] = self.prefix + extension