diff --git a/docs/configuration.rst b/docs/configuration.rst index 1f6ad0c15d..c22bd8c2f3 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -1110,6 +1110,19 @@ Description The maximum possible value appears to be ``1920``. +extractor.behance.modules +------------------------- +Type + ``list`` of ``strings`` +Default + ``["image", "video", "mediacollection", "embed"]`` +Description + Selects which gallery modules to download from. + + Supported module types are + ``image``, ``video``, ``mediacollection``, ``embed``, ``text``. + + extractor.blogger.videos ------------------------ Type diff --git a/gallery_dl/extractor/behance.py b/gallery_dl/extractor/behance.py index 6909785d12..ad0caf944f 100644 --- a/gallery_dl/extractor/behance.py +++ b/gallery_dl/extractor/behance.py @@ -89,6 +89,17 @@ def __init__(self, match): 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) @@ -134,13 +145,17 @@ def get_images(self, data): append = result.append for module in data["modules"]: - mtype = module["__typename"] + mtype = module["__typename"][:-6].lower() + + if mtype not in self.modules: + self.log.debug("Skipping '%s' module", mtype) + continue - if mtype == "ImageModule": + 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: @@ -159,7 +174,7 @@ def get_images(self, data): append((url, module)) - elif mtype == "MediaCollectionModule": + elif mtype == "mediacollection": for component in module["components"]: for size in component["imageSizes"].values(): if size: @@ -168,14 +183,14 @@ def get_images(self, data): 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 == "TextModule": + elif mtype == "text": module["extension"] = "txt" append(("text:" + module["text"], module)) diff --git a/test/results/behance.py b/test/results/behance.py index 2a23b3ed28..abc1cb9a91 100644 --- a/test/results/behance.py +++ b/test/results/behance.py @@ -63,6 +63,15 @@ "#count" : 3, }, +{ + "#url" : "https://www.behance.net/gallery/89270715/Moevir", + "#comment" : "'text' modules (#4799)", + "#category": ("", "behance", "gallery"), + "#class" : behance.BehanceGalleryExtractor, + "#options" : {"modules": "text"}, + "#urls" : """text:
Make Shift
https://www.moevir.com/News/make-shif
Moevir Magazine November Issue 2019
Photography by Caesar Lima @caephoto 
Model: Bee @phamhuongbee 
Makeup by Monica Alvarez @monicaalvarezmakeup 
Styling by Jessica Boal @jessicaboal 
Hair by James Gilbert @brandnewjames
Shot at Vila Sophia
""", +}, + { "#url" : "https://www.behance.net/gallery/177464639/Kimori", "#comment" : "mature content (#4417)",