Skip to content

Commit

Permalink
Merge pull request #1059 from TachibanaKimika/master
Browse files Browse the repository at this point in the history
添加自定义正则 & 番号大写转换配置
  • Loading branch information
mvdctop committed Aug 6, 2023
2 parents 46c0cd3 + 65e0ff6 commit 40482ce
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 0 deletions.
5 changes: 5 additions & 0 deletions config.ini
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,11 @@ naming_rule = number+'-'+title
max_title_len = 50
; 刮削后图片是否命名为番号
image_naming_with_number = 0
; 番号大写 1 | 0, 仅在写入数据时会进行大写转换, 搜索刮削流程则不影响
number_uppercase = 0
; 自定义正则表达式, 多个正则使用空格隔开, 第一个分组为提取的番号, 若自定义正则未能匹配到番号则使用默认规则
; example: ([A-Za-z]{2,4}\-\d{3}) ([A-Za-z]{2,4}00\d{3})
number_regexs =

[update]
update_check = 1
Expand Down
14 changes: 14 additions & 0 deletions config.py
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,18 @@ def image_naming_with_number(self) -> bool:
except:
return False

def number_uppercase(self) -> bool:
try:
return self.conf.getboolean("Name_Rule", "number_uppercase")
except:
return False

def number_regexs(self) -> str:
try:
return self.conf.get("Name_Rule", "number_regexs")
except:
return ""

def update_check(self) -> bool:
try:
return self.conf.getboolean("update", "update_check")
Expand Down Expand Up @@ -473,6 +485,8 @@ def _default_config() -> configparser.ConfigParser:
conf.set(sec4, "naming_rule", "number + '-' + title")
conf.set(sec4, "max_title_len", "50")
conf.set(sec4, "image_naming_with_number", "0")
conf.set(sec4, "number_uppercase", "0")
conf.set(sec4, "number_regexs", "")

sec5 = "update"
conf.add_section(sec5)
Expand Down
9 changes: 9 additions & 0 deletions number_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,15 @@ def get_number(debug: bool, file_path: str) -> str:
filepath = os.path.basename(file_path)
# debug True 和 False 两块代码块合并,原因是此模块及函数只涉及字符串计算,没有IO操作,debug on时输出导致异常信息即可
try:
# 先对自定义正则进行匹配
if config.getInstance().number_regexs().split().__len__() > 0:
for regex in config.getInstance().number_regexs().split():
try:
if re.search(regex, filepath):
return re.search(regex, filepath).group()
except Exception as e:
print(f'[-]custom regex exception: {e} [{regex}]')

file_number = get_number_by_dict(filepath)
if file_number:
return file_number
Expand Down
4 changes: 4 additions & 0 deletions scraper.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,10 @@ def get_data_from_json(
cover_small = tmpArr[0].strip('\"').strip('\'')
# ====================处理异常字符 END================== #\/:*?"<>|

# 处理大写
if conf.number_uppercase():
json_data['number'] = number.upper()

# 返回处理后的json_data
json_data['title'] = title
json_data['original_title'] = title
Expand Down

0 comments on commit 40482ce

Please sign in to comment.