[comick] add 'covers' extractor
This commit is contained in:
@@ -196,7 +196,7 @@ Consider all listed sites to potentially be NSFW.
|
||||
<tr id="comick" title="comick">
|
||||
<td>Comick</td>
|
||||
<td>https://comick.io/</td>
|
||||
<td>Chapters, Manga</td>
|
||||
<td>Chapters, Covers, Manga</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr id="coomer" title="coomer">
|
||||
@@ -994,7 +994,7 @@ Consider all listed sites to potentially be NSFW.
|
||||
<tr id="tungsten" title="tungsten">
|
||||
<td>Tungsten</td>
|
||||
<td>https://tungsten.run/</td>
|
||||
<td>Models, Posts</td>
|
||||
<td>Models, Posts, User Profiles</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr id="twibooru" title="twibooru">
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
"""Extractors for https://comick.io/"""
|
||||
|
||||
from .common import ChapterExtractor, MangaExtractor, Message
|
||||
from .common import GalleryExtractor, ChapterExtractor, MangaExtractor, Message
|
||||
from .. import text
|
||||
from ..cache import memcache
|
||||
|
||||
@@ -21,6 +21,42 @@ class ComickBase():
|
||||
root = "https://comick.io"
|
||||
|
||||
|
||||
class ComickCoversExtractor(ComickBase, GalleryExtractor):
|
||||
"""Extractor for comick.io manga covers"""
|
||||
subcategory = "covers"
|
||||
directory_fmt = ("{category}", "{manga}", "Covers")
|
||||
filename_fmt = "{volume:>02}_{lang}.{extension}"
|
||||
archive_fmt = "c_{id}"
|
||||
pattern = BASE_PATTERN + r"/comic/([\w-]+)/cover"
|
||||
example = "https://comick.io/comic/MANGA/cover"
|
||||
|
||||
def metadata(self, page):
|
||||
manga = _manga_info(self, self.groups[0])
|
||||
self.slug = manga['manga_slug']
|
||||
return manga
|
||||
|
||||
def images(self, page):
|
||||
url = f"{self.root}/comic/{self.slug}/cover"
|
||||
page = self.request(url).text
|
||||
data = self._extract_nextdata(page)
|
||||
|
||||
covers = data["props"]["pageProps"]["comic"]["md_covers"]
|
||||
covers.reverse()
|
||||
|
||||
return [
|
||||
(f"https://meo.comick.pictures/{cover['b2key']}", {
|
||||
"id" : cover["id"],
|
||||
"width" : cover["w"],
|
||||
"height": cover["h"],
|
||||
"size" : cover["s"],
|
||||
"lang" : cover["locale"],
|
||||
"volume": text.parse_int(cover["vol"]),
|
||||
"cover" : cover,
|
||||
})
|
||||
for cover in covers
|
||||
]
|
||||
|
||||
|
||||
class ComickChapterExtractor(ComickBase, ChapterExtractor):
|
||||
"""Extractor for comick.io manga chapters"""
|
||||
archive_fmt = "{chapter_hid}_{page}"
|
||||
@@ -61,7 +97,7 @@ class ComickChapterExtractor(ComickBase, ChapterExtractor):
|
||||
|
||||
def images(self, page):
|
||||
return [
|
||||
("https://meo.comick.pictures/" + img["b2key"], {
|
||||
(f"https://meo.comick.pictures/{img['b2key']}", {
|
||||
"width" : img["w"],
|
||||
"height" : img["h"],
|
||||
"size" : img["s"],
|
||||
|
||||
@@ -304,4 +304,49 @@ __tests__ = (
|
||||
"lang" : "iso:639",
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://comick.io/comic/neko-no-oshigoto/cover",
|
||||
"#class" : comick.ComickCoversExtractor,
|
||||
"#results" : (
|
||||
"https://meo.comick.pictures/l6wvkz.jpg",
|
||||
"https://meo.comick.pictures/X8xRNp.jpg",
|
||||
),
|
||||
|
||||
"id" : {45687770, 45687771},
|
||||
"width" : {1053, 1055},
|
||||
"height" : 1500,
|
||||
"size" : int,
|
||||
"lang" : "ja",
|
||||
"extension" : "jpg",
|
||||
"manga" : "Neko no Oshigoto",
|
||||
"volume" : range(1, 2),
|
||||
"cover" : {
|
||||
"b2key" : str,
|
||||
"gpurl" : str,
|
||||
"h" : int,
|
||||
"id" : int,
|
||||
"is_primary" : bool,
|
||||
"locale" : "ja",
|
||||
"md_comic_id": int,
|
||||
"mdid" : "iso:uuid",
|
||||
"s" : int,
|
||||
"url" : "iso:uuid",
|
||||
"vol" : str,
|
||||
"w" : int,
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://comick.io/comic/01-sakamoto-days/cover",
|
||||
"#class" : comick.ComickCoversExtractor,
|
||||
"#pattern" : r"https://meo\.comick\.pictures/\w+\.jpg",
|
||||
"#count" : range(50, 80),
|
||||
|
||||
"id" : int,
|
||||
"width" : int,
|
||||
"height": int,
|
||||
"volume": range(1, 30),
|
||||
"lang" : {"ja", "en", "fr", "pt-br"},
|
||||
},
|
||||
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user