summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/behance.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/extractor/behance.py')
-rw-r--r--gallery_dl/extractor/behance.py33
1 files changed, 27 insertions, 6 deletions
diff --git a/gallery_dl/extractor/behance.py b/gallery_dl/extractor/behance.py
index a92918e..ad0caf9 100644
--- a/gallery_dl/extractor/behance.py
+++ b/gallery_dl/extractor/behance.py
@@ -89,6 +89,17 @@ class BehanceGalleryExtractor(BehanceExtractor):
BehanceExtractor.__init__(self, match)
self.gallery_id = match.group(1)
+ def _init(self):
+ BehanceExtractor._init(self)
+
+ modules = self.config("modules")
+ if modules:
+ if isinstance(modules, str):
+ modules = modules.split(",")
+ self.modules = set(modules)
+ else:
+ self.modules = {"image", "video", "mediacollection", "embed"}
+
def items(self):
data = self.get_gallery_data()
imgs = self.get_images(data)
@@ -97,7 +108,8 @@ class BehanceGalleryExtractor(BehanceExtractor):
yield Message.Directory, data
for data["num"], (url, module) in enumerate(imgs, 1):
data["module"] = module
- data["extension"] = text.ext_from_url(url)
+ data["extension"] = (module.get("extension") or
+ text.ext_from_url(url))
yield Message.Url, url, data
def get_gallery_data(self):
@@ -133,13 +145,17 @@ class BehanceGalleryExtractor(BehanceExtractor):
append = result.append
for module in data["modules"]:
- mtype = module["__typename"]
+ mtype = module["__typename"][:-6].lower()
- if mtype == "ImageModule":
+ if mtype not in self.modules:
+ self.log.debug("Skipping '%s' module", mtype)
+ continue
+
+ if mtype == "image":
url = module["imageSizes"]["size_original"]["url"]
append((url, module))
- elif mtype == "VideoModule":
+ elif mtype == "video":
try:
renditions = module["videoData"]["renditions"]
except Exception:
@@ -158,7 +174,7 @@ class BehanceGalleryExtractor(BehanceExtractor):
append((url, module))
- elif mtype == "MediaCollectionModule":
+ elif mtype == "mediacollection":
for component in module["components"]:
for size in component["imageSizes"].values():
if size:
@@ -167,12 +183,17 @@ class BehanceGalleryExtractor(BehanceExtractor):
append(("/".join(parts), module))
break
- elif mtype == "EmbedModule":
+ elif mtype == "embed":
embed = module.get("originalEmbed") or module.get("fluidEmbed")
if embed:
embed = text.unescape(text.extr(embed, 'src="', '"'))
+ module["extension"] = "mp4"
append(("ytdl:" + embed, module))
+ elif mtype == "text":
+ module["extension"] = "txt"
+ append(("text:" + module["text"], module))
+
return result