upd
This commit is contained in:
@@ -86,6 +86,14 @@ class MangalibSource:
|
|||||||
page.on("response", on_response)
|
page.on("response", on_response)
|
||||||
|
|
||||||
ok = await _navigate(page, chapters_url)
|
ok = await _navigate(page, chapters_url)
|
||||||
|
if not ok:
|
||||||
|
mirror_chapters_url = _switch_to_mirror(chapters_url)
|
||||||
|
if mirror_chapters_url != chapters_url:
|
||||||
|
logger.info("Основной домен недоступен, пробуем зеркало: {}", mirror_chapters_url)
|
||||||
|
ok = await _navigate(page, mirror_chapters_url)
|
||||||
|
if ok:
|
||||||
|
chapters_url = mirror_chapters_url
|
||||||
|
base_manga_url = _switch_to_mirror(base_manga_url)
|
||||||
if not ok:
|
if not ok:
|
||||||
page.remove_listener("response", on_response)
|
page.remove_listener("response", on_response)
|
||||||
return None
|
return None
|
||||||
@@ -230,6 +238,15 @@ class MangalibSource:
|
|||||||
|
|
||||||
referer = manga_url or referer_origin
|
referer = manga_url or referer_origin
|
||||||
ok = await _navigate(page, chapter_url, referer=referer)
|
ok = await _navigate(page, chapter_url, referer=referer)
|
||||||
|
if not ok:
|
||||||
|
mirror_chapter_url = _switch_to_mirror(chapter_url)
|
||||||
|
if mirror_chapter_url != chapter_url:
|
||||||
|
logger.info("[{}] Основной домен недоступен, пробуем зеркало: {}", ch_id, mirror_chapter_url)
|
||||||
|
mirror_referer = _switch_to_mirror(referer) if referer else referer
|
||||||
|
ok = await _navigate(page, mirror_chapter_url, referer=mirror_referer)
|
||||||
|
if ok:
|
||||||
|
chapter_url = mirror_chapter_url
|
||||||
|
referer_origin = _base_url(mirror_chapter_url)
|
||||||
if not ok:
|
if not ok:
|
||||||
page.remove_listener("response", on_response)
|
page.remove_listener("response", on_response)
|
||||||
logger.error("[{}] Не удалось открыть главу: {}", ch_id, chapter_url)
|
logger.error("[{}] Не удалось открыть главу: {}", ch_id, chapter_url)
|
||||||
@@ -370,6 +387,26 @@ class MangalibSource:
|
|||||||
# Вспомогательные функции (приватные)
|
# Вспомогательные функции (приватные)
|
||||||
# ──────────────────────────────────────────────
|
# ──────────────────────────────────────────────
|
||||||
|
|
||||||
|
# Зеркальные домены: при недоступности основного переключаемся на зеркало
|
||||||
|
_MIRROR_MAP = {
|
||||||
|
"mangalib.me": "mangalib.org",
|
||||||
|
"mangalib.org": "mangalib.me",
|
||||||
|
"hentailib.me": "mangalib.org",
|
||||||
|
"yaoilib.me": "mangalib.org",
|
||||||
|
"readlib.net": "mangalib.org",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def _switch_to_mirror(url: str) -> str:
|
||||||
|
"""Заменяет домен в URL на зеркало из _MIRROR_MAP. Возвращает исходный URL если зеркала нет."""
|
||||||
|
parsed = urlparse(url)
|
||||||
|
host = parsed.netloc.lower().removeprefix("www.")
|
||||||
|
mirror = _MIRROR_MAP.get(host)
|
||||||
|
if not mirror:
|
||||||
|
return url
|
||||||
|
return parsed._replace(netloc=mirror).geturl()
|
||||||
|
|
||||||
|
|
||||||
def _ensure_chapters_section(url: str) -> str:
|
def _ensure_chapters_section(url: str) -> str:
|
||||||
if "section=chapters" in url:
|
if "section=chapters" in url:
|
||||||
return url
|
return url
|
||||||
|
|||||||
Reference in New Issue
Block a user