Skip to content

Commit 418a503

Browse files
committed
refactor: 精简以及greasyfork_id为空时使用GitHub链接,相关脚本按id升序排列
1 parent 4b3e0df commit 418a503

3 files changed

Lines changed: 62 additions & 114 deletions

File tree

utils/merge_change_history.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ def generate_html_content(nation, js_path, greasyfork_id, script_directory, read
5656
readme_html = ''
5757
if os.path.isfile(change_log_path):
5858
# 对于5分钟内未改动的log文件不操作
59-
if is_file_updated_more_than(change_log_path, 5):
60-
continue
59+
# if is_file_updated_more_than(change_log_path, 5):
60+
# continue
6161
readme_html = f'<details><summary>更新记录</summary><div align="right"><a href="https://github.com/ChinaGodMan/UserScripts/tree/main/{script_directory}/CHANGELOG.md"><img src="https://img.shields.io/badge/-GitHub-3A3A3A?style=flat&logo=GitHub&logoColor=white"></a></div>{md_to_html(change_log_path)}</details>'
6262
html_content = generate_html_content("zh-CN", full_path, greasyfork_id, script_directory, readme_html)
6363
# 检查 script_directory 是否存在

utils/update_related_all_scripts.py

Lines changed: 12 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,22 @@
1-
from writer import process_file_plus
2-
from content_snippet import get_file_description
3-
from searcher import search_in_file
4-
from helper import get_md_files
1+
from helper import read_json
2+
from update_related_scripts import process_script
53
import re
6-
import json
74
import os
85

96

10-
# 读取JSON文件
11-
def read_json(file_path):
12-
with open(file_path, 'r', encoding='utf-8') as file:
13-
return json.load(file)
14-
15-
16-
# 生成描述信息,仅针对当前脚本的relatedscripts
17-
def generate_description(current_script, all_scripts, code):
18-
descriptions = []
19-
# 获取当前脚本的 relatedscripts 值作为分类名
20-
relatedscripts_category = current_script
21-
# 如果没有 relatedscripts,返回空描述
22-
if not relatedscripts_category:
23-
return "无相关脚本。\n\n"
24-
# 添加分类名到描述中
25-
descriptions.append(f'<img height="6px" width="100%" src="https://media.chatgptautorefresh.com/images/separators/gradient-aqua.png?latest">\n\n> ### 🔍你可能在找{relatedscripts_category}\n>')
26-
# 遍历所有脚本,查找具有相同 relatedscripts 值的脚本
27-
for script in all_scripts:
28-
script_relatedscripts = script.get('group')
29-
# 如果脚本的 relatedscripts 与当前脚本相同,就将其添加到描述中
30-
if script_relatedscripts == relatedscripts_category:
31-
greasyfork_id = script.get('greasyfork_id', '未知ID')
32-
full_path = script.get("directory") + "/" + script.get("js_name")
33-
results = search_in_file(full_path, code)
34-
name = results.name_matches[0]
35-
description = results.description_matches[0]
36-
link = f"[**{name}**](https://greasyfork.org/scripts/{greasyfork_id})"
37-
descriptions.append(f"> - {link}: {description}")
38-
39-
return "\n".join(descriptions) + "\n"
40-
41-
427
# 获取readme文件中相关脚本分组
438
def check_related_readme(file_path, related_scripts_map):
449
not_in_scriptspath = []
4510
try:
4611
with open(file_path, 'r', encoding='utf-8') as file:
4712
content = file.read()
48-
# 匹配 <!--AUTO_{key}_PLEASE_DONT_DELETE_IT--> 标签
13+
# 匹配 <!--RELATED- -END-->标签
4914
matches = re.findall(r'<!--RELATED-([a-zA-Z0-9\-一-龥]+)-END-->', content)
5015
if matches:
51-
for key in matches:
52-
# 分组必须包含中文字符串,老代码了,早知道就换个格式了,妈的.
53-
if re.search(r'[\u4e00-\u9fa5]', key):
54-
if key not in related_scripts_map:
55-
not_in_scriptspath.append(key)
16+
for group in matches:
17+
if re.search(r'[\u4e00-\u9fa5]', group):
18+
if group not in related_scripts_map:
19+
not_in_scriptspath.append(group)
5620
except Exception as e:
5721
print(f"读取文件 {file_path} 时出错: {e}")
5822
return not_in_scriptspath
@@ -77,32 +41,10 @@ def delete_related_readme(directory_path, not_in_map):
7741
print(f" {file_path} 中的失效分组[\033[31m{key}\033[0m]已被删除。")
7842
is_modified = True
7943
if is_modified:
80-
with open(file_path, 'w', encoding='utf-8') as f:
44+
with open(file_path, 'w', encoding='utf-8', newline='\n') as f:
8145
f.write(content)
8246

8347

84-
def process_script(script, scripts, start_tag, end_tag, key):
85-
script_directory = script.get('directory', '')
86-
cnfile_path = os.path.join(script_directory, "README.md")
87-
88-
descriptions = generate_description(key, scripts, "zh-CN")
89-
90-
olddescriptions = get_file_description(cnfile_path, start_tag, end_tag)
91-
if olddescriptions is None:
92-
olddescriptions = "ggg"
93-
if olddescriptions + "\n" == descriptions:
94-
return
95-
else:
96-
print(f"----[\033[94m{script.get('name', '')}\033[0m--\033[95m{key}\033[0m]\033[92m 内容变化,执行替换\033[0m")
97-
md_files = get_md_files(script_directory)
98-
for file_name in md_files:
99-
file_path = os.path.join(script_directory, file_name)
100-
match = re.match(r'README_([a-zA-Z\-]+)\.md', file_name)
101-
lang_code = match.group(1) if match else "zh-CN"
102-
descriptions = generate_description(key, scripts, lang_code)
103-
process_file_plus(file_path, descriptions, start_tag, end_tag, "<!--FOOTER-->")
104-
105-
10648
def main():
10749
json_path = 'docs/ScriptsPath.json'
10850
data = read_json(json_path)
@@ -122,10 +64,10 @@ def main():
12264
# 如果有不存在的`相关脚本`,就删除不存在的`相关脚本`分组
12365
if len(not_in_map) > 0:
12466
delete_related_readme(script.get('directory', ''), not_in_map)
125-
for key, value in related_scripts_map.items():
126-
start_tag = f"<!--RELATED-{key}-->"
127-
end_tag = f"<!--RELATED-{key}-END-->"
128-
process_script(script, scripts, start_tag, end_tag, key)
67+
for group, value in related_scripts_map.items():
68+
start_tag = f"<!--RELATED-{group}-->"
69+
end_tag = f"<!--RELATED-{group}-END-->"
70+
process_script(script, scripts, start_tag, end_tag, group)
12971

13072

13173
if __name__ == "__main__":

utils/update_related_scripts.py

Lines changed: 48 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,71 @@
1-
from writer import process_file
1+
import re
2+
import os
3+
from writer import process_file_plus
24
from helper import get_md_files
5+
from helper import read_json
36
from content_snippet import get_file_description
47
from searcher import search_in_file
5-
import re
6-
import json
7-
import os
8-
98

10-
# 读取JSON文件
11-
def read_json(file_path):
12-
with open(file_path, 'r', encoding='utf-8') as file:
13-
return json.load(file)
149

15-
16-
# 生成描述信息,仅针对当前脚本的relatedscripts
17-
def generate_description(current_script, all_scripts, code):
10+
# 生成描述信息,仅针对当前脚本的gro
11+
def generate_description(current_group, all_scripts, lang):
1812
descriptions = []
19-
# 获取当前脚本的 relatedscripts 值作为分类名
20-
relatedscripts_category = current_script.get('group')
21-
# 如果没有 relatedscripts,返回空描述
22-
if not relatedscripts_category:
13+
# 如果没有 current_group,返回空描述
14+
if not current_group:
2315
return "无相关脚本。\n\n"
2416
# 添加分类名到描述中
25-
descriptions.append(f'<img height="6px" width="100%" src="https://media.chatgptautorefresh.com/images/separators/gradient-aqua.png?latest">\n\n> ### 🔍你可能在找{relatedscripts_category}\n>')
26-
# 遍历所有脚本,查找具有相同 relatedscripts 值的脚本
27-
for script in all_scripts:
28-
script_relatedscripts = script.get('group')
17+
descriptions.append(f'<img height="6px" width="100%" src="https://media.chatgptautorefresh.com/images/separators/gradient-aqua.png?latest">\n\n> ### 🔍你可能在找{current_group}\n>')
18+
# id升序
19+
sorted_scripts = sorted(all_scripts, key=lambda x: x['greasyfork_id'] if x.get('greasyfork_id') is not None else 0)
20+
# 遍历所有脚本,查找具有相同 group 值的脚本
21+
for script in sorted_scripts:
22+
script_group = script.get('group')
2923
# 如果脚本的 relatedscripts 与当前脚本相同,就将其添加到描述中
30-
if script_relatedscripts == relatedscripts_category:
31-
greasyfork_id = script.get('greasyfork_id', '未知ID')
24+
if script_group == current_group:
25+
greasyfork_id = script.get('greasyfork_id')
3226
full_path = script.get('directory') + "/" + script.get('js_name')
33-
results = search_in_file(full_path, code)
27+
results = search_in_file(full_path, lang)
3428
name = results.name_matches[0]
3529
description = results.description_matches[0]
36-
link = f"[**{name}**](https://greasyfork.org/scripts/{greasyfork_id})"
37-
descriptions.append(f"> - {link}: {description}")
30+
# 导入失败的脚本没有id直接使用github
31+
if greasyfork_id in (None, 0):
32+
item = f"[**{name}**](https://github.com/ChinaGodMan/UserScripts/tree/main/{script.get('directory')}#readme)"
33+
else:
34+
item = f"[**{name}**](https://greasyfork.org/scripts/{greasyfork_id})"
35+
36+
descriptions.append(f"> - {item}: {description}")
3837
return "\n".join(descriptions) + "\n"
3938

4039

40+
def process_script(script, scripts, start_tag, end_tag, group):
41+
# group 可以从script.get('group')获取,这里直接使用直接传递的
42+
script_directory = script.get('directory', '')
43+
cnfile_path = os.path.join(script_directory, "README.md")
44+
descriptions = generate_description(group, scripts, "zh-CN")
45+
olddescriptions = get_file_description(cnfile_path, start_tag, end_tag)
46+
if olddescriptions is None:
47+
olddescriptions = "ggg"
48+
if olddescriptions + "\n" == descriptions:
49+
return
50+
else:
51+
print(f"----[\033[94m{script.get('name', '')}\033[0m--\033[95m{group}\033[0m]\033[92m 内容变化,执行替换\033[0m")
52+
md_files = get_md_files(script_directory)
53+
for file_name in md_files:
54+
file_path = os.path.join(script_directory, file_name)
55+
match = re.match(r'README_([a-zA-Z\-]+)\.md', file_name)
56+
lang_code = match.group(1) if match else "zh-CN"
57+
descriptions = generate_description(group, scripts, lang_code)
58+
process_file_plus(file_path, descriptions, start_tag, end_tag, "<!--FOOTER-->")
59+
60+
4161
def main():
4262
json_path = 'docs/ScriptsPath.json'
4363
data = read_json(json_path)
4464
scripts = data.get('scripts', [])
65+
start_tag = "<!--RELATED-->"
66+
end_tag = "<!--RELATED-END-->"
4567
for script in scripts:
46-
script_directory = script.get('directory', '')
47-
start_tag = "<!--RELATED-->"
48-
end_tag = "<!--RELATED-END-->"
49-
cnfile_path = os.path.join(script_directory, "README.md")
50-
descriptions = generate_description(script, scripts, "zh-CN")
51-
olddescriptions = get_file_description(cnfile_path, start_tag, end_tag)
52-
if olddescriptions + "\n" == descriptions: # 换行符添加上,就这样了能用就行
53-
continue
54-
else:
55-
print(f"----\033[94m[{script.get('name', '')}]\033[0m\033[92m 内容变化,执行替换\033[0m")
56-
md_files = get_md_files(script_directory)
57-
for file_name in md_files:
58-
file_path = os.path.join(script_directory, file_name)
59-
match = re.match(r'README_([a-zA-Z\-]+)\.md', file_name)
60-
lang_code = match.group(1) if match else "zh-CN"
61-
descriptions = generate_description(script, scripts, lang_code)
62-
process_file(file_path, descriptions, start_tag, end_tag, "head")
68+
process_script(script, scripts, start_tag, end_tag, script.get('group'))
6369

6470

6571
if __name__ == "__main__":

0 commit comments

Comments
 (0)