diff options
Diffstat (limited to 'gallery_dl/extractor/nudostar.py')
| -rw-r--r-- | gallery_dl/extractor/nudostar.py | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/gallery_dl/extractor/nudostar.py b/gallery_dl/extractor/nudostar.py new file mode 100644 index 0000000..467d36a --- /dev/null +++ b/gallery_dl/extractor/nudostar.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. + +"""Extractors for https://nudostar.tv/""" + +from .common import GalleryExtractor, Message +from .. import text + +BASE_PATTERN = r"(?:https?://)?(?:[a-z]{2}.)?nudostar\.tv" + + +class NudostarExtractor(GalleryExtractor): + """Base class for NudoStar extractors""" + category = "nudostar" + root = "https://nudostar.tv" + + +class NudostarModelExtractor(NudostarExtractor): + """Extractor for NudoStar models""" + subcategory = "model" + pattern = BASE_PATTERN + r"(/models/([^/?#]+)/?)$" + example = "https://nudostar.tv/models/MODEL/" + + def metadata(self, page): + names = text.extr(page, "<title>", "<").rpartition( + " Nude ")[0].split(" / ") + slug = self.groups[1] + + return { + "gallery_id" : slug, + "model_slug" : slug, + "model_names": names, + "model" : names[0], + "title" : "", + } + + def images(self, page): + path = text.extr(page, '" src="https://nudostar.tv', '"') + path, cnt, end = path.rsplit("_", 2) + + base = f"{self.root}{path}_" + ext = "." + end.rpartition(".")[2] + + return [ + (f"{base}{i:04}{ext}", None) + for i in range(1, int(cnt)+1) + ] + + +class NudostarImageExtractor(NudostarExtractor): + """Extractor for NudoStar images""" + subcategory = "image" + pattern = BASE_PATTERN + r"(/models/([^/?#]+)/(\d+)/)" + example = "https://nudostar.tv/models/MODEL/123/" + + def items(self): + page = self.request(self.page_url, notfound=self.subcategory).text + + img_url = text.extract( + page, 'src="', '"', page.index('class="headline"'))[0] + + data = NudostarModelExtractor.metadata(self, page) + data = text.nameext_from_url(img_url, data) + data["num"] = text.parse_int(self.groups[2]) + data["url"] = img_url + + yield Message.Directory, data + yield Message.Url, img_url, data |
