summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/dandadan.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2025-10-14 00:23:10 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2025-10-14 00:23:10 -0400
commit33f8a8a37a9cba738ef25fb99955f0730da9eb48 (patch)
treeb51fb48b160f5e5e034e6b4542e6f00703bae7ec /gallery_dl/extractor/dandadan.py
parentbbe7fac03d881662a458e7fbf870c9d71f5257f4 (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.py65
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>")
+ ]