-
Notifications
You must be signed in to change notification settings - Fork 232
/
config.sample.ini
218 lines (203 loc) · 6.41 KB
/
config.sample.ini
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
# filename: config.ini
# coding: utf-8
[user]
; student_id string 学号
; password string 密码
; dual_degree boolean 是否为双学位账号,可选 (true, false, True, False, 1, 0)
; 住:只要你的账号在登录时需要选择 "主修/辅双" 身份,此处就需要设为 true
; identity string 双学位账号登录身份,可选 ("bzx","bfx") 对应于 "主修/辅双"
student_id = 1x000xxxxx
password = xxxxxxxx
dual_degree = false
identity = bzx
[client]
; supply_cancel_page int 待刷课程处在 "补退选" 选课计划的第几页
; refresh_interval float 每次循环后的暂停时间,单位 s
; random_deviation float 偏移量分数,如果设置为 <= 0 的值,则视为 0
; iaaa_client_timeout float IAAA 客户端最长请求超时
; elective_client_timeout float elective 客户端最长请求超时
; elective_client_pool_size int 最多同时保持几个 elective 的有效会话(同一 IP 下最多为 5)
; elective_client_max_life int elvetive 客户端的存活时间,单位 s(设置为 -1 则存活时间为无限长)
; login_loop_interval float IAAA 登录线程每回合结束后的等待时间
; print_mutex_rules boolean 是否在每次循环时打印完整的互斥规则列表
; debug_print_request boolean 是否打印请求细节
; debug_dump_request boolean 是否将重要接口的请求以日志的形式记录到本地(包括补退选页、提交选课等接口)
;
; 关于刷新间隔的配置示例:
;
; refresh_interval = 8
; random_deviation = 0.2
;
; 则每两个循环的间隔时间为 8 * (1.0 ± 0.2) s
supply_cancel_page = 1
refresh_interval = 8
random_deviation = 0.2
iaaa_client_timeout = 30
elective_client_timeout = 60
elective_client_pool_size = 2
elective_client_max_life = 600
login_loop_interval = 2
print_mutex_rules = true
debug_print_request = false
debug_dump_request = false
[monitor]
; host str
; port int
host = 127.0.0.1
port = 7074
;---------------- course ----------------;
;
; 课程结构定义:
;
; [course:${id}] ; 用户为该课程定义的 id
;
; name = ${name} ; elective 中的 `课程名`
; class = ${class} ; elective 中的 `班号`
; school = ${school} ; elective 中的 `开课单位`
;
;
; 例如:
;
; [course:math_3]
;
; name = 集合论与图论
; class = 3
; school = 信息科学技术学院
;
; 可以解析出:
;
; id = "math_3"
; name = "集合论与图论"
; class = 3
; school = "信息科学技术学院"
;
;
; 更多例子:
;
; [course:db]
;
; name = 数据库概论
; class = 1
; school = 信息科学技术学院
;
; [course:0]
;
; name = 概率统计 (A)
; class = 1
; school = 信息科学技术学院
;
;
; 注意:
;
; 1. [course:${id}] 中可以带空格,但是不推荐
; 例如 [course: 1], [course:math 1] [ course : hello world ]
; 可以解析出: "1", "math 1", "hello world"
; 2. [course:${id}] 中不要带有 ',' 否则会在后续规则定义中引入混乱! 不接受 '\,' 转义
; 例如 [course:Hai,Alice] 是非法的,在解析时会被忽略
; 3. [course:${id}] 中可以带有 ':',但是不推荐
; 4. 该文件中课程的优先级按照从上到下的顺序从高到低排序,如果在同一循环中同时出现多个有空名额的课,会从上到下依次提交选课请求,
; 高优先级的课会先被提交,例如上述案例中,数据库概率比概率统计(A)的优先级高,如果这两个课同时出现空名额,会先提交数据库
; 概率的选课请求
;
;----------------------------------------;
; [course:sample]
;
; name = class_name_here
; class = class_no_here
; school = class_school_here
;---------------- mutex ----------------;
;
; 互斥规则结构定义:
;
; [mutex:${id}] ; 用户为该互斥规则定义的 id
;
; courses = ${cid1},${cid2},... ; 用户定义的多个课程的 id,以 ',' 分隔
;
;
; 例如:
;
; [course:math_1]
; ...
;
; [course:math_2]
; ...
;
; [course:math_3]
; ...
;
;
; [mutex:0]
;
; courses = math_1,math_2,math_3
;
; 可以解析出
;
; id = "0"
; courses = ["math_1", "math_2", "math_3"]
;
;
; 解释:
;
; 同一个互斥规则内的课程一旦有一门课已经被选上,其他课程将会被自动忽略。
; 例如,对于上述例子,如果 math_1, math_2, math_3 有任何一门课已经被选上,其它两门课将会被自动忽略
; 例如,当 math_1 被选上时,math_2, math_3 会被自动忽略
;
;
; 注意:
;
; 1. [mutex:${id}] 的命名注意事项同 course
; 2. courses 中可以有空格,但是不推荐
; 例如 courses = math_1, math_2 , math_3
; 仍可以解析出 ["math_1", "math_2", "math_3"]
; 3. 如果互斥的几门课在同一回合内同时出现空位,优先级高的课会被首先提交,而优先级低的课会被忽略,
; 关于课程优先级的概念,参看 [course] 下的相关注释
;
;---------------------------------------;
; [mutex:sample]
;
; courses = course_id_1,course_id_2
;---------------- delay ----------------;
;
; 延迟规则结构定义:
;
; [delay:${id}] ; 用户为该延迟规则定义的 id
;
; course = ${course} ; 用户定义的课程的 id
; threshold = ${threshold} ; 触发选课的剩余名额的阈值,剩余名额小于等于该值的时候才会触发选课
;
;
; 例如:
;
; [course:math_1]
; ...
;
; [delay:0]
;
; course = math_1
; threshold = 10
;
; 可以解析出
;
; id = "0"
; course = "math_1"
; threshold = 10
;
;
; 解释:
;
; 被定义了延迟规则的课程,即使当回合它可以被选上时,也只有当该课程的剩余名额数小于等于设定的阈值时才会触发提交选课,
; 例如,对于上述例子,假设 math_1 的总名额是 240 人,如果当回合 math_1 的选课状况是 229/240,将不会
; 触发选课,因为剩余名额 = 240 - 229 = 11 > 10,而如果当回合 math_1 的选课状态是 230/240,将会触发选课,
; 因为剩余名额 = 240 - 230 = 10 <= 10,同理,诸如 235/240 这样的状态也会触发选课
;
;
; 注意:
; 1. [delay:${id}] 的命名注意事项同 course
; 2. threshold 必须是正整数,否则会报错
; 3. 使用前请务必查看 README.md 中与之相关的说明
;
;---------------------------------------;
; [delay:sample]
;
; course = course_id_1
; threshold = a_positive_int