日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

如何用 Python 制作 GitHub 消息助手

瀏覽:34日期:2022-06-27 14:25:58

在互聯(lián)網(wǎng)2.0時(shí)代,工程師解決業(yè)務(wù)問題主要依賴的是自己掌握的各種工具和軟件伴隨著席卷全球的開源浪潮,開源工具和軟件也迅猛增長(zhǎng)。工程師需要關(guān)注的技術(shù)和軟件也隨之越來越多,學(xué)習(xí)負(fù)擔(dān)越來越大,大腦也越來越不夠用。但工程師們也很無奈,因?yàn)檎l(shuí)掌握的技術(shù)和軟件越多,誰(shuí)就能更高效的解決問題。于是工程師們開始借助互聯(lián)網(wǎng)外腦工具:尤其是搜索引擎、書簽、github、scihub等 而工程師們解決問題的能力就體現(xiàn)在了對(duì)外腦工具的利用上。但是,隨著工程師們要解決的問題增長(zhǎng)以及自身知識(shí)的積累,外腦工具也逐漸變得臃腫:書簽越來越多,github的訂閱越來越多,多到最后就約等于沒有書簽、沒有訂閱了。為了解決這些問題,我們需要更智能靈活的外腦工具,能讓我們從信息的海洋中解放出來,讓我們能更加專注自身業(yè)務(wù)。

GitHub 消息的問題

如何用 Python 制作 GitHub 消息助手

有沒有發(fā)現(xiàn)你的 Github 消息 Inbox 過幾天不處理,就會(huì)堆積成山呢?相信有的同學(xué) Inbox 里的數(shù)字比這個(gè)還要夸張,甚至有的同學(xué)已經(jīng)絕望的放棄了 Inbox 這個(gè)功能。為什么會(huì)這樣?因?yàn)槊總€(gè)Coder內(nèi)心大多都會(huì)喜歡收藏喜愛的作品,而github的項(xiàng)目主頁(yè)右上角最醒目的位置總是擺著這三個(gè)按鈕:

如何用 Python 制作 GitHub 消息助手

相信工程師們看到喜愛的項(xiàng)目,就會(huì)毫不猶豫的一鍵三連:watch、start、fork。悲劇也就從這里開始了。1、工程師喜歡的項(xiàng)目越來越多;2、項(xiàng)目會(huì)有自己的生命周期,有的變得活躍,有的逐漸消亡;3、工程師越來越忙,無暇顧及Inbox。然后,Inbox就變這樣了:

如何用 Python 制作 GitHub 消息助手

看著滿是堆積的消息,是不是有種崩潰的感覺。那github的功能到底出了什么問題?我認(rèn)為是 watch、star、fork 需要工程師投入的關(guān)注程度搞錯(cuò)了。當(dāng)然現(xiàn)在github也在積極改進(jìn),相比以前,我們可以發(fā)現(xiàn)有了更多的 watch 選項(xiàng):

如何用 Python 制作 GitHub 消息助手

但是僅僅這些就夠了嗎?看著 Inbox 動(dòng)輒上萬條的消息,難道要將自己關(guān)注的項(xiàng)目一個(gè)個(gè)的修改為 Ignore?工程師的內(nèi)心依然是崩潰的!有沒有辦法拯救工程師的Inbox?有!來吧,自己動(dòng)手拯救我的收件箱。

解決方案

用 python 做一個(gè) GitHub 消息助手,自動(dòng)幫工程師關(guān)閉和刪除不必要的消息。這不也就是真正意義上的Watch嗎?你看它的時(shí)候,會(huì)接收它的信息,你不看了它就消失了。那么仔細(xì)想想,到底哪些消息真正對(duì)工程師有用呢?1、已經(jīng)很久沒更新的項(xiàng)目,是不是就可以不關(guān)注了?2、已經(jīng)不是工作范圍和興趣點(diǎn)的項(xiàng)目,是不是也可以不關(guān)注了?3、已經(jīng)很久都沒人反饋問題的項(xiàng)目,是不是也可以不關(guān)注了?而python有一個(gè)優(yōu)勢(shì)就是可以很方便的實(shí)現(xiàn)用戶操作的自動(dòng)化 嗯,看起來這些僵尸項(xiàng)目都可以用python自動(dòng)化的方式清除掉 說干就干,讓我們開始吧!

代碼實(shí)現(xiàn)

我們知道Python有一款很棒的Web自動(dòng)化測(cè)試框架:Selenium,但 Selenium 主要還是用于測(cè)試,調(diào)用還是略顯復(fù)雜。所以筆者在github上搜刮了一番,終于找到一款合適的Python包:PyChrome 項(xiàng)目地址:https://github.com/siversalih/pyChrome-Web-Automation下面我們就用這款非主流的自動(dòng)化工具包,完成我們的小助手 看主頁(yè),這個(gè)作者很懶,幾年前就沒有更新了,但幸好說明幫助還是挺全的:https://pychrome.wordpress.com/usage/所以我們就可以 happy 的按照說明書來組裝機(jī)器人了。

0.環(huán)境準(zhǔn)備

首先需要準(zhǔn)備Python 3.8環(huán)境,然后按照網(wǎng)上說明安裝 Selenium,接下來將PyChrome項(xiàng)目 clone到本地。ok,環(huán)境準(zhǔn)備完成。

1、模擬登錄github

使用PyChrome訪問github有個(gè)小麻煩,每次都會(huì)啟動(dòng)一個(gè)全新的Chrome瀏覽器實(shí)例。這就導(dǎo)致無法重復(fù)利用保存在本地的cookie信息,所以每次要模擬登陸下。github有一個(gè)特點(diǎn),如果ip變更,需要輸入驗(yàn)證碼,如果ip不變則不需要,所以第一次我們只能先手工輸入一次。

如何用 Python 制作 GitHub 消息助手

不過github的登錄頁(yè)面相對(duì)簡(jiǎn)單,只需要找到Username和password對(duì)應(yīng)的表單組件就可以了。所以登錄的代碼可以非常簡(jiǎn)潔,如下所示:

browser.open('https://github.com/login')# name='login'name_locator = '//*[@name=’login’]'el_name = browser.findElementByXPath(name_locator) browser.sendTextToElement(username, el_name) # name='password'pass_locator = '//*[@name=’password’]'el_pass = browser.findElementByXPath(pass_locator) browser.sendTextToElement(password,el_pass) login_locator = '//*[@name=’commit’]'el_login = browser.findElementByXPath(login_locator) browser.clickElement(el_login)2.模擬進(jìn)入Inbox

登錄完成后,我們需要進(jìn)入收件箱,查看到底有哪些未讀消息。收件箱有點(diǎn)小復(fù)雜,不過也還能很方便的區(qū)分。

如何用 Python 制作 GitHub 消息助手

找到了正確的xpath,相信定位也不是難事。這里我又取了個(gè)巧,我們被困擾的其實(shí)是有消息的項(xiàng)目,如果一個(gè)項(xiàng)目不發(fā)消息,我們其實(shí)也不會(huì)被騷擾到。所以直接選取左下角的 Repositories 區(qū)域似乎效率更高一些。代碼如下:

browser.open('https://github.com/notifications')# 獲取有消息的Repositories列表locator = 'js-notification-sidebar-repositories'el_repos = browser.findElementByClass(locator) repos_list = browser.findElementsByTag('li', el_repos)3.檢查僵尸項(xiàng)目

我選用第三條策略,已經(jīng)很久沒人反饋問題的項(xiàng)目作為判斷僵尸項(xiàng)目的標(biāo)準(zhǔn)(純粹只是因?yàn)榉奖銓?shí)現(xiàn)),首先訪問issue,然后判斷issue里的更新日期,恰好有一個(gè)詳細(xì)的日期字段。下面代碼目的很簡(jiǎn)單,就是獲取最后一條issue更新了多久。

browser.newTab('https://github.com/' + repos_name + '/pulls?q=') # 判斷最近的 pull request locator = '//div[@aria-label=’Issues’]' el_pulls = browser.findElementByXPath(locator) pull_list = browser.findElementsByTag('relative-time', el_pulls) timedelta = 0 if type(pull_list)==list and len(pull_list)>0:# 2020-11-10T00:55:39Z# last_pull_time_str = pull_list[0].getAttribute('datetime')last_pull_time_str = pull_list[0].get_attribute('datetime')last_time = datetime.strptime(last_pull_time_str, '%Y-%m-%dT%H:%M:%SZ')timedelta = (datetime.now() - last_time).days logger.debug(repos_name + ' timedelta: ' + str(timedelta) + ' days')4.取消關(guān)注僵尸項(xiàng)目

如果issue已經(jīng)超過了1年,自然就應(yīng)該取消關(guān)注了,畢竟目前信息更新的速度太快了。

# 取消不活躍項(xiàng)目的訂閱(1年以上沒有pull request)if unsubscribe and timedelta > 366: el_notify_button =browser.findElementsByTag('notifications-list-subscription-form') browser.clickElement(el_notify_button) time.sleep(1) # data-target='notifications-list-subscription-form.menu' locator = '//*[@data-target=’notifications-list-subscription-form.menu’]' el_notify_menus = browser.findElementByXPath(locator) # value='ignore' sub_locator = '//*[@value=’ignore’]' el_ignore_button =browser.findElementByXPath(sub_locator, el_notify_menus) browser.clickElement(el_ignore_button) logger.debug(repos_name + ' cancel subscribed')5.刪除僵尸項(xiàng)目消息

最后,該是解除困擾的時(shí)候了,這種不再更新的項(xiàng)目,工程師自然也不要再被它的消息騷擾。

el_repos_link = browser.findElementByTag('a', repos) browser.clickElement(el_repos_link) # mr-1 js-notifications-mark-all-prompt time.sleep(1) el_sel_all =browser.findElementByClass('js-notifications-mark-all-prompt') browser.clickElement(el_sel_all) time.sleep(1) # title='Done' done_locator = '//*[@title=’Done’]' el_done = browser.findElementByXPath(done_locator) browser.clickElement(el_done) logger.debug(repos_name + ' remove notifiy')

以上代碼就是模擬 Done 按鈕的操作:

如何用 Python 制作 GitHub 消息助手

到這里就完成了GitHub消息助手的全部邏輯,整個(gè)Inbox終于清靜了,是不是可以喝杯咖啡愜意一下了。

如何用 Python 制作 GitHub 消息助手

后記

Python自動(dòng)化工具的確是給工程師們帶來了便捷,使得工程師能應(yīng)對(duì)各種日常不同的挑戰(zhàn)。為方便各位工程師小伙伴們?cè)缛战饷?、得償所愿,以上代碼已開源,完整的代碼地址:https://gitee.com/knifecms/puppetry/blob/master/github-agent/resp_notify.py另外,該項(xiàng)目下,還有幾個(gè)其他有意思的自動(dòng)化助手和工具喲,大家感興趣的話也可以研究研究。希望得到你的更多好點(diǎn)子!

以上就是如何用 Python 制作 GitHub 消息助手的詳細(xì)內(nèi)容,更多關(guān)于Python 制作 GitHub 消息助手的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩在线观看视频小说| 伊人久久成人| 蜜桃91丨九色丨蝌蚪91桃色| 一本一道久久a久久精品蜜桃| 久久精品一区二区不卡| 日韩精品首页| 国产在线成人| 免费视频亚洲| 亚洲一区二区网站| 亚洲图片久久| 国产日产一区| 精品国产不卡一区二区| 日本一区二区高清不卡| 在线天堂中文资源最新版| 成人国产精品一区二区免费麻豆| 久久精品国产久精国产| 国内精品亚洲| 国产 日韩 欧美一区| 婷婷激情久久| 日韩精品一二三区| 日韩超碰人人爽人人做人人添| 欧美日韩在线精品一区二区三区激情综合| 国产欧美三级| www在线观看黄色| 美女少妇全过程你懂的久久| 男女精品网站| 国产麻豆一区| 日韩欧美一区二区三区在线观看 | 中文在线日韩| 国产日韩一区| 美女网站视频一区| 亚洲一区二区三区免费在线观看 | 国产亚洲精aa在线看| 精品成av人一区二区三区| 久久国产主播| 日韩一区二区三区精品视频第3页| 国产精品网址| 久久国产中文字幕| 亚洲专区一区| 欧美日韩一区二区三区四区在线观看| 精品网站aaa| 黄色亚洲大片免费在线观看| 日韩精品欧美大片| 精品三区视频| 在线一区免费| 国产免费av国片精品草莓男男| 色一区二区三区| 美女精品一区| 精品三级av在线导航| 亚洲深夜福利| 国产精品4hu.www| 国产精品97| 国产精品网站在线看| 久久久久亚洲| 日本视频中文字幕一区二区三区| 亚洲黄色网址| 亚洲精品三级| 日韩av首页| 91精品国产一区二区在线观看| av亚洲一区二区三区| 日韩av黄色在线| 欧美一区三区| 免费精品一区| 一本综合精品| 久久婷婷丁香| 国产精品啊啊啊| 国产精品普通话对白| 精品日本视频| 色综合视频一区二区三区日韩 | 国产一区二区三区不卡av| 久久国产精品毛片| 黑人精品一区| 国产日韩欧美三区| 久久99伊人| 麻豆精品蜜桃| 久久wwww| 亚洲精品激情| 美女毛片一区二区三区四区| 欧美成人一二区| 中文字幕亚洲影视| 99成人在线视频| 精品网站999| 亚洲人成网站在线在线观看| 香蕉精品999视频一区二区| 国产中文在线播放| 国产欧美一区二区三区精品观看| 欧美91福利在线观看| 水蜜桃久久夜色精品一区| 欧美一区精品| 中文字幕日韩亚洲| 亚洲黄色影院| 亚洲91久久| 久久精品国产免费| 国产美女亚洲精品7777| 日精品一区二区三区| 欧美日韩日本国产亚洲在线| 伊伊综合在线| 国产精品色在线网站| 最新国产精品视频| 国产亚洲午夜| 婷婷久久一区| 精精国产xxxx视频在线野外| 精品国产一区二区三区性色av| 69堂免费精品视频在线播放| 蜜桃久久久久久久| 黑丝一区二区三区| 亚洲一级影院| 日韩精品首页| 久久婷婷丁香| 国产99久久久国产精品成人免费| 伊人久久av| 色偷偷色偷偷色偷偷在线视频| 麻豆精品在线观看| 久久99久久久精品欧美| 国产欧美高清视频在线| 日韩av资源网| 中文一区一区三区免费在线观| 99在线观看免费视频精品观看| 欧美91精品| 亚洲综合日韩| 在线免费观看亚洲| 亚洲制服欧美另类| 日韩精品免费视频人成| 日本午夜精品视频在线观看| 日韩av电影一区| 国产精品宾馆| 久久久久久夜| 女生影院久久| 91精品国产乱码久久久久久久| 999精品色在线播放| 伊人久久成人| 免费在线成人网| 中文字幕亚洲精品乱码| 日本强好片久久久久久aaa| 国产欧美精品| 福利一区二区| 蜜桃一区二区三区| 免费精品视频最新在线| 日韩av三区| 国产91在线精品| 999精品在线| 男女性色大片免费观看一区二区 | 麻豆视频久久| 日韩在线精品| 91精品高清| 蜜臀久久久99精品久久久久久| 亚洲欧洲国产精品一区| 国产日韩三级| 色在线视频观看| 国产精品嫩草99av在线| 亚洲欧洲专区| 精品高清久久| 婷婷精品进入| 日韩av一级片| 高清一区二区三区av| 欧美亚洲国产精品久久| 亚洲精品美女91| 精品91福利视频| 免费成人网www| 日韩1区2区3区| 国产成人黄色| 国产亚洲毛片| 国产精品777777在线播放| 香蕉成人av| 亚洲三级在线| 欧美激情网址| 在线亚洲一区| 国产精品一区二区三区av麻| 国产综合色区在线观看| 国产一区二区精品| 国产剧情一区| 亚洲高清久久| 青青草精品视频| 国产精品99一区二区三区| 欧美99久久| 国产精品视频一区二区三区综合| 精品国产麻豆| 亚洲一区二区动漫| 免费一区二区三区在线视频| 99热精品久久| 日日夜夜免费精品| 亚洲播播91| 欧美日韩亚洲国产精品| 神马午夜久久| 国产欧美一区二区三区精品观看 | 精品国产a一区二区三区v免费| 夜夜嗨一区二区| 久久久91麻豆精品国产一区| 一区三区视频| 精品一区二区三区中文字幕 | 欧美成人基地| 欧美日韩一区二区三区不卡视频| 久久精品动漫| 国产极品久久久久久久久波多结野| 久久在线电影| 久久精品国产精品亚洲毛片| 先锋影音久久久| 九色porny丨国产首页在线| 欧美一区=区三区| 欧美专区18|