diff options
| author | 2025-07-31 01:22:01 -0400 | |
|---|---|---|
| committer | 2025-07-31 01:22:01 -0400 | |
| commit | a6e995c093de8aae2e91a0787281bb34c0b871eb (patch) | |
| tree | 2d79821b05300d34d8871eb6c9662b359a2de85d /gallery_dl/extractor/nudostar.py | |
| parent | 7672a750cb74bf31e21d76aad2776367fd476155 (diff) | |
New upstream version 1.30.2.upstream/1.30.2
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 |
