From 0907d0bf67a6eb5ca5946bc0dbf7f80b5644a74f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nh=C3=A2n?= Date: Thu, 3 Aug 2023 01:27:22 +0700 Subject: [PATCH] schduler: ignore 404 errors May consider automatically clean up 404 titles as well. --- src/mangoapi/base_site.py | 3 +++ src/mangoapi/exceptions.py | 5 +++++ src/pytaku/scheduler.py | 10 ++++++++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/mangoapi/base_site.py b/src/mangoapi/base_site.py index 7abb36f..30b00e9 100644 --- a/src/mangoapi/base_site.py +++ b/src/mangoapi/base_site.py @@ -7,6 +7,7 @@ from pytaku.conf import config from .exceptions import ( SourceSite5xxError, + SourceSite404Error, SourceSiteTimeoutError, SourceSiteUnexpectedError, ) @@ -79,6 +80,8 @@ class Site(ABC): if 500 <= resp.status_code <= 599: raise SourceSite5xxError(url, resp.status_code, resp.text) + elif resp.status_code == 404: + raise SourceSite404Error(url, resp.text) elif resp.status_code != 200: raise SourceSiteUnexpectedError(url, resp.status_code, resp.text) diff --git a/src/mangoapi/exceptions.py b/src/mangoapi/exceptions.py index 728d4ab..613c904 100644 --- a/src/mangoapi/exceptions.py +++ b/src/mangoapi/exceptions.py @@ -13,5 +13,10 @@ class SourceSite5xxError(SourceSiteResponseError): pass +class SourceSite404Error(SourceSiteResponseError): + def __init__(self, url, response_text): + super().__init__(url, 404, response_text) + + class SourceSiteUnexpectedError(SourceSiteResponseError): pass diff --git a/src/pytaku/scheduler.py b/src/pytaku/scheduler.py index c25bcc4..20fe4f7 100644 --- a/src/pytaku/scheduler.py +++ b/src/pytaku/scheduler.py @@ -7,7 +7,7 @@ from pathlib import Path from requests.exceptions import ReadTimeout -from mangoapi.exceptions import SourceSite5xxError +from mangoapi.exceptions import SourceSite5xxError, SourceSite404Error from .conf import config from .persistence import delete_expired_tokens, find_outdated_titles, save_title @@ -77,7 +77,13 @@ class UpdateOutdatedTitles(Worker): print(" done") if title["site"] == "mangasee": time.sleep(2) - except (SourceSite5xxError, ReadTimeout, JSONDecodeError) as e: + except ( + # TODO: on 404, maybe delete title that's no longer on source site? + SourceSite404Error, + SourceSite5xxError, + ReadTimeout, + JSONDecodeError, + ) as e: print(" skipped because of server error:", e.__class__.__name__, str(e)) -- 2.38.5