[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">
|
<tr id="comick" title="comick">
|
||||||
<td>Comick</td>
|
<td>Comick</td>
|
||||||
<td>https://comick.io/</td>
|
<td>https://comick.io/</td>
|
||||||
<td>Chapters, Manga</td>
|
<td>Chapters, Covers, Manga</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr id="coomer" title="coomer">
|
<tr id="coomer" title="coomer">
|
||||||
@@ -994,7 +994,7 @@ Consider all listed sites to potentially be NSFW.
|
|||||||
<tr id="tungsten" title="tungsten">
|
<tr id="tungsten" title="tungsten">
|
||||||
<td>Tungsten</td>
|
<td>Tungsten</td>
|
||||||
<td>https://tungsten.run/</td>
|
<td>https://tungsten.run/</td>
|
||||||
<td>Models, Posts</td>
|
<td>Models, Posts, User Profiles</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr id="twibooru" title="twibooru">
|
<tr id="twibooru" title="twibooru">
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
"""Extractors for https://comick.io/"""
|
"""Extractors for https://comick.io/"""
|
||||||
|
|
||||||
from .common import ChapterExtractor, MangaExtractor, Message
|
from .common import GalleryExtractor, ChapterExtractor, MangaExtractor, Message
|
||||||
from .. import text
|
from .. import text
|
||||||
from ..cache import memcache
|
from ..cache import memcache
|
||||||
|
|
||||||
@@ -21,6 +21,42 @@ class ComickBase():
|
|||||||
root = "https://comick.io"
|
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):
|
class ComickChapterExtractor(ComickBase, ChapterExtractor):
|
||||||
"""Extractor for comick.io manga chapters"""
|
"""Extractor for comick.io manga chapters"""
|
||||||
archive_fmt = "{chapter_hid}_{page}"
|
archive_fmt = "{chapter_hid}_{page}"
|
||||||
@@ -61,7 +97,7 @@ class ComickChapterExtractor(ComickBase, ChapterExtractor):
|
|||||||
|
|
||||||
def images(self, page):
|
def images(self, page):
|
||||||
return [
|
return [
|
||||||
("https://meo.comick.pictures/" + img["b2key"], {
|
(f"https://meo.comick.pictures/{img['b2key']}", {
|
||||||
"width" : img["w"],
|
"width" : img["w"],
|
||||||
"height" : img["h"],
|
"height" : img["h"],
|
||||||
"size" : img["s"],
|
"size" : img["s"],
|
||||||
|
|||||||
@@ -304,4 +304,49 @@ __tests__ = (
|
|||||||
"lang" : "iso:639",
|
"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