Skip to content

Commit affadd9

Browse files
authored
v2.1.18: 修复对模块域名全局配置的支持 (#108)
1 parent 4d9b817 commit affadd9

File tree

5 files changed

+41
-39
lines changed

5 files changed

+41
-39
lines changed

src/jmcomic/__init__.py

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

5-
__version__ = '2.1.17'
5+
__version__ = '2.1.18'
66

77
from .api import *

src/jmcomic/jm_config.py

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,38 @@ def domain(cls, postman=None):
146146
from .jm_toolkit import JmcomicText
147147
return JmcomicText.parse_to_jm_domain(cls.get_jmcomic_url(postman))
148148

149+
@classmethod
150+
def get_jmcomic_url(cls, postman=None):
151+
"""
152+
访问禁漫的永久网域,从而得到一个可用的禁漫网址
153+
@return: https://jm-comic2.cc
154+
"""
155+
postman = postman or cls.new_postman(session=True)
156+
157+
url = postman.with_redirect_catching().get(cls.JM_REDIRECT_URL)
158+
cls.jm_debug('获取禁漫URL', f'[{cls.JM_REDIRECT_URL}] → [{url}]')
159+
return url
160+
161+
@classmethod
162+
@field_cache("DOMAIN_LIST")
163+
def get_jmcomic_domain_all(cls, postman=None):
164+
"""
165+
访问禁漫发布页,得到所有禁漫的域名
166+
167+
@return: ['18comic.vip', ..., 'jm365.xyz/ZNPJam'], 最后一个是【APP軟件下載】
168+
"""
169+
postman = postman or cls.new_postman(session=True)
170+
171+
resp = postman.get(cls.JM_PUB_URL)
172+
if resp.status_code != 200:
173+
raise JmModuleConfig.exception(resp.text)
174+
175+
from .jm_toolkit import JmcomicText
176+
domain_list = JmcomicText.analyse_jm_pub_html(resp.text)
177+
178+
cls.jm_debug('获取禁漫全部域名', f'[{resp.url}] → {domain_list}')
179+
return domain_list
180+
149181
@classmethod
150182
def headers(cls, domain='18comic.vip'):
151183
return {
@@ -182,38 +214,6 @@ def new_postman(cls, session=False, **kwargs):
182214
kwargs.setdefault('headers', JmModuleConfig.headers())
183215
return cls.postman_constructor(session, **kwargs)
184216

185-
@classmethod
186-
def get_jmcomic_url(cls, postman=None):
187-
"""
188-
访问禁漫的永久网域,从而得到一个可用的禁漫网址
189-
@return: https://jm-comic2.cc
190-
"""
191-
postman = postman or cls.new_postman(session=True)
192-
193-
url = postman.with_redirect_catching().get(cls.JM_REDIRECT_URL)
194-
cls.jm_debug('获取禁漫URL', f'[{cls.JM_REDIRECT_URL}] → [{url}]')
195-
return url
196-
197-
@classmethod
198-
@field_cache("DOMAIN_LIST")
199-
def get_jmcomic_domain_all(cls, postman=None):
200-
"""
201-
访问禁漫发布页,得到所有禁漫的域名
202-
203-
@return: ['18comic.vip', ..., 'jm365.xyz/ZNPJam'], 最后一个是【APP軟件下載】
204-
"""
205-
postman = postman or cls.new_postman(session=True)
206-
207-
resp = postman.get(cls.JM_PUB_URL)
208-
if resp.status_code != 200:
209-
raise JmModuleConfig.exception(resp.text)
210-
211-
from .jm_toolkit import JmcomicText
212-
domain_list = JmcomicText.analyse_jm_pub_html(resp.text)
213-
214-
cls.jm_debug('获取禁漫全部域名', f'[{resp.url}] → {domain_list}')
215-
return domain_list
216-
217217
album_comment_headers = {
218218
'authority': '18comic.vip',
219219
'accept': 'application/json, text/javascript, */*; q=0.01',

src/jmcomic/jm_option.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ def new_jm_client(self, **kwargs) -> JmcomicClient:
249249
# domain_list
250250
domain_list = self.client.domain
251251
if len(domain_list) == 0:
252-
domain_list = [JmcomicText.parse_to_jm_domain(JmModuleConfig.get_jmcomic_url(postman))]
252+
domain_list = [JmModuleConfig.domain()]
253253

254254
# client
255255
client = JmModuleConfig.client_impl_class(self.client.impl)(

src/jmcomic/jm_toolkit.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,8 @@ def format_album_url(cls, album_id, domain=None):
162162
return cls.format_url(f'/album/{cls.parse_to_album_id(album_id)}', domain)
163163

164164
@classmethod
165-
def format_url(cls, path, domain=None):
166-
if domain is None:
167-
domain = JmModuleConfig.domain()
168-
165+
def format_url(cls, path, domain):
166+
assert isinstance(domain, str) and len(domain) != 0
169167
return f'{JmModuleConfig.PROT}{domain}{path}'
170168

171169

usage/getting_started.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@
6464
url_ls = jmcomic.JmModuleConfig.get_jmcomic_url_all()
6565
print(url_ls)
6666

67-
# 方式2(可能会报错,需要你自己配置梯子)
67+
# 方式2: 访问禁漫的永久网域
6868
url = jmcomic.JmModuleConfig.get_jmcomic_url()
6969
print(url)
70+
71+
# 配置jmcomic模块的默认域名
72+
# 默认域名仅在option没有配置domain时被使用
73+
jmcomic.JmModuleConfig.DOMAIN = '18comic.vip'

0 commit comments

Comments
 (0)