75 lines
2.8 KiB
Python
75 lines
2.8 KiB
Python
from gitlink_api import HandleIssue
|
||
from config import source_host, source_project, target_project, target_host
|
||
import math
|
||
from loguru import logger
|
||
|
||
|
||
def get_issue_ids():
|
||
"""
|
||
获取源仓库所有的issue_ids
|
||
:return:
|
||
"""
|
||
issue_ids = []
|
||
page = 1
|
||
limit = 15
|
||
issue_api = HandleIssue(source_host)
|
||
# 获取仓库所有issue数量
|
||
issue_count = issue_api.get_issue_list(project=source_project, limit=limit, page=page).get("total_issues_count", 0)
|
||
logger.debug(f"总共有{issue_count}个issue")
|
||
# 判断当前共有多少页
|
||
total_page = math.ceil(int(issue_count) / limit)
|
||
# 循环请求获取所有的issue_id
|
||
while page <= total_page:
|
||
issues = issue_api.get_issue_list(project=source_project, page=page, limit=limit).get("issues", "")
|
||
if issues and len(issues) > 0:
|
||
for issue in issues:
|
||
issue_ids.append(issue.get("project_issues_index"))
|
||
page += 1
|
||
print(f"获取到所有issue_ids: {issue_ids}")
|
||
return issue_ids
|
||
|
||
|
||
def get_issues_and_journals():
|
||
"""
|
||
根据issueID所有的issue详细信息及评论
|
||
:return:
|
||
"""
|
||
issue_api = HandleIssue(source_host)
|
||
issue_ids = get_issue_ids()
|
||
issues_and_journals = []
|
||
for issue_id in issue_ids:
|
||
# 获取源仓库的某一个issue详情及评论
|
||
issue_detail = issue_api.get_issue_detail(project=source_project, issue_id=issue_id)
|
||
# 获取源仓库的某一个issue评论数量
|
||
issue_journals = []
|
||
page = 1
|
||
limit = 50
|
||
comment_journals_count = issue_api.get_issue_journals_detail(project=source_project, issue_id=issue_id,
|
||
page=page,
|
||
limit=limit).get("total_comment_journals_count", 0)
|
||
# 当issue评论数量大于0时,去获取评论
|
||
if comment_journals_count > 0:
|
||
# 判断当前共有多少页
|
||
total_page = math.ceil(int(comment_journals_count) / limit)
|
||
# 循环请求获取所有的issue评论
|
||
while page <= total_page:
|
||
journals = issue_api.get_issue_journals_detail(project=source_project, issue_id=issue_id, page=page,
|
||
limit=limit).get("journals", "")
|
||
if journals and len(journals) > 0:
|
||
for journal in journals:
|
||
issue_journals.append(journal)
|
||
page += 1
|
||
|
||
issues_and_journals.append(
|
||
{
|
||
"issue_id": issue_id,
|
||
"issue_detail": issue_detail,
|
||
"issue_journals": issue_journals
|
||
}
|
||
)
|
||
return issues_and_journals
|
||
|
||
|
||
if __name__ == '__main__':
|
||
print(get_issues_and_journals())
|