[webtoons] generalize and improve comic extraction (fixes #820)
This commit is contained in:
@@ -35,7 +35,7 @@ class WebtoonsEpisodeExtractor(WebtoonsExtractor):
|
|||||||
filename_fmt = "{episode}-{num:>02}.{extension}"
|
filename_fmt = "{episode}-{num:>02}.{extension}"
|
||||||
archive_fmt = "{title_no}_{episode}_{num}"
|
archive_fmt = "{title_no}_{episode}_{num}"
|
||||||
pattern = (BASE_PATTERN + r"/([^/?&#]+)/([^/?&#]+)/(?:[^/?&#]+))"
|
pattern = (BASE_PATTERN + r"/([^/?&#]+)/([^/?&#]+)/(?:[^/?&#]+))"
|
||||||
r"/viewer(?:\?([^#]+))")
|
r"/viewer(?:\?([^#'\"]+))")
|
||||||
test = (
|
test = (
|
||||||
(("https://www.webtoons.com/en/comedy/safely-endangered"
|
(("https://www.webtoons.com/en/comedy/safely-endangered"
|
||||||
"/ep-572-earth/viewer?title_no=352&episode_no=572"), {
|
"/ep-572-earth/viewer?title_no=352&episode_no=572"), {
|
||||||
@@ -111,6 +111,11 @@ class WebtoonsComicExtractor(WebtoonsExtractor):
|
|||||||
"list?title_no=1845&page=3"), {
|
"list?title_no=1845&page=3"), {
|
||||||
"count": ">= 15",
|
"count": ">= 15",
|
||||||
}),
|
}),
|
||||||
|
# (#820)
|
||||||
|
(("https://www.webtoons.com/en/challenge/scoob-and-shag/"
|
||||||
|
"list?title_no=210827&page=9"), {
|
||||||
|
"count": ">= 18",
|
||||||
|
}),
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self, match):
|
def __init__(self, match):
|
||||||
@@ -143,6 +148,8 @@ class WebtoonsComicExtractor(WebtoonsExtractor):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def get_episode_urls(page):
|
def get_episode_urls(page):
|
||||||
"""Extract and return all episode urls in 'page'"""
|
"""Extract and return all episode urls in 'page'"""
|
||||||
pos = page.find('id="_listUl"')
|
page = text.extract(page, 'id="_listUl"', '</ul>')[0]
|
||||||
return text.extract_iter(
|
return [
|
||||||
page, '<a href="', '" class="NPI=a:list', pos)
|
match.group(0)
|
||||||
|
for match in WebtoonsEpisodeExtractor.pattern.finditer(page)
|
||||||
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user