@@ -765,55 +765,17 @@ def fetch_photo_additional_field(self, photo: JmPhotoDetail, fetch_album: bool,
765765
766766 def setting (self ) -> JmApiResp :
767767 """
768- 禁漫app的setting请求,返回如下内容(resp.res_data)
769- {
770- "logo_path": "https://cdn-msp.jmapiproxy1.monster/media/logo/new_logo.png",
771- "main_web_host": "18-comic.work",
772- "img_host": "https://cdn-msp.jmapiproxy1.monster",
773- "base_url": "https://www.jmapinode.biz",
774- "is_cn": 0,
775- "cn_base_url": "https://www.jmapinode.biz",
776- "version": "1.6.0",
777- "test_version": "1.6.1",
778- "store_link": "https://play.google.com/store/apps/details?id=com.jiaohua_browser",
779- "ios_version": "1.6.0",
780- "ios_test_version": "1.6.1",
781- "ios_store_link": "https://18comic.vip/stray/",
782- "ad_cache_version": 1698140798,
783- "bundle_url": "https://18-comic.work/static/apk/patches1.6.0.zip",
784- "is_hot_update": true,
785- "api_banner_path": "https://cdn-msp.jmapiproxy1.monster/media/logo/channel_log.png?v=",
786- "version_info": "\n APP & IOS更新\n V1.6.0\n #禁漫 APK 更新拉!!\n 更新調整以下項目\n 1. 系統優化\n \n V1.5.9\n 1. 跳錯誤新增 重試 網頁 按鈕\n 2. 圖片讀取優化\n 3.
787- 線路調整優化\n \n 無法順利更新或是系統題是有風險請使用下方\n 下載點2\n 有問題可以到DC群反饋\n https://discord.gg/V74p7HM\n ",
788- "app_shunts": [
789- {
790- "title": "圖源1",
791- "key": 1
792- },
793- {
794- "title": "圖源2",
795- "key": 2
796- },
797- {
798- "title": "圖源3",
799- "key": 3
800- },
801- {
802- "title": "圖源4",
803- "key": 4
804- }
805- ],
806- "download_url": "https://18-comic.work/static/apk/1.6.0.apk",
807- "app_landing_page": "https://jm365.work/pXYbfA",
808- "float_ad": true
809- }
768+ 禁漫app的setting请求
810769 """
811770 resp = self .req_api ('/setting' )
812771
813772 # 检查禁漫最新的版本号
814- setting_ver = str (resp .model_data .version )
773+ setting_ver = str (resp .model_data .jm3_version )
815774 # 禁漫接口的版本 > jmcomic库内置版本
816- if setting_ver > JmMagicConstants .APP_VERSION and JmModuleConfig .FLAG_USE_VERSION_NEWER_IF_BEHIND :
775+ if (
776+ JmModuleConfig .FLAG_USE_VERSION_NEWER_IF_BEHIND
777+ and JmcomicText .compare_versions (setting_ver , JmMagicConstants .APP_VERSION ) == 1
778+ ):
817779 jm_log ('api.setting' , f'change APP_VERSION from [{ JmMagicConstants .APP_VERSION } ] to [{ setting_ver } ]' )
818780 JmMagicConstants .APP_VERSION = setting_ver
819781
@@ -959,10 +921,7 @@ def require_resp_success(cls, resp: JmApiResp, url: Optional[str] = None):
959921
960922 # 1. 检查是否 album_missing
961923 # json: {'code': 200, 'data': []}
962- data = resp .model ().data
963- if isinstance (data , list ) and len (data ) == 0 :
964- ExceptionTool .raise_missing (resp , JmcomicText .parse_to_jm_id (url ))
965-
924+ # 最新api已不存在这种情况,无需检查
966925 # 2. 是否是特殊的内容
967926 # 暂无
968927
@@ -1007,7 +966,8 @@ def raise_if_resp_should_retry(self, resp, is_image):
1007966 def after_init (self ):
1008967 # 自动更新禁漫API域名
1009968 if JmModuleConfig .FLAG_API_CLIENT_AUTO_UPDATE_DOMAIN :
1010- self .update_api_domain ()
969+ new_server_list = self .fetch_latest_api_domain_for_module ()
970+ self .update_old_api_domain (new_server_list )
1011971
1012972 # 保证拥有cookies,因为移动端要求必须携带cookies,否则会直接跳转同一本子【禁漫娘】
1013973 if JmModuleConfig .FLAG_API_CLIENT_REQUIRE_COOKIES :
@@ -1032,13 +992,19 @@ def req_api_domain_server(self, url):
1032992 else :
1033993 return res_data ['Server' ]
1034994
1035- def update_api_domain (self ):
1036- if True is JmModuleConfig .FLAG_API_CLIENT_AUTO_UPDATE_DOMAIN_DONE :
1037- return
995+ def update_old_api_domain (self , new_server_list : List [str ]):
996+ if new_server_list and sorted (self .domain_list ) == sorted (JmModuleConfig .DOMAIN_API_LIST ):
997+ self .domain_list = new_server_list
998+
999+ def fetch_latest_api_domain_for_module (self ):
1000+ if JmModuleConfig .DOMAIN_API_UPDATED_LIST is not None :
1001+ return JmModuleConfig .DOMAIN_API_UPDATED_LIST
10381002
10391003 with self .client_update_domain_lock :
1040- if True is JmModuleConfig .FLAG_API_CLIENT_AUTO_UPDATE_DOMAIN_DONE :
1041- return
1004+ # double check
1005+ if JmModuleConfig .DOMAIN_API_UPDATED_LIST is not None :
1006+ return JmModuleConfig .DOMAIN_API_UPDATED_LIST
1007+
10421008 # 遍历多个域名服务器
10431009 for url in JmModuleConfig .API_URL_DOMAIN_SERVER_LIST :
10441010 try :
@@ -1050,18 +1016,20 @@ def update_api_domain(self):
10501016 jm_log ('api.update_domain.success' ,
10511017 f'获取到最新的API域名,替换jmcomic内置域名:(new){ new_server_list } ---→ (old){ old_server_list } '
10521018 )
1053- # 更新域名
1054- if sorted (self .domain_list ) == sorted (old_server_list ):
1055- self .domain_list = new_server_list
1056- JmModuleConfig .DOMAIN_API_LIST = new_server_list
1057- break
1019+ JmModuleConfig .DOMAIN_API_UPDATED_LIST = new_server_list
1020+ return new_server_list
10581021 except Exception as e :
10591022 jm_log ('api.update_domain.error' ,
1060- f'通过[{ url } ]自动更新API域名失败,仍使用jmcomic内置域名 。'
1023+ f'通过[{ url } ]自动更新API域名失败,尝试下一个地址 。'
10611024 f'可通过代码[JmModuleConfig.FLAG_API_CLIENT_AUTO_UPDATE_DOMAIN=False]关闭自动更新API域名. 异常: { e } '
10621025 )
1063- # set done finally
1064- JmModuleConfig .FLAG_API_CLIENT_AUTO_UPDATE_DOMAIN_DONE = True
1026+ continue
1027+
1028+ # 走到这里,说明没有获取到域名更新
1029+ # 为了本方法不被重复执行,把新域名字段修改为空列表
1030+ # 空列表相当于一个done标识
1031+ JmModuleConfig .DOMAIN_API_UPDATED_LIST = []
1032+ return JmModuleConfig .DOMAIN_API_UPDATED_LIST
10651033
10661034 client_init_cookies_lock = Lock ()
10671035
0 commit comments