diff options
| author | 2025-10-14 00:23:10 -0400 | |
|---|---|---|
| committer | 2025-10-14 00:23:10 -0400 | |
| commit | 33f8a8a37a9cba738ef25fb99955f0730da9eb48 (patch) | |
| tree | b51fb48b160f5e5e034e6b4542e6f00703bae7ec /gallery_dl/extractor/dandadan.py | |
| parent | bbe7fac03d881662a458e7fbf870c9d71f5257f4 (diff) | |
New upstream version 1.30.10.upstream/1.30.10
Diffstat (limited to 'gallery_dl/extractor/dandadan.py')
| -rw-r--r-- | gallery_dl/extractor/dandadan.py | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/gallery_dl/extractor/dandadan.py b/gallery_dl/extractor/dandadan.py new file mode 100644 index 0000000..48dc0b7 --- /dev/null +++ b/gallery_dl/extractor/dandadan.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- + +# Copyright 2025 Mike Fährmann +# +# 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://dandadan.net/""" + +from .common import ChapterExtractor, MangaExtractor +from .. import text + +BASE_PATTERN = r"(?:https?://)?(?:www\.)?dandadan\.net" + + +class DandadanBase(): + """Base class for dandadan extractors""" + category = "dandadan" + root = "https://dandadan.net" + + +class DandadanChapterExtractor(DandadanBase, ChapterExtractor): + """Extractor for dandadan manga chapters""" + pattern = rf"{BASE_PATTERN}(/manga/dandadan-chapter-([^/?#]+)/?)" + example = "https://dandadan.net/manga/dandadan-chapter-123/" + + def metadata(self, page): + chapter, sep, minor = text.extr( + page, "hapter ", " - ").partition(".") + return { + "manga" : "Dandadan", + "chapter" : text.parse_int(chapter), + "chapter_minor": f"{sep}{minor}", + "lang" : "en", + } + + def images(self, page): + images = [ + (text.extr(figure, 'src="', '"'), None) + for figure in text.extract_iter(page, "<figure", "</figure>") + ] + + if images: + return images + + return [ + (src, None) + for src in text.extract_iter( + page, '<img decoding="async" class="aligncenter" src="', '"') + ] + + +class DandadanMangaExtractor(DandadanBase, MangaExtractor): + """Extractor for dandadan manga""" + chapterclass = DandadanChapterExtractor + pattern = rf"{BASE_PATTERN}(/)" + example = "https://dandadan.net/" + + def chapters(self, page): + data = {} + return [ + (text.extr(post, 'href="', '"'), data) + for post in text.extract_iter(page, '<li id="su-post', "</li>") + ] |
