upd
This commit is contained in:
@@ -86,6 +86,14 @@ class MangalibSource:
|
||||
page.on("response", on_response)
|
||||
|
||||
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:
|
||||
page.remove_listener("response", on_response)
|
||||
return None
|
||||
@@ -230,6 +238,15 @@ class MangalibSource:
|
||||
|
||||
referer = manga_url or referer_origin
|
||||
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:
|
||||
page.remove_listener("response", on_response)
|
||||
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:
|
||||
if "section=chapters" in url:
|
||||
return url
|
||||
|
||||
Reference in New Issue
Block a user