Compare commits
7 Commits
Author | SHA1 | Date |
---|---|---|
hzk007 | 975d55de9a | |
hzk007 | 8aa7f376d5 | |
lishijun | a3c0efd376 | |
dong_nudt | 8b69374d52 | |
dong_nudt | 4fb168bbe7 | |
dong_nudt | d2879d7e0c | |
hzk007 | d28ad625fa |
|
@ -1,31 +1,41 @@
|
|||
#!/usr/bin/python
|
||||
# 负责调用平台接口 完成各项操作
|
||||
import sys
|
||||
sys.path.append('..')
|
||||
import requests
|
||||
import json
|
||||
import config.baseConfig as baseconfig
|
||||
from commons.logUtil import logger
|
||||
sys.path.append('..') # 将上级目录加入到系统路径中,以便导入那里的模块
|
||||
import requests # 导入requests库,用于发起HTTP请求
|
||||
import json # 导入json库,用于处理JSON数据
|
||||
import config.baseConfig as baseconfig # 导入配置文件,里面可能包含API的基本配置信息
|
||||
from commons.logUtil import logger # 从commons目录导入日志工具
|
||||
|
||||
|
||||
# 获取 pull状态新信息
|
||||
def get_pull_infor(owner, repo, index):
|
||||
# 构造请求的URL
|
||||
url = baseconfig.apiUrl + "api/v1/{}/pulls/{}.json".format(repo, index)
|
||||
# 发起GET请求,获取Pull请求的信息
|
||||
response = requests.get(url, headers=baseconfig.header, proxies = baseconfig.proxies)
|
||||
logger.info("get_pull_infor调用:"+str(response.json()))
|
||||
# 记录日志
|
||||
logger.info("get_pull_infor调用:" + str(response.json()))
|
||||
# 返回响应的JSON数据
|
||||
return response.json()
|
||||
|
||||
|
||||
# 获取 添加pull评论信息
|
||||
def create_pull_comment(issue_id):
|
||||
# 构造请求的URL
|
||||
url = baseconfig.apiUrl + "api/issues/{}/journals.json".format(issue_id)
|
||||
COMMENT = "注意!\n该合并请求已创建满两小时,长时间未处理可能会降低贡献的质量和贡献者积极性。\n请及时处理!"
|
||||
# 准备请求的数据
|
||||
data = json.dumps({'content': COMMENT})
|
||||
|
||||
# 发起POST请求,添加评论
|
||||
response = requests.post(url, data=data, headers=baseconfig.header, proxies = baseconfig.proxies)
|
||||
logger.info("create_pull_comment调用:"+str(response.json()))
|
||||
# 记录日志
|
||||
logger.info("create_pull_comment调用:" + str(response.json()))
|
||||
# 返回响应的JSON数据
|
||||
return response.json()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# 测试函数,使用特定的参数调用get_pull_infor函数
|
||||
get_pull_infor("wuxiaojun", "wuxiaojun/botreascrch", "3")
|
||||
|
|
|
@ -1,120 +1,106 @@
|
|||
import sys
|
||||
import sys # 导入sys模块。以便后一行代码导入指定路径'..'下的包
|
||||
|
||||
sys.path.append('..')
|
||||
import config.baseConfig as baseConfig
|
||||
import pymysql
|
||||
import datetime
|
||||
import commons.apiUtil as api
|
||||
sys.path.append('..') # 将路径添加到系统路径中
|
||||
import config.baseConfig as baseConfig # 导入config模块中的baseConfig,便于配置数据库
|
||||
import pymysql # 导入用于MySQL交互的pymysql模块
|
||||
import datetime # 导入日期和时间操作的datetime模块
|
||||
import commons.apiUtil as api # 导入commons模块中的apiUtil,用于平台获取合并方状态新信息以及对不活跃用户进行评论提醒
|
||||
|
||||
|
||||
# 插入一条pull表记录
|
||||
# 插入一条记录到'pull'(合并方统计表)
|
||||
def insert_pull(values):
|
||||
# 打开数据库连接
|
||||
db = pymysql.connect(**baseConfig.db_config)
|
||||
# 使用 cursor() 方法创建一个游标对象 cursor
|
||||
cursor = db.cursor()
|
||||
# 建立与数据库的连接
|
||||
db = pymysql.connect(**baseConfig.db_config)# **用于将字典中的键值对作为参数传递给该函数
|
||||
# 使用cursor()方法创建游标对象
|
||||
cursor = db.cursor()# 创建的cursor对象可以操作数据库,并保留结果
|
||||
|
||||
# 插入语句
|
||||
# value = (1, 2, "b", "b", now_time, now_time, 0)
|
||||
# SQL插入语句
|
||||
ins_sql = """INSERT INTO pull(`pullid`, `index`, `owner`, `repo`, `created`, `checktime`, `status`)
|
||||
VALUES (%s, %s, "%s", "%s","%s", "%s", %s)""" % values
|
||||
print(ins_sql)
|
||||
VALUES (%s, %s, "%s", "%s","%s", "%s", %s)""" % values # 构建带有提供值的SQL语句
|
||||
print(ins_sql) # 打印构建的SQL语句
|
||||
try:
|
||||
cursor.execute(ins_sql)
|
||||
db.commit()
|
||||
cursor.execute(ins_sql) # 执行SQL语句
|
||||
db.commit() # 提交更改到数据库
|
||||
except Exception as e:
|
||||
print("ERR0R!insert pull error:")
|
||||
db.rollback()
|
||||
print(e)
|
||||
# 关闭数据库连接
|
||||
db.close()
|
||||
print("错误!插入pull记录出错:") # 打印插入失败的错误信息
|
||||
db.rollback() # 在出错时回滚更改
|
||||
print(e) # 打印具体的错误信息
|
||||
db.close() # 关闭数据库连接
|
||||
|
||||
|
||||
# 更新一条pull表记录
|
||||
# 更新'pull'表中的记录
|
||||
def update_pull(index, owner, repo):
|
||||
# 打开数据库连接
|
||||
db = pymysql.connect(**baseConfig.db_config)
|
||||
# 使用 cursor() 方法创建一个游标对象 cursor
|
||||
cursor = db.cursor()
|
||||
# 更新语句
|
||||
db = pymysql.connect(**baseConfig.db_config) # 建立与数据库的连接
|
||||
cursor = db.cursor() # 创建游标对象
|
||||
|
||||
# SQL更新语句,根据提供的索引、所有者和仓库名称 将'status'字段更新为1,说明该记录更新过
|
||||
sql_update = "UPDATE pull set `status` = 1 where `index` = '%d' AND `owner` = '%s' AND `repo` = '%s'" % (
|
||||
index, owner, repo)
|
||||
index, owner, repo)
|
||||
try:
|
||||
cursor.execute(sql_update)
|
||||
db.commit()
|
||||
cursor.execute(sql_update) # 执行SQL更新语句
|
||||
db.commit() # 提交更改到数据库
|
||||
except Exception as e:
|
||||
print("ERR0R!update pull error:")
|
||||
db.rollback()
|
||||
print(e)
|
||||
# 关闭数据库连接
|
||||
db.close()
|
||||
print("错误!更新pull记录出错:") # 打印更新失败的错误信息
|
||||
db.rollback() # 在出错时回滚更改
|
||||
print(e) # 打印具体的错误信息
|
||||
db.close() # 关闭数据库连接
|
||||
|
||||
|
||||
# 查询并更新
|
||||
# 检查并更新'pull'记录
|
||||
def check_and_update_pull():
|
||||
# 打开数据库连接
|
||||
db = pymysql.connect(**baseConfig.db_config)
|
||||
# 使用 cursor() 方法创建一个游标对象 cursor
|
||||
cursor = db.cursor()
|
||||
db = pymysql.connect(**baseConfig.db_config) # 建立数据库连接
|
||||
cursor = db.cursor() # 创建游标对象
|
||||
|
||||
now_time = datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S')
|
||||
now_time = datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S') # 获取当前时间
|
||||
# SQL查询,选择'status'为0且'checktime'小于当前时间的记录(获取当前状态未更新的SQL记录)
|
||||
sql_query = "select * from pull where `status` = 0 and `checktime` < '%s'" % now_time
|
||||
# print(sql_query)
|
||||
|
||||
try:
|
||||
# 执行SQL语句
|
||||
cursor.execute(sql_query)
|
||||
# 获取所有记录列表
|
||||
results = cursor.fetchall()
|
||||
print(results)
|
||||
cursor.execute(sql_query) # 执行SQL查询
|
||||
results = cursor.fetchall() # 获取所有记录
|
||||
print(results) # 打印获取的结果
|
||||
for item in results:
|
||||
# 调用接口查询pr状态
|
||||
# (7, 1, 2, 'b', 'b', datetime.datetime(), None, datetime.datetime(2023, 3, 23, 11, 46, 13), 0)
|
||||
# 提取 pr记录信息
|
||||
pull_id = item[0]
|
||||
pull_index = item[2]
|
||||
owner = item[3]
|
||||
repo = item[4]
|
||||
pr_infor = api.get_pull_infor(owner, repo, pull_index)
|
||||
print(pr_infor)
|
||||
issue_id = pr_infor["issue"]["id"];
|
||||
pull_id = item[0] # 从获取的记录中提取'pull_id',用于唯一标识每个记录
|
||||
pull_index = item[2] # 从获取的记录中提取pull下标
|
||||
owner = item[3] # 从获取的记录中提取所有者
|
||||
repo = item[4] # 从获取的记录中提取仓库名称
|
||||
|
||||
# pr 状态标志位,0表示未完成,1表示已经完成
|
||||
flag = check_pr(pr_infor)
|
||||
# 调用API函数,根据所有者、仓库和pull_index获取pull请求信息
|
||||
pr_info = api.get_pull_infor(owner, repo, pull_index)
|
||||
print(pr_info) # 打印获取的pull请求信息
|
||||
issue_id = pr_info["issue"]["id"] # 从获取的信息中提取'issue_id',但是在代码文件中未找到issue关键字???
|
||||
|
||||
# 检查pull请求状态,并相应设置标志位
|
||||
flag = check_pr(pr_info)
|
||||
|
||||
sql_update = "" # 初始化SQL更新语句变量
|
||||
|
||||
# 数据库 pr记录 更新语句
|
||||
sql_update = ""
|
||||
# 若新增评论或者状态为关闭 则修改数据库
|
||||
if flag == 1:
|
||||
# pr已完成更新语句
|
||||
# 如果pull请求完成,更新SQL数据库中pull_id对应的信息
|
||||
sql_update = "UPDATE pull set status = 1 where id = '%d'" % pull_id
|
||||
# 否则对不活跃的pr调用接口,发表评论提醒处理
|
||||
|
||||
try:
|
||||
cursor.execute(sql_update)
|
||||
db.commit()
|
||||
cursor.execute(sql_update) # 执行SQL更新语句
|
||||
db.commit() # 提交更改到数据库
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
print("ERR0R!update pull error:")
|
||||
print(e)
|
||||
db.rollback() # 在出错时回滚更改
|
||||
print("错误!更新pull记录出错:") # 打印更新失败的错误信息
|
||||
print(e) # 打印具体的错误信息
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
print("ERR0R!deal pull error:")
|
||||
print(e)
|
||||
# 关闭数据库连接
|
||||
db.close()
|
||||
db.rollback() # 在出错时回滚更改
|
||||
print("错误!处理pull出错:") # 打印处理pull请求出错的错误信息
|
||||
print(e) # 打印具体的错误信息
|
||||
db.close() # 关闭数据库连接
|
||||
|
||||
|
||||
# 检查 pr状态,已完成返回1,未完成返回0
|
||||
def check_pr(pr_infor):
|
||||
# pr已经关闭
|
||||
if pr_infor["status"] == "closed":
|
||||
return 1
|
||||
# pr有动态
|
||||
if pr_infor["issue"]["journals_count"] != 0:
|
||||
return 1
|
||||
return 0
|
||||
# 检查pull请求状态:完成返回1,未完成返回0
|
||||
def check_pr(pr_info):
|
||||
if pr_info["status"] == "closed": # 检查pull请求状态是否为closed,status值只有0、1、2三种,这里的closed不对???
|
||||
return 1 # 如果pull请求已关闭,返回1
|
||||
if pr_info["issue"]["journals_count"] != 0: # 检查pull请求是否有日志,未找到issue和journals_count关键字
|
||||
return 1 # 如果pull请求有日志,返回1
|
||||
return 0 # 如果pull请求未完成,返回0
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
check_and_update_pull()
|
||||
check_and_update_pull() # 调用函数检查和更新pull请求
|
||||
|
|
Loading…
Reference in New Issue