From 4248b8fa4ef7bfefa5f8a989331e9b44192fc40c Mon Sep 17 00:00:00 2001 From: jxxghp Date: Wed, 14 Feb 2024 21:10:08 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E5=A4=9A=E5=9F=9F=E5=90=8D?= =?UTF-8?q?=E7=AB=99=E7=82=B9CookieCloud=E5=90=8C=E6=AD=A5=E9=87=8D?= =?UTF-8?q?=E5=A4=8DBug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/endpoints/site.py | 4 ++-- app/chain/site.py | 26 ++++++++++++++++++++------ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/app/api/endpoints/site.py b/app/api/endpoints/site.py index e5747c7b..02dba326 100644 --- a/app/api/endpoints/site.py +++ b/app/api/endpoints/site.py @@ -111,8 +111,8 @@ def cookie_cloud_sync(background_tasks: BackgroundTasks, @router.get("/reset", summary="重置站点", response_model=schemas.Response) -def cookie_cloud_sync(db: Session = Depends(get_db), - _: schemas.TokenPayload = Depends(verify_token)) -> Any: +def reset(db: Session = Depends(get_db), + _: schemas.TokenPayload = Depends(verify_token)) -> Any: """ 清空所有站点数据并重新同步CookieCloud站点信息 """ diff --git a/app/chain/site.py b/app/chain/site.py index 5813debb..ef3afc60 100644 --- a/app/chain/site.py +++ b/app/chain/site.py @@ -139,6 +139,18 @@ class SiteChain(ChainBase): """ 通过CookieCloud同步站点Cookie """ + + def __indexer_domain(inx: dict, sub_domain: str) -> str: + """ + 根据主域名获取索引器地址 + """ + if StringUtils.get_url_domain(inx.get("domain")) == sub_domain: + return inx.get("domain") + for ext_d in inx.get("ext_domains"): + if StringUtils.get_url_domain(ext_d) == sub_domain: + return ext_d + return sub_domain + logger.info("开始同步CookieCloud站点 ...") cookies, msg = self.cookiecloud.download() if not cookies: @@ -151,11 +163,12 @@ class SiteChain(ChainBase): _add_count = 0 _fail_count = 0 for domain, cookie in cookies.items(): - # 获取站点信息 + # 索引器信息 indexer = self.siteshelper.get_indexer(domain) + # 数据库的站点信息 site_info = self.siteoper.get_by_domain(domain) if site_info: - # 检查站点连通性 + # 站点已存在,检查站点连通性 status, msg = self.test(domain) # 更新站点Cookie if status: @@ -181,9 +194,10 @@ class SiteChain(ChainBase): _update_count += 1 elif indexer: # 新增站点 + domain_url = __indexer_domain(inx=indexer, sub_domain=domain) res = RequestUtils(cookies=cookie, ua=settings.USER_AGENT - ).get_res(url=indexer.get("domain")) + ).get_res(url=domain_url) if res and res.status_code in [200, 500, 403]: if not indexer.get("public") and not SiteUtils.is_logged_in(res.text): _fail_count += 1 @@ -203,9 +217,9 @@ class SiteChain(ChainBase): continue # 获取rss地址 rss_url = None - if not indexer.get("public") and indexer.get("domain"): + if not indexer.get("public") and domain_url: # 自动生成rss地址 - rss_url, errmsg = self.rsshelper.get_rss_link(url=indexer.get("domain"), + rss_url, errmsg = self.rsshelper.get_rss_link(url=domain_url, cookie=cookie, ua=settings.USER_AGENT) if errmsg: @@ -213,7 +227,7 @@ class SiteChain(ChainBase): # 插入数据库 logger.info(f"新增站点 {indexer.get('name')} ...") self.siteoper.add(name=indexer.get("name"), - url=indexer.get("domain"), + url=domain_url, domain=domain, cookie=cookie, rss=rss_url,