diff --git a/docs/configuration.rst b/docs/configuration.rst index fd990f1b..e9dc4599 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -684,7 +684,7 @@ extractor.*.browser Type ``string`` Default - * ``"firefox"``: ``artstation``, ``fanbox``, ``mangasee``, ``twitter`` + * ``"firefox"``: ``artstation``, ``fanbox``, ``twitter`` * ``null``: otherwise Example * ``"chrome:macos"`` diff --git a/docs/supportedsites.md b/docs/supportedsites.md index 87a94918..1847b7b1 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -565,12 +565,6 @@ Consider all listed sites to potentially be NSFW. Authors, Chapters, Updates Feed, Library, MDLists, Manga Supported - - MangaLife - https://manga4life.com/ - Chapters, Manga - - MangaPark https://mangapark.net/ @@ -583,12 +577,6 @@ Consider all listed sites to potentially be NSFW. Chapters, Manga - - MangaSee - https://mangasee123.com/ - Chapters, Manga - - Mangoxo https://www.mangoxo.com/ diff --git a/gallery_dl/extractor/__init__.py b/gallery_dl/extractor/__init__.py index f8fa9d3b..4dc8c67c 100644 --- a/gallery_dl/extractor/__init__.py +++ b/gallery_dl/extractor/__init__.py @@ -107,7 +107,6 @@ modules = [ "manganelo", "mangapark", "mangaread", - "mangasee", "mangoxo", "misskey", "motherless", diff --git a/gallery_dl/extractor/mangasee.py b/gallery_dl/extractor/mangasee.py deleted file mode 100644 index 72613325..00000000 --- a/gallery_dl/extractor/mangasee.py +++ /dev/null @@ -1,117 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright 2021-2023 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://mangasee123.com/""" - -from .common import ChapterExtractor, MangaExtractor -from .. import text, util - - -class MangaseeBase(): - category = "mangasee" - browser = "firefox" - root = "https://mangasee123.com" - - @staticmethod - def _transform_chapter(data): - chapter = data["Chapter"] - return { - "title" : data["ChapterName"] or "", - "index" : chapter[0], - "chapter" : int(chapter[1:-1]), - "chapter_minor": "" if chapter[-1] == "0" else "." + chapter[-1], - "chapter_string": chapter, - "lang" : "en", - "language": "English", - "date" : text.parse_datetime( - data["Date"], "%Y-%m-%d %H:%M:%S"), - } - - -class MangaseeChapterExtractor(MangaseeBase, ChapterExtractor): - pattern = (r"(?:https?://)?(mangasee123|manga4life)\.com" - r"(/read-online/[^/?#]+\.html)") - example = "https://mangasee123.com/read-online/MANGA-chapter-1-page-1.html" - - def __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)) - - def _init(self): - self.session.headers["Referer"] = self.gallery_url - - domain = self.root.rpartition("/")[2] - cookies = self.cookies - if not cookies.get("PHPSESSID", domain=domain): - cookies.set("PHPSESSID", util.generate_token(13), domain=domain) - - def metadata(self, page): - extr = text.extract_from(page) - author = util.json_loads(extr('"author":', '],') + "]") - genre = util.json_loads(extr('"genre":', '],') + "]") - self.chapter = data = util.json_loads(extr("vm.CurChapter =", ";\r\n")) - self.domain = extr('vm.CurPathName = "', '"') - self.slug = extr('vm.IndexName = "', '"') - - data = self._transform_chapter(data) - data["manga"] = text.unescape(extr('vm.SeriesName = "', '"')) - data["author"] = author - data["genre"] = genre - return data - - def images(self, page): - chapter = self.chapter["Chapter"][1:] - if chapter[-1] == "0": - chapter = chapter[:-1] - else: - chapter = chapter[:-1] + "." + chapter[-1] - - base = "https://{}/manga/{}/".format(self.domain, self.slug) - if self.chapter["Directory"]: - base += self.chapter["Directory"] + "/" - base += chapter + "-" - - return [ - ("{}{:>03}.png".format(base, i), None) - for i in range(1, int(self.chapter["Page"]) + 1) - ] - - -class MangaseeMangaExtractor(MangaseeBase, MangaExtractor): - chapterclass = MangaseeChapterExtractor - pattern = r"(?:https?://)?(mangasee123|manga4life)\.com(/manga/[^/?#]+)" - example = "https://mangasee123.com/manga/MANGA" - - 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): - extr = text.extract_from(page) - author = util.json_loads(extr('"author":', '],') + "]") - genre = util.json_loads(extr('"genre":', '],') + "]") - slug = extr('vm.IndexName = "', '"') - chapters = util.json_loads(extr("vm.Chapters = ", ";\r\n")) - - result = [] - for data in map(self._transform_chapter, chapters): - url = "{}/read-online/{}-chapter-{}{}".format( - self.root, slug, data["chapter"], data["chapter_minor"]) - if data["index"] != "1": - url += "-index-" + data["index"] - url += "-page-1.html" - - data["manga"] = slug - data["author"] = author - data["genre"] = genre - result.append((url, data)) - return result diff --git a/scripts/supportedsites.py b/scripts/supportedsites.py index 9f80dfb1..df0dfb3e 100755 --- a/scripts/supportedsites.py +++ b/scripts/supportedsites.py @@ -97,11 +97,9 @@ CATEGORY_MAP = { "mangafox" : "Manga Fox", "mangahere" : "Manga Here", "mangakakalot" : "MangaKakalot", - "mangalife" : "MangaLife", "manganato" : "MangaNato", "mangapark" : "MangaPark", "mangaread" : "MangaRead", - "mangasee" : "MangaSee", "mariowiki" : "Super Mario Wiki", "mastodon.social": "mastodon.social", "mediawiki" : "MediaWiki", @@ -603,10 +601,6 @@ def build_extractor_list(): default["coomer"] = default["kemono"] domains["coomer"] = domains["kemono"].replace("kemono", "coomer") - # add manga4life.com - default["mangalife"] = default["mangasee"] - domains["mangalife"] = "https://manga4life.com/" - # add wikifeetx.com default["wikifeetx"] = default["wikifeet"] domains["wikifeetx"] = "https://www.wikifeetx.com/" diff --git a/test/results/mangalife.py b/test/results/mangalife.py deleted file mode 100644 index a8d86b3b..00000000 --- a/test/results/mangalife.py +++ /dev/null @@ -1,69 +0,0 @@ -# -*- 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. - -from gallery_dl.extractor import mangasee -import datetime - - -__tests__ = ( -{ - "#url" : "https://manga4life.com/read-online/One-Piece-chapter-1063-page-1.html", - "#category": ("", "mangalife", "chapter"), - "#class" : mangasee.MangaseeChapterExtractor, - "#pattern" : r"https://[^/]+/manga/One-Piece/1063-0\d\d\.png", - "#count" : 13, - - "author" : ["ODA Eiichiro"], - "chapter" : 1063, - "chapter_minor" : "", - "chapter_string": "110630", - "count" : 13, - "date" : "dt:2024-03-29 15:07:00", - "extension" : "png", - "filename" : r"re:1063-0\d\d", - "genre" : [ - "Action", - "Adventure", - "Comedy", - "Drama", - "Fantasy", - "Shounen", - ], - "index" : "1", - "lang" : "en", - "language" : "English", - "manga" : "One Piece", - "page" : int, - "title" : "", -}, - -{ - "#url" : "https://manga4life.com/manga/Ano-Musume-Ni-Kiss-To-Shirayuri-O", - "#category": ("", "mangalife", "manga"), - "#class" : mangasee.MangaseeMangaExtractor, - "#pattern" : mangasee.MangaseeChapterExtractor.pattern, - "#count" : ">= 50", - - "author" : ["Canno"], - "chapter" : int, - "chapter_minor" : r"re:^|\.5$", - "chapter_string": r"re:100\d\d\d", - "date" : datetime.datetime, - "genre" : [ - "Comedy", - "Romance", - "School Life", - "Seinen", - "Shoujo Ai", - ], - "index" : "1", - "lang" : "en", - "language" : "English", - "manga" : "Ano-Musume-Ni-Kiss-To-Shirayuri-O", - "title" : "", -}, - -) diff --git a/test/results/mangasee.py b/test/results/mangasee.py deleted file mode 100644 index 8cf51d4e..00000000 --- a/test/results/mangasee.py +++ /dev/null @@ -1,69 +0,0 @@ -# -*- 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. - -from gallery_dl.extractor import mangasee -import datetime - - -__tests__ = ( -{ - "#url" : "https://mangasee123.com/read-online/Tokyo-Innocent-chapter-4.5-page-1.html", - "#category": ("", "mangasee", "chapter"), - "#class" : mangasee.MangaseeChapterExtractor, - "#pattern" : r"https://[^/]+/manga/Tokyo-Innocent/0004\.5-00\d\.png", - "#count" : 8, - - "author" : ["NARUMI Naru"], - "chapter" : 4, - "chapter_minor" : ".5", - "chapter_string": "100045", - "count" : 8, - "date" : "dt:2020-01-20 21:52:53", - "extension" : "png", - "filename" : r"re:0004\.5-00\d", - "genre" : [ - "Comedy", - "Fantasy", - "Harem", - "Romance", - "Shounen", - "Supernatural", - ], - "index" : "1", - "lang" : "en", - "language" : "English", - "manga" : "Tokyo Innocent", - "page" : int, - "title" : "", -}, - -{ - "#url" : "https://mangasee123.com/manga/Nakamura-Koedo-To-Daizu-Keisuke-Wa-Umaku-Ikanai", - "#category": ("", "mangasee", "manga"), - "#class" : mangasee.MangaseeMangaExtractor, - "#pattern" : mangasee.MangaseeChapterExtractor.pattern, - "#count" : ">= 17", - - "author" : ["TAKASE Masaya"], - "chapter" : int, - "chapter_minor" : r"re:^|\.5$", - "chapter_string": r"re:100\d\d\d", - "date" : datetime.datetime, - "genre" : [ - "Comedy", - "Romance", - "School Life", - "Shounen", - "Slice of Life", - ], - "index" : "1", - "lang" : "en", - "language" : "English", - "manga" : "Nakamura-Koedo-To-Daizu-Keisuke-Wa-Umaku-Ikanai", - "title" : "", -}, - -)