change keyword dealing
This commit is contained in:
parent
e3cfb7dff7
commit
7ae0f20c03
|
@ -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 ""
|
||||
|
|
Loading…
Reference in New Issue