|
|
@ -35,8 +35,10 @@ class MangaseeBase():
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MangaseeChapterExtractor(MangaseeBase, ChapterExtractor):
|
|
|
|
class MangaseeChapterExtractor(MangaseeBase, ChapterExtractor):
|
|
|
|
pattern = r"(?:https?://)?mangasee123\.com(/read-online/[^/?#]+\.html)"
|
|
|
|
pattern = (r"(?:https?://)?(mangasee123|manga4life)\.com"
|
|
|
|
test = (("https://mangasee123.com/read-online"
|
|
|
|
r"(/read-online/[^/?#]+\.html)")
|
|
|
|
|
|
|
|
test = (
|
|
|
|
|
|
|
|
(("https://mangasee123.com/read-online"
|
|
|
|
"/Tokyo-Innocent-chapter-4.5-page-1.html"), {
|
|
|
|
"/Tokyo-Innocent-chapter-4.5-page-1.html"), {
|
|
|
|
"pattern": r"https://[^/]+/manga/Tokyo-Innocent/0004\.5-00\d\.png",
|
|
|
|
"pattern": r"https://[^/]+/manga/Tokyo-Innocent/0004\.5-00\d\.png",
|
|
|
|
"count": 8,
|
|
|
|
"count": 8,
|
|
|
@ -55,13 +57,37 @@ class MangaseeChapterExtractor(MangaseeBase, ChapterExtractor):
|
|
|
|
"page": int,
|
|
|
|
"page": int,
|
|
|
|
"title": "",
|
|
|
|
"title": "",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
}),
|
|
|
|
|
|
|
|
(("https://manga4life.com/read-online"
|
|
|
|
|
|
|
|
"/One-Piece-chapter-1063-page-1.html"), {
|
|
|
|
|
|
|
|
"pattern": r"https://[^/]+/manga/One-Piece/1063-0\d\d\.png",
|
|
|
|
|
|
|
|
"count": 13,
|
|
|
|
|
|
|
|
"keyword": {
|
|
|
|
|
|
|
|
"chapter": 1063,
|
|
|
|
|
|
|
|
"chapter_minor": "",
|
|
|
|
|
|
|
|
"chapter_string": "110630",
|
|
|
|
|
|
|
|
"count": 13,
|
|
|
|
|
|
|
|
"date": "dt:2022-10-16 17:32:54",
|
|
|
|
|
|
|
|
"extension": "png",
|
|
|
|
|
|
|
|
"filename": r"re:1063-0\d\d",
|
|
|
|
|
|
|
|
"index": "1",
|
|
|
|
|
|
|
|
"lang": "en",
|
|
|
|
|
|
|
|
"language": "English",
|
|
|
|
|
|
|
|
"manga": "One Piece",
|
|
|
|
|
|
|
|
"page": int,
|
|
|
|
|
|
|
|
"title": "",
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}),
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
def __init__(self, match):
|
|
|
|
def __init__(self, match):
|
|
|
|
ChapterExtractor.__init__(self, match)
|
|
|
|
if match.group(1) == "manga4life":
|
|
|
|
|
|
|
|
self.category = "mangalife"
|
|
|
|
|
|
|
|
self.root = "https://manga4life.com"
|
|
|
|
|
|
|
|
ChapterExtractor.__init__(self, match, self.root + match.group(2))
|
|
|
|
self.session.headers["Referer"] = self.gallery_url
|
|
|
|
self.session.headers["Referer"] = self.gallery_url
|
|
|
|
|
|
|
|
|
|
|
|
domain = "mangasee123.com"
|
|
|
|
domain = self.root.rpartition("/")[2]
|
|
|
|
cookies = self.session.cookies
|
|
|
|
cookies = self.session.cookies
|
|
|
|
if not cookies.get("PHPSESSID", domain=domain):
|
|
|
|
if not cookies.get("PHPSESSID", domain=domain):
|
|
|
|
cookies.set("PHPSESSID", util.generate_token(13), domain=domain)
|
|
|
|
cookies.set("PHPSESSID", util.generate_token(13), domain=domain)
|
|
|
@ -96,12 +122,24 @@ class MangaseeChapterExtractor(MangaseeBase, ChapterExtractor):
|
|
|
|
|
|
|
|
|
|
|
|
class MangaseeMangaExtractor(MangaseeBase, MangaExtractor):
|
|
|
|
class MangaseeMangaExtractor(MangaseeBase, MangaExtractor):
|
|
|
|
chapterclass = MangaseeChapterExtractor
|
|
|
|
chapterclass = MangaseeChapterExtractor
|
|
|
|
pattern = r"(?:https?://)?mangasee123\.com(/manga/[^/?#]+)"
|
|
|
|
pattern = r"(?:https?://)?(mangasee123|manga4life)\.com(/manga/[^/?#]+)"
|
|
|
|
test = (("https://mangasee123.com/manga"
|
|
|
|
test = (
|
|
|
|
|
|
|
|
(("https://mangasee123.com/manga"
|
|
|
|
"/Nakamura-Koedo-To-Daizu-Keisuke-Wa-Umaku-Ikanai"), {
|
|
|
|
"/Nakamura-Koedo-To-Daizu-Keisuke-Wa-Umaku-Ikanai"), {
|
|
|
|
"pattern": MangaseeChapterExtractor.pattern,
|
|
|
|
"pattern": MangaseeChapterExtractor.pattern,
|
|
|
|
"count": ">= 17",
|
|
|
|
"count": ">= 17",
|
|
|
|
})
|
|
|
|
}),
|
|
|
|
|
|
|
|
("https://manga4life.com/manga/Ano-Musume-Ni-Kiss-To-Shirayuri-O", {
|
|
|
|
|
|
|
|
"pattern": MangaseeChapterExtractor.pattern,
|
|
|
|
|
|
|
|
"count": ">= 50",
|
|
|
|
|
|
|
|
}),
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __init__(self, match):
|
|
|
|
|
|
|
|
if match.group(1) == "manga4life":
|
|
|
|
|
|
|
|
self.category = "mangalife"
|
|
|
|
|
|
|
|
self.root = "https://manga4life.com"
|
|
|
|
|
|
|
|
MangaExtractor.__init__(self, match, self.root + match.group(2))
|
|
|
|
|
|
|
|
|
|
|
|
def chapters(self, page):
|
|
|
|
def chapters(self, page):
|
|
|
|
slug, pos = text.extract(page, 'vm.IndexName = "', '"')
|
|
|
|
slug, pos = text.extract(page, 'vm.IndexName = "', '"')
|
|
|
|