Skip to content

Commit 674c02a

Browse files
committed
v2.6.0: 实现API域名可自动更新; 压缩插件支持zip加密、7z加密; 插件配置支持dir_rule(增强版filename_rule)
1 parent 989aa66 commit 674c02a

3 files changed

Lines changed: 53 additions & 4 deletions

File tree

src/jmcomic/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# 被依赖方 <--- 使用方
33
# config <--- entity <--- toolkit <--- client <--- option <--- downloader
44

5-
__version__ = '2.5.40'
5+
__version__ = '2.6.0'
66

77
from .api import *
88
from .jm_plugin import *

src/jmcomic/jm_client_impl.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1005,10 +1005,51 @@ def raise_if_resp_should_retry(self, resp):
10051005
ExceptionTool.raises_resp(f'响应无数据!request_url=[{url}]', resp)
10061006

10071007
def after_init(self):
1008+
# 自动更新禁漫API域名
1009+
if JmModuleConfig.FLAG_API_CLIENT_AUTO_UPDATE_DOMAIN:
1010+
self.update_api_domain()
1011+
10081012
# 保证拥有cookies,因为移动端要求必须携带cookies,否则会直接跳转同一本子【禁漫娘】
10091013
if JmModuleConfig.FLAG_API_CLIENT_REQUIRE_COOKIES:
10101014
self.ensure_have_cookies()
10111015

1016+
client_update_domain_lock = Lock()
1017+
1018+
def update_api_domain(self):
1019+
if True is JmModuleConfig.FLAG_API_CLIENT_AUTO_UPDATE_DOMAIN_DONE:
1020+
return
1021+
1022+
with self.client_update_domain_lock:
1023+
if True is JmModuleConfig.FLAG_API_CLIENT_AUTO_UPDATE_DOMAIN_DONE:
1024+
return
1025+
try:
1026+
# 获取域名列表
1027+
resp = self.postman.get(JmModuleConfig.API_URL_DOMAIN_SERVER)
1028+
res_json = JmCryptoTool.decode_resp_data(resp.text, '', JmMagicConstants.API_DOMAIN_SERVER_SECRET)
1029+
res_data = json_loads(res_json)
1030+
1031+
# 检查返回值
1032+
if not res_data.get('Server', None):
1033+
jm_log('api.update_domain.empty',
1034+
f'获取禁漫最新API域名失败, 返回值: {res_json}')
1035+
return
1036+
new_server_list: list[str] = res_data['Server']
1037+
old_server_list = JmModuleConfig.DOMAIN_API_LIST
1038+
jm_log('api.update_domain.success',
1039+
f'获取到最新的API域名,替换jmcomic内置域名:(new){new_server_list} ---→ (old){old_server_list}'
1040+
)
1041+
# 更新域名
1042+
if self.domain_list is old_server_list:
1043+
self.domain_list = new_server_list
1044+
JmModuleConfig.DOMAIN_API_LIST = new_server_list
1045+
except Exception as e:
1046+
jm_log('api.update_domain.error',
1047+
f'自动更新API域名失败,仍使用jmcomic内置域名。'
1048+
f'可通过代码[JmModuleConfig.FLAG_API_CLIENT_AUTO_UPDATE_DOMAIN=False]关闭自动更新API域名. 异常: {e}'
1049+
)
1050+
finally:
1051+
JmModuleConfig.FLAG_API_CLIENT_AUTO_UPDATE_DOMAIN_DONE = True
1052+
10121053
client_init_cookies_lock = Lock()
10131054

10141055
def ensure_have_cookies(self):

src/jmcomic/jm_config.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ class JmMagicConstants:
7676
APP_TOKEN_SECRET = '18comicAPP'
7777
APP_TOKEN_SECRET_2 = '18comicAPPContent'
7878
APP_DATA_SECRET = '185Hcomic3PAPP7R'
79-
APP_VERSION = '1.7.9'
79+
API_DOMAIN_SERVER_SECRET = 'diosfjckwpqpdfjkvnqQjsik'
80+
APP_VERSION = '1.8.0'
8081

8182

8283
# 模块级别共用配置
@@ -128,11 +129,15 @@ class JmModuleConfig:
128129
# 移动端API域名
129130
DOMAIN_API_LIST = shuffled('''
130131
www.cdnmhwscc.vip
131-
www.cdnblackmyth.club
132-
www.cdnmhws.cc
132+
www.cdnplaystation6.club
133+
www.cdnplaystation6.org
133134
www.cdnuc.vip
135+
www.cdn-mspjmapiproxy.xyz
134136
''')
135137

138+
# 获取最新移动端API域名的地址
139+
API_URL_DOMAIN_SERVER = f'{PROT}jmappc01-1308024008.cos.ap-guangzhou.myqcloud.com/server-2024.txt'
140+
136141
APP_HEADERS_TEMPLATE = {
137142
'Accept-Encoding': 'gzip, deflate',
138143
'user-agent': 'Mozilla/5.0 (Linux; Android 9; V1938CT Build/PQ3A.190705.11211812; wv) AppleWebKit/537.36 (KHTML, '
@@ -200,6 +205,9 @@ class JmModuleConfig:
200205
FLAG_USE_FIX_TIMESTAMP = True
201206
# 移动端Client初始化cookies
202207
FLAG_API_CLIENT_REQUIRE_COOKIES = True
208+
# 自动更新禁漫API域名
209+
FLAG_API_CLIENT_AUTO_UPDATE_DOMAIN = True
210+
FLAG_API_CLIENT_AUTO_UPDATE_DOMAIN_DONE = None
203211
# log开关标记
204212
FLAG_ENABLE_JM_LOG = True
205213
# log时解码url

0 commit comments

Comments
 (0)