From 84b24b2b5b2cda4274bec41bf8335f466facd572 Mon Sep 17 00:00:00 2001 From: StenFredd Date: Sun, 3 May 2026 14:07:18 +0300 Subject: [PATCH] upd --- src/sources/mangalib.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/sources/mangalib.py b/src/sources/mangalib.py index acffc57..0f43362 100644 --- a/src/sources/mangalib.py +++ b/src/sources/mangalib.py @@ -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