change keyword dealing

This commit is contained in:
qiurui 2024-01-19 16:12:56 +08:00
parent e3cfb7dff7
commit 7ae0f20c03
1 changed files with 34 additions and 60 deletions

View File

@ -1,85 +1,56 @@
##对git日志的body进行解析
import requests
import fcntl
from requests.adapters import HTTPAdapter
from pygitlog.gitoperation import *
from pygitlog.mdoperation import *
from pygitlog.fsoperation import *
#获取kerywords的wiki url
def get_wikipage(keyword,file_name):
i = 0
S = requests.Session()
#避免因为wiki网络问题导致的异常hang死
S.mount('http://', HTTPAdapter(max_retries=3))
S.mount('https://', HTTPAdapter(max_retries=3))
URL = "https://en.wikipedia.org/w/api.php"
PARAMS = {"action": "opensearch","namespace": "0","search": "","limit": "1","format": "json"}
PARAMS['search'] = keyword
if keyword == "":
#print(keyword)
if keyword in get_wiki_list(file_name):
index = get_wiki_list(file_name).index(keyword)
wiki_page = get_wiki_list_url(index,file_name)
#print("have wiki result")
return wiki_page
elif keyword == "":
return ""
else:
print(keyword)
R = S.get(url=URL, params=PARAMS)
DATA = R.json()
if len(DATA) == 0 :
if keyword not in get_wiki_list(file_name):
with open(file_name,mode="a+") as file:
file.write("| " + keyword + " ")
file.write("| no search result |\n")
#print("no search result")
return ""
else:
print("DATA=",DATA)
#print("DATA=",DATA)
if len(DATA[3]) == 0:
if keyword not in get_wiki_list(file_name):
with open(file_name,mode="a+") as file:
file.write("| " + keyword + " ")
file.write("| no match result |\n")
#print("no match result")
return ""
else:
if keyword not in get_wiki_list(file_name):
with open(file_name,mode="a+") as file:
file.write("| " + keyword + " ")
file.write("| " + DATA[3][0] + " |\n")
#print("add wiki result")
return DATA[3][0]
#处理abbr没有keyword的特殊情况
def deal_spec_abbr(hash,keywords):
keyword_list = get_commit_diff_files(hash).split("\n")
#print(keyword_list)
file_name = "/home/qiurui/Documents/git-tools/pygitlog/keywords.txt"
for key in keyword_list:
#print(key)
with open(file_name,"r") as file:
for line in file:
#print(line.replace('\n',''))
if line.replace('\n','') in key:
#print(line)
return get_true_keyword(line.replace('\n',''),hash)
return keywords
#获取实际的keyword
#异常情况PR-number
def get_true_keyword(keywords,hash):
#print(keywords)
if keywords == "md":
keyword = "mdadm"
elif keywords == "atm":
keyword = "Asynchronous Transfer Mode"
elif "nft" in keywords:
keyword = "netfilter"
elif "dm" in keywords:
keyword = "Device Mapper"
elif "avb" in keywords :
keyword = "Audio Video Bridging"
elif "nand" in keywords :
keyword = "nand"
elif "gsm" in keywords :
keyword = "gsm"
elif keywords.startswith("PR"):
keyword = deal_spec_abbr(hash,keywords)
elif keywords.startswith("special"):
keyword = deal_spec_abbr(hash,keywords)
else:
keyword = keywords
return keyword
#获取commit的关键词如ext4
#逻辑先获取oneline的描述然后进行切分
def get_commit_keyword(abbr,hash,wiki_file_name):
@ -91,15 +62,18 @@ def get_commit_keyword(abbr,hash,wiki_file_name):
keywords = temp_word[0]
#print(keywords)
if keywords == "":
keywords = "special"
return keywords
else:
for key in keywords.split('/'):
keyword = get_true_keyword(key,hash)
return "[" + keyword + "](" + get_wikipage(keyword,wiki_file_name) + ")"
key = key.replace('"','')
return "[" + key + "](" + get_wikipage(key,wiki_file_name) + ")"
#获取commit的类型
def get_commit_type(body):
for line in body.split("\n"):
#print(line)
if "fix" in line:
return "bugfix"
if line.startswith("category"):
return line.replace('category:','')
return ""