forked from Lesin/reposync
162 lines
5.5 KiB
Python
162 lines
5.5 KiB
Python
import urllib
|
|
import requests
|
|
import mysql.connector
|
|
import json
|
|
|
|
def main():
|
|
########获取gitee里的issue并且放到数据库中#######################
|
|
# 连接到MySQL数据库
|
|
conn = mysql.connector.connect(
|
|
host="localhost",
|
|
user="root",
|
|
password="185102xmy",
|
|
database="db1"
|
|
)
|
|
cursor = conn.cursor()
|
|
|
|
cursor.execute('DROP TABLE IF EXISTS github_issue_list')
|
|
# 创建一个表
|
|
cursor.execute('''CREATE TABLE IF NOT EXISTS github_issue_list
|
|
(id INT AUTO_INCREMENT PRIMARY KEY, number VARCHAR(10), title VARCHAR(100), body VARCHAR(1000), status_name VARCHAR(15))''')
|
|
|
|
url = f"https://api.github.com/repos/fuxingtamu/yundingzhiyi/issues"
|
|
|
|
# 构造请求头
|
|
token = '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'
|
|
# 构造请求头
|
|
headers = {
|
|
'Authorization': f'token {token}',
|
|
'Accept': 'application/vnd.github+json'
|
|
}
|
|
|
|
# 发送POST请求
|
|
data = {
|
|
|
|
}
|
|
response = requests.get(url, headers=headers, json=data, verify=False)
|
|
issue_info = response.json()
|
|
for issue in issue_info:
|
|
print('title:', issue['title'])
|
|
print('body:', issue['body'])
|
|
print('number', issue['number'])
|
|
print('id', issue['id'])
|
|
|
|
cursor.execute(
|
|
'INSERT INTO github_issue_list (number, title, body, status_name) VALUES (%s, %s, %s, %s)',
|
|
(issue['number'], issue['title'], issue['body'], issue['id']))
|
|
|
|
# 提交事务
|
|
conn.commit()
|
|
# 关闭游标和连接
|
|
cursor.close()
|
|
conn.close()
|
|
|
|
########获取gitlink里的issue并且放到数据库中#######################
|
|
# 连接到MySQL数据库
|
|
conn = mysql.connector.connect(
|
|
host="localhost",
|
|
user="root",
|
|
password="185102xmy",
|
|
database="db1"
|
|
)
|
|
cursor = conn.cursor()
|
|
|
|
cursor.execute('DROP TABLE IF EXISTS gitlink_issue_list')
|
|
# 创建一个表
|
|
cursor.execute('''CREATE TABLE IF NOT EXISTS gitlink_issue_list
|
|
(id INT AUTO_INCREMENT PRIMARY KEY, number VARCHAR(10), subject VARCHAR(100), description VARCHAR(1000), status_name VARCHAR(15))''')
|
|
|
|
url = "https://gitlink.org.cn/api/v1/xumingyang21/reposyncer2/issues.json?category&participant_category&keyword&author_id&milestone_id&assigner_id&status_id&sort_by&sort_direction&issue_tag_ids&page&limit&debug=admin"
|
|
|
|
payload = {}
|
|
headers = {
|
|
'Authorization': 'HXn433Vth2ksJmpv3yVqaE7qgK1yJbDFwc_xnITcM-o',
|
|
'User-Agent': 'Apifox/1.0.0 (https://apifox.com)'
|
|
}
|
|
|
|
response = requests.request("GET", url, headers=headers, data=payload)
|
|
data = response.json()
|
|
# print(data)
|
|
print(data['issues'])
|
|
for issue in data['issues']:
|
|
url = f"https://gitlink.org.cn/api/v1/xumingyang21/reposyncer2/issues/{issue['id']}.json"
|
|
|
|
payload = {}
|
|
|
|
access_token = 'HXn433Vth2ksJmpv3yVqaE7qgK1yJbDFwc_xnITcM-o'
|
|
headers = {
|
|
'Authorization': f'Bearer {access_token}',
|
|
'User-Agent': 'Apifox/1.0.0 (https://apifox.com)'
|
|
}
|
|
|
|
response1 = requests.request("GET", url, headers=headers, data=payload)
|
|
data1 = response1.json()
|
|
# print(response.text)
|
|
# print(data)
|
|
print(issue['id'])
|
|
print(issue['subject'])
|
|
print(data1['description'])
|
|
print(issue['status_name'])
|
|
|
|
cursor.execute(
|
|
'INSERT INTO gitlink_issue_list (number, subject, description, status_name) VALUES (%s, %s, %s, %s)',
|
|
(issue['id'], issue['subject'], data1['description'], issue['status_name']))
|
|
# 执行查询
|
|
cursor.execute('SELECT number FROM gitlink_issue_list')
|
|
# 获取所有结果
|
|
results = cursor.fetchall()
|
|
# 提取列数据到列表中
|
|
column_data = [row[0] for row in results]
|
|
|
|
##################删除gitlink仓库中的所有的issue###########################
|
|
url = "https://gitlink.org.cn/api/v1/xumingyang21/reposyncer2/issues/batch_destroy.json"
|
|
|
|
payload = json.dumps({
|
|
"ids": column_data
|
|
})
|
|
access_token = 'HXn433Vth2ksJmpv3yVqaE7qgK1yJbDFwc_xnITcM-o'
|
|
headers = {
|
|
'Authorization': f'Bearer {access_token}', # 使用 Bearer 标记
|
|
'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
|
|
'Content-Type': 'application/json'
|
|
}
|
|
response = requests.request("DELETE", url, headers=headers, data=payload)
|
|
|
|
print(response.text)
|
|
|
|
##################将gitee中的issue创建到gitlink中###########################
|
|
|
|
url = "https://gitlink.org.cn/api/v1/xumingyang21/reposyncer2/issues.json"
|
|
|
|
# 替换为您的实际访问令牌
|
|
access_token = 'HXn433Vth2ksJmpv3yVqaE7qgK1yJbDFwc_xnITcM-o'
|
|
headers = {
|
|
'Authorization': f'Bearer {access_token}', # 使用 Bearer 标记
|
|
'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
|
|
'Content-Type': 'application/json'
|
|
}
|
|
|
|
# 执行查询
|
|
cursor.execute('SELECT title,body FROM github_issue_list')
|
|
# 获取所有结果
|
|
result = cursor.fetchall()
|
|
|
|
for row in result:
|
|
payload = json.dumps({
|
|
|
|
"status_id": 1, # status对应 1对应新增 2对应正在解决 3对应已解决
|
|
"priority_id": 2, # priority对应 1对应低 2对应正常 3对应高优先级
|
|
"subject": row[0],
|
|
"description": row[1],
|
|
})
|
|
response = requests.request("POST", url, headers=headers, data=payload)
|
|
print(response.text)
|
|
|
|
# 提交事务
|
|
conn.commit()
|
|
# 关闭游标和连接
|
|
cursor.close()
|
|
conn.close()
|
|
|
|
if __name__ == '__main__':
|
|
main() |