Update close_issue.py

This commit is contained in:
DingQz
2024-12-06 10:38:47 +08:00
committed by GitHub
parent 35d27757bd
commit e67fde92fe

View File

@@ -18,24 +18,19 @@ def get_stargazers(repo):
'per_page': 100, 'per_page': 100,
'page': page, 'page': page,
} }
url = 'https://api.github.com/repos/{}/stargazers?'.format(repo) url = f'https://api.github.com/repos/{repo}/stargazers'
resp = requests.get(url, headers=headers, params=queries) resp = requests.get(url, headers=headers, params=queries)
if resp.status_code != 200: if resp.status_code != 200:
raise Exception('Error get stargazers: ' + resp.text) raise Exception('Error get stargazers: ' + resp.text)
data = resp.json() data = resp.json()
if not data: if not data:
break break
for stargazer in data: for stargazer in data:
_stargazers[stargazer['login']] = True _stargazers[stargazer['login']] = True
page += 1 page += 1
print('list stargazers done, total: ' + str(len(_stargazers))) print('list stargazers done, total: ' + str(len(_stargazers)))
return _stargazers return _stargazers
def get_issues(repo): def get_issues(repo):
page = 1 page = 1
_issues = [] _issues = []
@@ -47,25 +42,20 @@ def get_issues(repo):
'per_page': 100, 'per_page': 100,
'page': page, 'page': page,
} }
url = 'https://api.github.com/repos/{}/issues?'.format(repo) url = f'https://api.github.com/repos/{repo}/issues'
resp = requests.get(url, headers=headers, params=queries) resp = requests.get(url, headers=headers, params=queries)
if resp.status_code != 200: if resp.status_code != 200:
raise Exception('Error get issues: ' + resp.text) raise Exception('Error get issues: ' + resp.text)
data = resp.json() data = resp.json()
if not data: if not data:
break break
_issues += data _issues += data
page += 1 page += 1
print('list issues done, total: ' + str(len(_issues))) print('list issues done, total: ' + str(len(_issues)))
return _issues return _issues
def close_issue(repo, issue_number): def close_issue(repo, issue_number):
url = 'https://api.github.com/repos/{}/issues/{}'.format(repo, issue_number) url = f'https://api.github.com/repos/{repo}/issues/{issue_number}'
data = { data = {
'state': 'closed', 'state': 'closed',
'state_reason': 'not_planned', 'state_reason': 'not_planned',
@@ -74,31 +64,29 @@ def close_issue(repo, issue_number):
resp = requests.patch(url, headers=headers, json=data) resp = requests.patch(url, headers=headers, json=data)
if resp.status_code != 200: if resp.status_code != 200:
raise Exception('Error close issue: ' + resp.text) raise Exception('Error close issue: ' + resp.text)
print('issue: {} closed'.format(issue_number)) print('issue: {} closed'.format(issue_number))
def lock_issue(repo, issue_number): def lock_issue(repo, issue_number):
url = 'https://api.github.com/repos/{}/issues/{}/lock'.format(repo, issue_number) url = f'https://api.github.com/repos/{repo}/issues/{issue_number}/lock'
data = { data = {
'lock_reason': 'spam', 'lock_reason': 'spam',
} }
resp = requests.put(url, headers=headers, json=data) resp = requests.put(url, headers=headers, json=data)
if resp.status_code != 204: if resp.status_code != 204:
raise Exception('Error lock issue: ' + resp.text) raise Exception('Error lock issue: ' + resp.text)
print('issue: {} locked'.format(issue_number)) print('issue: {} locked'.format(issue_number))
if '__main__' == __name__: if '__main__' == __name__:
stargazers = get_stargazers(github_repo) try:
stargazers = get_stargazers(github_repo)
issues = get_issues(github_repo) issues = get_issues(github_repo)
for issue in issues: for issue in issues:
login = issue['user']['login'] login = issue['user']['login']
if login not in stargazers: if login not in stargazers:
print('issue: {}, login: {} not in stargazers'.format(issue['number'], login)) print('issue: {}, login: {} not in stargazers'.format(issue['number'], login))
close_issue(github_repo, issue['number']) close_issue(github_repo, issue['number'])
lock_issue(github_repo, issue['number']) lock_issue(github_repo, issue['number'])
print('done')
print('done') except Exception as e:
print(f"Error occurred: {str(e)}")
raise