-
Notifications
You must be signed in to change notification settings - Fork 0
/
script-statistics-readme.py
166 lines (112 loc) · 3.42 KB
/
script-statistics-readme.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
import os
import re
# 算法分类目录
folder_path = "src/hot-100"
# 题目总数
total = 100
# 输出MD文件名称
output_path = './README.md'
# 文件标题
md_header = 'Algorithm'
# 文件标题描述
md_header_description = """
## 构建脚本
`Bojue` 前端算法笔记
### 1. 根据题目自动创建题目(手动更新)
场景:完成题目,根据题目名称创建对应的题目笔记
```shell
# mac上执行
# window要自测
python3 script-create-readme.py
```
### 2. 更新最新的数据(自动更新)
场景:习题题解更新,可以执行全部更新算法笔记,获取全部的最新笔记内容,题解只获取最新通过的题目
1. 配置config.json,统计leetcode接口需要
```shell
{
"csrftoken": "",
"Cookie": ""
}
```
2. 执行统计脚本
```shell
# mac上执行
# window要自测
python3 script-update-latest.py
```
### 3. 更新统计README
场景:更新完毕题目笔记,更新最新的统计数据
```shell
# mac上执行
# window要自测
python3 script-statistics-readme.py
```
## 题目统计
"""
files = os.listdir(folder_path)
completion_status_count = 0
pattern = r"```ts\n([\s\S]+?)\n```"
def get_md_first_header(content):
pattern = r'^#\s+(.*)$'
match = re.search(pattern, content, re.MULTILINE)
if match:
return match.group(1)
else:
return None
def get_ts_code_bool(content):
matches = re.findall(pattern, content)
if matches:
return True
else:
return False
# 获取文档动态内容
def get_md_dy_content_by_path(folder_path, files):
# MD文档动态内如生成
md_content = '\n'
for file_name in files:
file_path = os.path.join(folder_path, file_name)
isDir = os.path.isdir(file_path)
isFile = os.path.isfile(file_path)
if isDir:
file = folder_path +'/'+ file_name +'/'+"README.md"
isExists = os.path.exists(file)
if not isExists:
continue
md_file_path = os.path.join(file)
md_file = open(md_file_path, 'r')
md_line = md_file.read()
if get_ts_code_bool(md_line) == True:
md_content_line = '[' + get_md_first_header(md_line) +'](' + md_file_path+ ')\n\n'
md_content += md_content_line
global completion_status_count
completion_status_count = completion_status_count + 1
return md_content
# 获取统计数据
def get_statistical_data():
data = ''
data = '\n\n统计数据 => 总数量:<font color="#336df4" >'+ str(total)+'</font> , 已经完成 <font color="#1dddae" >'+ str(completion_status_count) + '</font> , 百分比例 <font color="#1dddae" >' + str(completion_status_count % total) + '%</font>\n\n'
data += '## 题目列表'
return data
# 获取md文档内容
def get_md_content():
# md文档内容
md_content = ''
md_header_content = "# " + md_header + '\n' + md_header_description + '\n'
md_dy_content = get_md_dy_content_by_path(folder_path, files)
print(completion_status_count)
md_statistical = get_statistical_data()
# 完成内容拼装
md_content = md_header_content + md_statistical + md_dy_content
return md_content
# 更新markdown内容
def update_readme_md(file_path, content):
if os.path.isfile(file_path):
with open(file_path, 'w') as file:
file.write(content)
else:
with open(file_path, 'x') as file:
file.write(content)
def run():
content = get_md_content()
update_readme_md(output_path, content)
run()