[kissmanga] extract manga metadata
This commit is contained in:
@@ -37,6 +37,29 @@ class KissmangaExtractor(Extractor):
|
|||||||
|
|
||||||
request = cloudflare.request_func
|
request = cloudflare.request_func
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _parse_chapter_string(data):
|
||||||
|
data["chapter_string"] = text.unescape(data["chapter_string"])
|
||||||
|
|
||||||
|
match = re.match((
|
||||||
|
r"(?:[Vv]ol\.0*(\d+) )?"
|
||||||
|
r"(?:[Cc]h\.)?0*(\d+)"
|
||||||
|
r"(?:[.:]0*(\d+))?"
|
||||||
|
r"(?: *[:-]? *(.+))?"
|
||||||
|
), data["chapter_string"])
|
||||||
|
|
||||||
|
if not match:
|
||||||
|
match = re.match((
|
||||||
|
r"[\w ]+?(?: -)? 0*()(\d+)()(?: *[:-]? *(.+))?"
|
||||||
|
# r"[\w ]+?(?: -)? 0*()(\d+)(?: (.+))?(?: - (.+))?"
|
||||||
|
), data["chapter_string"])
|
||||||
|
|
||||||
|
volume, chapter, minor, title = match.groups()
|
||||||
|
data["volume"] = int(volume) if volume else 0
|
||||||
|
data["chapter"] = int(chapter) if chapter else 0
|
||||||
|
data["chapter_minor"] = "." + minor if minor else ""
|
||||||
|
data["title"] = title if title and title != "Read Online" else ""
|
||||||
|
|
||||||
|
|
||||||
class KissmangaMangaExtractor(KissmangaExtractor, MangaExtractor):
|
class KissmangaMangaExtractor(KissmangaExtractor, MangaExtractor):
|
||||||
"""Extractor for manga from kissmanga.com"""
|
"""Extractor for manga from kissmanga.com"""
|
||||||
@@ -44,12 +67,29 @@ class KissmangaMangaExtractor(KissmangaExtractor, MangaExtractor):
|
|||||||
test = [
|
test = [
|
||||||
("http://kissmanga.com/Manga/Dropout", {
|
("http://kissmanga.com/Manga/Dropout", {
|
||||||
"url": "992befdd64e178fe5af67de53f8b510860d968ca",
|
"url": "992befdd64e178fe5af67de53f8b510860d968ca",
|
||||||
|
"keyword": "1d23ea07296e004b33bee17fe2f5cd5177c58680",
|
||||||
}),
|
}),
|
||||||
("http://kissmanga.com/manga/feng-shen-ji", None),
|
("http://kissmanga.com/manga/feng-shen-ji", None),
|
||||||
]
|
]
|
||||||
|
|
||||||
def chapter_paths(self, page):
|
def chapters(self, page):
|
||||||
return text.extract_iter(page, '<td>\n<a href="', '"')
|
results = []
|
||||||
|
manga, pos = text.extract(
|
||||||
|
page, '<div class="barTitle">\n', '\n')
|
||||||
|
page, pos = text.extract(
|
||||||
|
page, '<table class="listing">', '</table>', pos)
|
||||||
|
needle = '" title="Read ' + manga + ' '
|
||||||
|
manga = text.unescape(manga)
|
||||||
|
|
||||||
|
for item in text.extract_iter(page, '<a href="', ' online">'):
|
||||||
|
url, _, chapter = item.partition(needle)
|
||||||
|
data = {
|
||||||
|
"manga": manga, "id": url.rpartition("=")[2],
|
||||||
|
"chapter_string": chapter, "lang": "en", "language": "English",
|
||||||
|
}
|
||||||
|
self._parse_chapter_string(data)
|
||||||
|
results.append((self.root + url, data))
|
||||||
|
return results
|
||||||
|
|
||||||
|
|
||||||
class KissmangaChapterExtractor(KissmangaExtractor):
|
class KissmangaChapterExtractor(KissmangaExtractor):
|
||||||
@@ -60,15 +100,15 @@ class KissmangaChapterExtractor(KissmangaExtractor):
|
|||||||
test = [
|
test = [
|
||||||
("http://kissmanga.com/Manga/Dropout/Ch-000---Oneshot-?id=145847", {
|
("http://kissmanga.com/Manga/Dropout/Ch-000---Oneshot-?id=145847", {
|
||||||
"url": "4136bcd1c6cecbca8cc2bc965d54f33ef0a97cc0",
|
"url": "4136bcd1c6cecbca8cc2bc965d54f33ef0a97cc0",
|
||||||
"keyword": "97cc9e513953e20d6309648df57a52a7ced59ae0",
|
"keyword": "68384c1167858fb4aa475c4596f0a685c45fff36",
|
||||||
}),
|
}),
|
||||||
("http://kissmanga.com/Manga/Urban-Tales/a?id=256717", {
|
("http://kissmanga.com/Manga/Urban-Tales/a?id=256717", {
|
||||||
"url": "de074848f6c1245204bb9214c12bcc3ecfd65019",
|
"url": "de074848f6c1245204bb9214c12bcc3ecfd65019",
|
||||||
"keyword": "3d96653188b761752c38b60d6e397e2ace0ea04c",
|
"keyword": "089158338b4cde43b2ff244814effeb13297de33",
|
||||||
}),
|
}),
|
||||||
("http://kissmanga.com/Manga/Monster/Monster-79?id=7608", {
|
("http://kissmanga.com/Manga/Monster/Monster-79?id=7608", {
|
||||||
"url": "6abec8178f35fe7846586280ca9e38eacc32452c",
|
"url": "6abec8178f35fe7846586280ca9e38eacc32452c",
|
||||||
"keyword": "2ae18e456a4a7e4a2889af49d5f2e9c10fbc45e6",
|
"keyword": "558da596e86ca544eb72cf303f3694bbf0b1f2f5",
|
||||||
}),
|
}),
|
||||||
("http://kissmanga.com/mAnGa/mOnStEr/Monster-79?id=7608", None),
|
("http://kissmanga.com/mAnGa/mOnStEr/Monster-79?id=7608", None),
|
||||||
]
|
]
|
||||||
@@ -87,19 +127,14 @@ class KissmangaChapterExtractor(KissmangaExtractor):
|
|||||||
"""Collect metadata for extractor-job"""
|
"""Collect metadata for extractor-job"""
|
||||||
manga, pos = text.extract(page, "Read manga\n", "\n")
|
manga, pos = text.extract(page, "Read manga\n", "\n")
|
||||||
cinfo, pos = text.extract(page, "", "\n", pos)
|
cinfo, pos = text.extract(page, "", "\n", pos)
|
||||||
match = re.match((
|
data = {
|
||||||
r"(?:[Vv]ol.0*(\d+) )?(?:[Cc]h.)?0*(\d+)(?:\.0*(\d+))?(?:: (.+))?|"
|
|
||||||
r"[\w ]+?(?: -)? 0*(\d+)(?: (.+))?"), cinfo)
|
|
||||||
chminor = match.group(3) or match.group(6)
|
|
||||||
return {
|
|
||||||
"manga": manga,
|
"manga": manga,
|
||||||
"volume": match.group(1) or "",
|
"chapter_string": cinfo,
|
||||||
"chapter": match.group(2) or match.group(5),
|
|
||||||
"chapter_minor": "."+chminor if chminor else "",
|
|
||||||
"title": match.group(4) or "",
|
|
||||||
"lang": "en",
|
"lang": "en",
|
||||||
"language": "English",
|
"language": "English",
|
||||||
}
|
}
|
||||||
|
self._parse_chapter_string(data)
|
||||||
|
return data
|
||||||
|
|
||||||
def get_image_urls(self, page):
|
def get_image_urls(self, page):
|
||||||
"""Extract list of all image-urls for a manga chapter"""
|
"""Extract list of all image-urls for a manga chapter"""
|
||||||
|
|||||||
Reference in New Issue
Block a user