@@ -98,29 +98,39 @@ def get_issues_list(self, repo_name: str) -> list:
98
98
Args:
99
99
repo_name (str): 仓库名称
100
100
"""
101
- issues = []
102
- # 获取第一页 issues 列表
101
+ url = f"https://api.github.com/repos/{ repo_name } /issues"
102
+ headers = {
103
+ "Authorization" : "token " + self .token ,
104
+ "Accept" : "application/vnd.github+json" ,
105
+ }
106
+ params = {
107
+ "state" : "all" ,
108
+ "per_page" : 100 ,
109
+ }
110
+
111
+ all_issues = []
103
112
page = 1
104
- r = requests .get (
105
- url = f"https://api.github.com/repos/{ repo_name } /issues?page={ page } " ,
106
- headers = {
107
- "Authorization" : "token " + self .token ,
108
- "Accept" : "application/vnd.github.v3+json" ,
109
- },
110
- )
111
- issues .extend (r .json ())
112
- # 获取剩余 issues 列表
113
- while r .links .get ("next" ):
113
+
114
+ while True :
115
+ params ["page" ] = page
116
+ print (f"Fetching page { page } of issues..." )
117
+ response = requests .get (url , headers = headers , params = params )
118
+ if response .status_code != 200 :
119
+ raise Exception (
120
+ f"Error retrieving issues: { response .status_code } , { response .text } "
121
+ )
122
+
123
+ issues = response .json ()
124
+ if not issues :
125
+ break
126
+
127
+ all_issues .extend (issues )
114
128
page += 1
115
- r = requests .get (
116
- url = f"https://api.github.com/repos/{ repo_name } /issues?page={ page } " ,
117
- headers = {
118
- "Authorization" : "token " + self .token ,
119
- "Accept" : "application/vnd.github.v3+json" ,
120
- },
121
- )
122
- issues .extend (r .json ())
123
- return issues
129
+
130
+ # 仅保留 Issue,去掉 PR
131
+ noly_issues = [i for i in all_issues if "pull_request" not in i .keys ()]
132
+
133
+ return noly_issues
124
134
125
135
def patch_issues_info (self , issues_api_url : str , data : dict ) -> None :
126
136
"""更新 issues 信息
@@ -205,7 +215,6 @@ def sync_issues(self, repo_name: str) -> None:
205
215
try :
206
216
issue_title = issue ["title" ]
207
217
issue_number = issue ["number" ]
208
- issue_title_ = f"{ issue_number } -{ issue_title } "
209
218
issue_state = issue ["state" ]
210
219
issues_html_url = issue ["html_url" ]
211
220
# assignees
@@ -235,7 +244,8 @@ def sync_issues(self, repo_name: str) -> None:
235
244
# payloads
236
245
payloads = {
237
246
"fields" : {
238
- "ISSUE_TITLE" : issue_title_ ,
247
+ "ISSUE_TITLE" : issue_title ,
248
+ "ISSUE_NUM" : issue_number ,
239
249
"SCENARIO_TITLE" : issue_title .replace ("challenge-" , "" )
240
250
.replace ("lab-" , "" )
241
251
.replace ("-" , " " )
@@ -253,20 +263,20 @@ def sync_issues(self, repo_name: str) -> None:
253
263
}
254
264
}
255
265
# Update record
256
- if issue_title_ in records_dicts .keys ():
266
+ if issue_title in records_dicts .keys ():
257
267
r = self .feishu .update_bitable_record (
258
268
self .app_token ,
259
269
self .table_id ,
260
- records_dicts [issue_title_ ],
270
+ records_dicts [issue_title ],
261
271
payloads ,
262
272
)
263
- print (f"→ Updating { issue_title_ } { r ['msg' ].upper ()} " )
273
+ print (f"→ Updating { issue_title } { r ['msg' ].upper ()} " )
264
274
else :
265
275
# Add record
266
276
r = self .feishu .add_bitable_record (
267
277
self .app_token , self .table_id , payloads
268
278
)
269
- print (f"↑ Adding { issue_title_ } { r ['msg' ].upper ()} " )
279
+ print (f"↑ Adding { issue_title } { r ['msg' ].upper ()} " )
270
280
271
281
except Exception as e :
272
282
print (f"Erro: { e } " )
0 commit comments