change keyword dealing
This commit is contained in:
parent
e3cfb7dff7
commit
7ae0f20c03
|
@ -1,84 +1,55 @@
|
||||||
##对git日志的body进行解析
|
##对git日志的body进行解析
|
||||||
import requests
|
import requests
|
||||||
|
import fcntl
|
||||||
from requests.adapters import HTTPAdapter
|
from requests.adapters import HTTPAdapter
|
||||||
from pygitlog.gitoperation import *
|
from pygitlog.gitoperation import *
|
||||||
from pygitlog.mdoperation import *
|
from pygitlog.mdoperation import *
|
||||||
|
from pygitlog.fsoperation import *
|
||||||
|
|
||||||
#获取kerywords的wiki url
|
#获取kerywords的wiki url
|
||||||
def get_wikipage(keyword,file_name):
|
def get_wikipage(keyword,file_name):
|
||||||
i = 0
|
i = 0
|
||||||
S = requests.Session()
|
S = requests.Session()
|
||||||
|
#避免因为wiki网络问题导致的异常hang死
|
||||||
S.mount('http://', HTTPAdapter(max_retries=3))
|
S.mount('http://', HTTPAdapter(max_retries=3))
|
||||||
S.mount('https://', HTTPAdapter(max_retries=3))
|
S.mount('https://', HTTPAdapter(max_retries=3))
|
||||||
URL = "https://en.wikipedia.org/w/api.php"
|
URL = "https://en.wikipedia.org/w/api.php"
|
||||||
PARAMS = {"action": "opensearch","namespace": "0","search": "","limit": "1","format": "json"}
|
PARAMS = {"action": "opensearch","namespace": "0","search": "","limit": "1","format": "json"}
|
||||||
PARAMS['search'] = keyword
|
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 ""
|
return ""
|
||||||
else:
|
else:
|
||||||
print(keyword)
|
|
||||||
R = S.get(url=URL, params=PARAMS)
|
R = S.get(url=URL, params=PARAMS)
|
||||||
DATA = R.json()
|
DATA = R.json()
|
||||||
if len(DATA) == 0 :
|
if len(DATA) == 0 :
|
||||||
with open(file_name,mode="a+") as file:
|
if keyword not in get_wiki_list(file_name):
|
||||||
file.write("| " + keyword + " ")
|
with open(file_name,mode="a+") as file:
|
||||||
file.write("| no search result |\n")
|
file.write("| " + keyword + " ")
|
||||||
#print("no search result")
|
file.write("| no search result |\n")
|
||||||
|
#print("no search result")
|
||||||
return ""
|
return ""
|
||||||
else:
|
else:
|
||||||
print("DATA=",DATA)
|
#print("DATA=",DATA)
|
||||||
if len(DATA[3]) == 0:
|
if len(DATA[3]) == 0:
|
||||||
with open(file_name,mode="a+") as file:
|
if keyword not in get_wiki_list(file_name):
|
||||||
file.write("| " + keyword + " ")
|
with open(file_name,mode="a+") as file:
|
||||||
file.write("| no match result |\n")
|
file.write("| " + keyword + " ")
|
||||||
#print("no match result")
|
file.write("| no match result |\n")
|
||||||
|
#print("no match result")
|
||||||
return ""
|
return ""
|
||||||
else:
|
else:
|
||||||
with open(file_name,mode="a+") as file:
|
if keyword not in get_wiki_list(file_name):
|
||||||
file.write("| " + keyword + " ")
|
with open(file_name,mode="a+") as file:
|
||||||
file.write("| " + DATA[3][0] + " |\n")
|
file.write("| " + keyword + " ")
|
||||||
return DATA[3][0]
|
file.write("| " + DATA[3][0] + " |\n")
|
||||||
|
#print("add wiki result")
|
||||||
#处理abbr没有keyword的特殊情况
|
return DATA[3][0]
|
||||||
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
|
#获取commit的关键词,如ext4
|
||||||
#逻辑:先获取oneline的描述,然后进行切分
|
#逻辑:先获取oneline的描述,然后进行切分
|
||||||
|
@ -91,15 +62,18 @@ def get_commit_keyword(abbr,hash,wiki_file_name):
|
||||||
keywords = temp_word[0]
|
keywords = temp_word[0]
|
||||||
#print(keywords)
|
#print(keywords)
|
||||||
if keywords == "":
|
if keywords == "":
|
||||||
keywords = "special"
|
return keywords
|
||||||
for key in keywords.split('/'):
|
else:
|
||||||
keyword = get_true_keyword(key,hash)
|
for key in keywords.split('/'):
|
||||||
return "[" + keyword + "](" + get_wikipage(keyword,wiki_file_name) + ")"
|
key = key.replace('"','')
|
||||||
|
return "[" + key + "](" + get_wikipage(key,wiki_file_name) + ")"
|
||||||
|
|
||||||
#获取commit的类型,如
|
#获取commit的类型,如
|
||||||
def get_commit_type(body):
|
def get_commit_type(body):
|
||||||
for line in body.split("\n"):
|
for line in body.split("\n"):
|
||||||
#print(line)
|
#print(line)
|
||||||
|
if "fix" in line:
|
||||||
|
return "bugfix"
|
||||||
if line.startswith("category"):
|
if line.startswith("category"):
|
||||||
return line.replace('category:','')
|
return line.replace('category:','')
|
||||||
return ""
|
return ""
|
||||||
|
|
Loading…
Reference in New Issue