1. 程式人生 > 實用技巧 >python實現提取jira bug列表

python實現提取jira bug列表

公司要求內部每日整理jira bug發郵件,手動執行了一段時間,想著用自動化的方式實現,故用了3天的時間做出了此指令碼。

# -*- coding:utf-8 -*-
import requests
import re
from bs4 import BeautifulSoup as bs
import time
import os

jql = "project = SDP and parent = SDP-13330 AND issuetype in (standardIssueTypes(), subTaskIssueTypes(), BUG) AND status in (新建, 解決中, 重新開啟) AND priority in (P0, P1, P2) AND reporter in (membersOf(SDP_Tester)) ORDER BY priority DESC
" username = "robin.li" password = "a12345678" tempfilepath = r"f:\bug_list.csv" outbuglist = r"f:\bug_out" + time.strftime("%Y%m%d", time.localtime()) + ".csv" parentid = "SDP-13330" bugs_list = [] def findall_data(data,LB="",RB=""): ''' 關聯函式左右邊界提取數取 ''' rule=LB + r"(.+?)" + RB datalist
=re.findall(rule,data) return datalist def get_bugs_list(): '''根據規則提取bug列表''' if os.path.exists(outbuglist): # 如果檔案存在 os.remove(outbuglist) with open(r"f:\bug_list.csv", 'r') as f: content = str(f.readlines())[1:-1] bug = [] soup = bs(content, features='
html.parser') for tr in soup.select('tr'): for td in tr.select('td'): bug.append(str(td.text).strip(r'')) bugs_list.append(bug) bug = [] for bug in bugs_list: clear_list = str(bug[1:-2]).replace("\\n", "").replace("\'", "").replace(" ", "").replace("\,", "").replace("\\xa0", "").replace(parentid, "").replace("[", "").replace("]", "") print(clear_list) try: with open(outbuglist, 'a') as f: f.write(clear_list + "\n") except PermissionError: print("\033[31m請關閉已經開啟的bug列表") return 0 else: print("\n \033[31mbug列表輸出地址:" + outbuglist + "\n" + "-"*50 + "-----bug內容如上:--------\n") def login_bugwriter(username, password, jql, tempfilepath): """ login_bugwriter(username='str',password='str', jql='str') 登入jira提取bug列表寫入檔案 username:登入Jira的帳號 password:密碼 jql:jira過濾的語法 tempfilepath:過濾的bug檔案臨時儲存目錄檔案 """ '''''' data = {'os_username': username, 'os_password': password, 'login': '登入'} res = requests.get("https://jira.clouddeep.cn/secure/Dashboard.jspa") if res.status_code == 200: print("可以訪問Jira,開始提取資料") jsession = requests.Session() cookie_jar = jsession.post("https://jira.clouddeep.cn/login.jsp",data=data).cookies login_cookie = requests.utils.dict_from_cookiejar(cookie_jar) print("登入成功,整理列表") headers={ "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "none", "Sec-Fetch-User": "?1", "Upgrade-Insecure-Requests": "1", } r=requests.get("https://jira.clouddeep.cn/browse/SDP-13330",headers=headers, cookies=login_cookie) #print(r.text) jql_url="https://jira.clouddeep.cn/issues/SDP-13330/?jql=" + jql print("請確認過濾條件:==>" + jql_url + "\n" + "-"*30) bug_list = requests.get(jql_url ,headers=headers, cookies=login_cookie) with open(tempfilepath,'w') as f: f.write(bug_list.text) else: print("jira無法訪問,請檢查網路。") if __name__ == '__main__': login_bugwriter(username, password, jql, tempfilepath) get_bugs_list()