Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
mikf
GitHub Repository: mikf/gallery-dl
Path: blob/master/gallery_dl/extractor/dandadan.py
8906 views
1
# -*- coding: utf-8 -*-
2
3
# Copyright 2025 Mike Fährmann
4
#
5
# This program is free software; you can redistribute it and/or modify
6
# it under the terms of the GNU General Public License version 2 as
7
# published by the Free Software Foundation.
8
9
"""Extractors for https://dandadan.net/"""
10
11
from .common import ChapterExtractor, MangaExtractor
12
from .. import text
13
14
BASE_PATTERN = r"(?:https?://)?(?:www\.)?dandadan\.net"
15
16
17
class DandadanBase():
18
"""Base class for dandadan extractors"""
19
category = "dandadan"
20
root = "https://dandadan.net"
21
22
23
class DandadanChapterExtractor(DandadanBase, ChapterExtractor):
24
"""Extractor for dandadan manga chapters"""
25
pattern = BASE_PATTERN + r"(/manga/dandadan-chapter-([^/?#]+)/?)"
26
example = "https://dandadan.net/manga/dandadan-chapter-123/"
27
28
def metadata(self, page):
29
chapter, sep, minor = text.extr(
30
page, "hapter ", " - ").partition(".")
31
return {
32
"manga" : "Dandadan",
33
"chapter" : text.parse_int(chapter),
34
"chapter_minor": sep + minor,
35
"lang" : "en",
36
}
37
38
def images(self, page):
39
images = [
40
(text.extr(figure, 'src="', '"'), None)
41
for figure in text.extract_iter(page, "<figure", "</figure>")
42
]
43
44
if images:
45
return images
46
47
return [
48
(src, None)
49
for src in text.extract_iter(
50
page, '<img decoding="async" class="aligncenter" src="', '"')
51
]
52
53
54
class DandadanMangaExtractor(DandadanBase, MangaExtractor):
55
"""Extractor for dandadan manga"""
56
chapterclass = DandadanChapterExtractor
57
pattern = BASE_PATTERN + r"(/)"
58
example = "https://dandadan.net/"
59
60
def chapters(self, page):
61
data = {}
62
return [
63
(text.extr(post, 'href="', '"'), data)
64
for post in text.extract_iter(page, '<li id="su-post', "</li>")
65
]
66
67