From 9c0c1d2543bf0bd0137d9cf2b9998074198b736c Mon Sep 17 00:00:00 2001 From: FHU-yezi Date: Sun, 26 Jan 2025 10:50:45 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E5=AF=B9=E8=B1=A1=E6=A3=80=E6=9F=A5=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jkit/_base.py | 10 +++++----- jkit/article.py | 18 +++++++----------- jkit/collection.py | 8 ++------ jkit/notebook.py | 9 ++------- jkit/ranking/user_assets.py | 1 - jkit/user.py | 13 +++++-------- 6 files changed, 21 insertions(+), 38 deletions(-) diff --git a/jkit/_base.py b/jkit/_base.py index 34fe695..800ad52 100644 --- a/jkit/_base.py +++ b/jkit/_base.py @@ -54,15 +54,15 @@ def __init__(self) -> None: async def check(self) -> None: raise NotImplementedError - async def _auto_check(self) -> None: - if not CONFIG.resource_check.auto_check: + async def _require_check(self) -> None: + if self._checked or not CONFIG.resource_check.auto_check: return - if not self._checked: - await self.check() + await self.check() + self._checked = True def _as_checked(self: P1) -> P1: - if CONFIG.resource_check.force_check_safe_data: + if not CONFIG.resource_check.force_check_safe_data: self._checked = True return self diff --git a/jkit/article.py b/jkit/article.py index ec85375..d9fdfb2 100644 --- a/jkit/article.py +++ b/jkit/article.py @@ -223,9 +223,6 @@ def __init__( ) async def check(self) -> None: - if self._checked: - return - try: await send_request( datasource="JIANSHU", @@ -233,7 +230,6 @@ async def check(self) -> None: path=f"/asimov/p/{self.slug}", response_type="JSON", ) - self._checked = True except HTTPStatusError as e: if e.response.status_code == _RESOURCE_UNAVAILABLE_STATUS_CODE: raise ResourceUnavailableError( @@ -248,7 +244,7 @@ async def id(self) -> int: @property async def info(self) -> ArticleInfo: - await self._auto_check() + await self._require_check() data = await send_request( datasource="JIANSHU", @@ -313,7 +309,7 @@ async def info(self) -> ArticleInfo: @property async def views_count(self) -> int: - await self._auto_check() + await self._require_check() data = await send_request( datasource="JIANSHU", @@ -326,7 +322,7 @@ async def views_count(self) -> int: @property async def audio_info(self) -> ArticleAudioInfo | None: - await self._auto_check() + await self._require_check() data = await send_request( datasource="JIANSHU", @@ -349,7 +345,7 @@ async def audio_info(self) -> ArticleAudioInfo | None: @property async def belong_to_notebook(self) -> ArticleBelongToNotebookInfo: - await self._auto_check() + await self._require_check() data = await send_request( datasource="JIANSHU", @@ -366,7 +362,7 @@ async def belong_to_notebook(self) -> ArticleBelongToNotebookInfo: async def iter_included_collections( self, *, start_page: int = 1, page_size: int = 10 ) -> AsyncGenerator[ArticleIncludedCollectionInfo, None]: - await self._auto_check() + await self._require_check() now_page = start_page while True: @@ -399,7 +395,7 @@ async def iter_comments( author_only: bool = False, page_size: int = 10, ) -> AsyncGenerator[ArticleCommentInfo, None]: - await self._auto_check() + await self._require_check() now_page = start_page while True: @@ -462,7 +458,7 @@ async def iter_featured_comments( *, count: int = 10, ) -> AsyncGenerator[ArticleFeaturedCommentInfo, None]: - await self._auto_check() + await self._require_check() data = await send_request( datasource="JIANSHU", diff --git a/jkit/collection.py b/jkit/collection.py index 521b7c5..3fb51c0 100644 --- a/jkit/collection.py +++ b/jkit/collection.py @@ -113,9 +113,6 @@ def __init__(self, *, slug: str | None = None, url: str | None = None) -> None: ) async def check(self) -> None: - if self._checked: - return - try: await send_request( datasource="JIANSHU", @@ -123,7 +120,6 @@ async def check(self) -> None: path=f"/asimov/collections/slug/{self.slug}", response_type="JSON", ) - self._checked = True except HTTPStatusError as e: if e.response.status_code == _RESOURCE_UNAVAILABLE_STATUS_CODE: raise ResourceUnavailableError( @@ -134,7 +130,7 @@ async def check(self) -> None: @property async def info(self) -> CollectionInfo: - await self._auto_check() + await self._require_check() data = await send_request( datasource="JIANSHU", @@ -167,7 +163,7 @@ async def iter_articles( order_by: Literal["ADD_TIME", "LAST_COMMENT_TIME", "POPULARITY"] = "ADD_TIME", page_size: int = 20, ) -> AsyncGenerator[CollectionArticleInfo, None]: - await self._auto_check() + await self._require_check() now_page = start_page while True: diff --git a/jkit/notebook.py b/jkit/notebook.py index eecadc5..fe5b9f4 100644 --- a/jkit/notebook.py +++ b/jkit/notebook.py @@ -97,7 +97,6 @@ def to_article_obj(self) -> Article: class Notebook(ResourceObject, CheckableMixin, IdAndUrlMixin): def __init__(self, *, id: int) -> None: super().__init__() - self._checked = False if not is_notebook_id(id): raise ValueError(f"文集 ID 无效:{id}") @@ -116,9 +115,6 @@ def url(self) -> str: return notebook_id_to_url(self._id) async def check(self) -> None: - if self._checked: - return - try: await send_request( datasource="JIANSHU", @@ -126,7 +122,6 @@ async def check(self) -> None: path=f"/asimov/nb/{self.id}", response_type="JSON", ) - self._checked = True except HTTPStatusError as e: if e.response.status_code == _RESOURCE_UNAVAILABLE_STATUS_CODE: raise ResourceUnavailableError( @@ -137,7 +132,7 @@ async def check(self) -> None: @property async def info(self) -> NotebookInfo: - await self._auto_check() + await self._require_check() data = await send_request( datasource="JIANSHU", @@ -167,7 +162,7 @@ async def iter_articles( order_by: Literal["ADD_TIME", "LAST_COMMENT_TIME"] = "ADD_TIME", page_size: int = 20, ) -> AsyncGenerator[NotebookArticleInfo, None]: - await self._auto_check() + await self._require_check() now_page = start_page while True: diff --git a/jkit/ranking/user_assets.py b/jkit/ranking/user_assets.py index 4704bd3..70887e6 100644 --- a/jkit/ranking/user_assets.py +++ b/jkit/ranking/user_assets.py @@ -6,7 +6,6 @@ from jkit._base import DataObject, ResourceObject from jkit._network import send_request from jkit._normalization import normalize_assets_amount -from jkit.config import CONFIG from jkit.exceptions import ResourceUnavailableError from jkit.identifier_convert import user_slug_to_url from jkit.msgspec_constraints import ( diff --git a/jkit/user.py b/jkit/user.py index fd4ac8c..955fb4d 100644 --- a/jkit/user.py +++ b/jkit/user.py @@ -164,9 +164,6 @@ def __init__(self, *, slug: str | None = None, url: str | None = None) -> None: ) async def check(self) -> None: - if self._checked: - return - try: await send_request( datasource="JIANSHU", @@ -188,7 +185,7 @@ async def id(self) -> int: @property async def info(self) -> UserInfo: - await self._auto_check() + await self._require_check() data = await send_request( datasource="JIANSHU", @@ -280,7 +277,7 @@ async def assets_info(self) -> tuple[float, float | None, float | None]: async def iter_owned_collections( self, *, start_page: int = 1, page_size: int = 10 ) -> AsyncGenerator[UserCollectionInfo, None]: - await self._auto_check() + await self._require_check() now_page = start_page while True: @@ -312,7 +309,7 @@ async def iter_owned_collections( async def iter_managed_collections( self, *, start_page: int = 1, page_size: int = 10 ) -> AsyncGenerator[UserCollectionInfo, None]: - await self._auto_check() + await self._require_check() now_page = start_page while True: @@ -344,7 +341,7 @@ async def iter_managed_collections( async def iter_notebooks( self, *, start_page: int = 1, page_size: int = 10 ) -> AsyncGenerator[UserNotebookInfo, None]: - await self._auto_check() + await self._require_check() now_page = start_page while True: @@ -382,7 +379,7 @@ async def iter_articles( ] = "PUBLISHED_AT", page_size: int = 10, ) -> AsyncGenerator[UserArticleInfo, None]: - await self._auto_check() + await self._require_check() now_page = start_page while True: