婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 如何用 Python 制作 GitHub 消息助手

如何用 Python 制作 GitHub 消息助手

熱門標簽:申請辦個400電話號碼 深圳網絡外呼系統代理商 高德地圖標注字母 鎮江人工外呼系統供應商 騰訊地圖標注有什么版本 外呼系統前面有錄音播放嗎 千呼ai電話機器人免費 柳州正規電銷機器人收費 400電話辦理費用收費

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

GitHub 消息的問題

有沒有發現你的 Github 消息 Inbox 過幾天不處理,就會堆積成山呢?相信有的同學 Inbox 里的數字比這個還要夸張,甚至有的同學已經絕望的放棄了 Inbox 這個功能。
為什么會這樣?
因為每個Coder內心大多都會喜歡收藏喜愛的作品,而github的項目主頁右上角最醒目的位置總是擺著這三個按鈕:

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

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

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

解決方案

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

代碼實現

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

0.環境準備

首先需要準備Python 3.8環境,然后按照網上說明安裝 Selenium,接下來將PyChrome項目 clone到本地。ok,環境準備完成。

1、模擬登錄github

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

不過github的登錄頁面相對簡單,只需要找到Username和password對應的表單組件就可以了。所以登錄的代碼可以非常簡潔,如下所示:

browser.open("https://github.com/login")
# name="login"
name_locator = "http://*[@name='login']"
el_name = browser.findElementByXPath(name_locator) 
browser.sendTextToElement(username, el_name) 
# name="password"
pass_locator = "http://*[@name='password']"
el_pass = browser.findElementByXPath(pass_locator) 
browser.sendTextToElement(password,el_pass) 
login_locator = "http://*[@name='commit']"
el_login = browser.findElementByXPath(login_locator) 
browser.clickElement(el_login)

2.模擬進入Inbox

登錄完成后,我們需要進入收件箱,查看到底有哪些未讀消息。收件箱有點小復雜,不過也還能很方便的區分。

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

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.檢查僵尸項目

我選用第三條策略,已經很久沒人反饋問題的項目作為判斷僵尸項目的標準(純粹只是因為方便實現),首先訪問issue,然后判斷issue里的更新日期,恰好有一個詳細的日期字段。下面代碼目的很簡單,就是獲取最后一條issue更新了多久。

    browser.newTab("https://github.com/" + repos_name + "/pulls?q=")
    # 判斷最近的 pull request
    locator = "http://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.取消關注僵尸項目

如果issue已經超過了1年,自然就應該取消關注了,畢竟目前信息更新的速度太快了。

# 取消不活躍項目的訂閱(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 = "http://*[@data-target='notifications-list-subscription-form.menu']"
    el_notify_menus = browser.findElementByXPath(locator) 
    # value="ignore"
    sub_locator = "http://*[@value='ignore']"
    el_ignore_button =browser.findElementByXPath(sub_locator, el_notify_menus) 
    browser.clickElement(el_ignore_button) 
    logger.debug(repos_name + " cancel subscribed")

5.刪除僵尸項目消息

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

    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 = "http://*[@title='Done']"
    el_done = browser.findElementByXPath(done_locator) 
    browser.clickElement(el_done) 
    logger.debug(repos_name + " remove notifiy")

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

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

后記

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

以上就是如何用 Python 制作 GitHub 消息助手的詳細內容,更多關于Python 制作 GitHub 消息助手的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • python 模擬登陸github的示例
  • Python基于Webhook實現github自動化部署
  • GitHub上值得推薦的8個python 項目
  • Python 通過爬蟲實現GitHub網頁的模擬登錄的示例代碼
  • Python3以GitHub為例來實現模擬登錄和爬取的實例講解
  • python requests模擬登陸github的實現方法
  • 使用Python快樂學數學Github萬星神器Manim簡介
  • 如何利用Python模擬GitHub登錄詳解
  • 使用GitHub和Python實現持續部署的方法
  • GitHub 熱門:Python 算法大全,Star 超過 2 萬
  • 使用 Python 玩轉 GitHub 的貢獻板(推薦)
  • Python爬蟲使用腳本登錄Github并查看信息
  • Python基于identicon庫創建類似Github上用的頭像功能
  • python使用心得之獲得github代碼庫列表

標簽:平頂山 郴州 合肥 大慶 哈爾濱 烏蘭察布 海南 烏蘭察布

巨人網絡通訊聲明:本文標題《如何用 Python 制作 GitHub 消息助手》,本文關鍵詞  如,何用,Python,制作,GitHub,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《如何用 Python 制作 GitHub 消息助手》相關的同類信息!
  • 本頁收集關于如何用 Python 制作 GitHub 消息助手的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    中文字幕免费一区| 欧美老女人在线| 日韩精品中文字幕一区| 精品国产伦一区二区三区观看方式 | 精品一区二区三区欧美| 亚洲久草在线视频| 一级特黄大欧美久久久| 久久99精品一区二区三区三区| 日韩一卡二卡三卡| 99国产麻豆精品| 成人毛片视频在线观看| av不卡一区二区三区| 中文在线资源观看网站视频免费不卡| 日本欧美一区二区在线观看| 国产精品对白交换视频| 久久综合久久综合亚洲| 在线成人免费视频| 国产精品66部| 99久久99久久综合| 国产拍欧美日韩视频二区| 日本一区二区三区在线不卡| 国产三级精品三级在线专区| 亚洲男人的天堂在线aⅴ视频| 一区在线观看免费| 国产久卡久卡久卡久卡视频精品| 国产一区二区三区久久久| 国产电影一区二区三区| 99国产精品久久久久久久久久| 欧美亚洲国产一区二区三区va | 一区二区视频在线看| 日韩av在线免费观看不卡| 国产精品久99| 91视频一区二区| 色偷偷久久一区二区三区| 国产精品一区二区你懂的| 国产传媒一区在线| 久久一区二区三区国产精品| 国产九色sp调教91| 亚洲视频免费看| 91精品欧美综合在线观看最新| 久久成人免费电影| 亚洲欧美国产77777| 亚洲欧美中日韩| 国产精品一区二区无线| 中文字幕 久热精品 视频在线 | 91福利在线观看| 亚洲午夜精品17c| 日韩午夜电影av| 国产一区二区三区黄视频 | 亚洲aⅴ怡春院| 欧美日韩精品一区二区天天拍小说 | 不卡大黄网站免费看| 18欧美亚洲精品| 欧美日韩一卡二卡三卡| 久久奇米777| 91精品91久久久中77777| 亚洲免费在线电影| 91丨porny丨中文| 国产v综合v亚洲欧| 免费欧美在线视频| 中文字幕一区二区在线观看 | 国产在线精品免费av| 人禽交欧美网站| 国产一区二区不卡老阿姨| 日韩和欧美一区二区三区| 美女视频免费一区| 最新日韩av在线| 国产精品美女久久久久久久久| 国产午夜精品一区二区三区四区| 精品久久99ma| 欧美激情一区二区三区| 亚洲欧美在线高清| 亚洲二区在线视频| 国产做a爰片久久毛片| 从欧美一区二区三区| 99久久婷婷国产精品综合| 欧美亚洲一区二区在线| 欧美v亚洲v综合ⅴ国产v| 亚洲欧美日韩人成在线播放| 国产不卡免费视频| 日韩激情在线观看| 蜜桃久久久久久| 麻豆91精品91久久久的内涵| 日本在线不卡一区| 日本美女视频一区二区| 亚洲国产激情av| 亚洲一区二区三区在线看| 亚洲中国最大av网站| 午夜精品视频一区| 蜜臀av一区二区| 高潮精品一区videoshd| 色中色一区二区| 欧美日韩亚洲高清一区二区| 精品国产一区久久| 欧美精品一区在线观看| 国产精品三级电影| 1024成人网| 国产在线精品视频| 在线观看日产精品| 日韩精品电影在线| 日本一区二区三级电影在线观看| 久久久久青草大香线综合精品| 欧美亚洲愉拍一区二区| 国产揄拍国内精品对白| 欧美一级片在线观看| 五月天激情综合| 欧美视频中文一区二区三区在线观看| 国产午夜精品福利| 国内精品写真在线观看| 3d成人h动漫网站入口| 一区二区国产盗摄色噜噜| 久久精品一区二区三区不卡| 国产一区中文字幕| 极品少妇一区二区| 成人免费黄色在线| 欧美日韩国产免费一区二区| 在线日韩国产精品| 国产精品盗摄一区二区三区| 欧美精品日韩精品| 国产精品污网站| 粉嫩一区二区三区在线看| 欧美日韩你懂的| 亚洲综合色成人| 色综合久久久久久久| 国产欧美日韩综合精品一区二区| 婷婷激情综合网| 在线精品视频一区二区| 成人欧美一区二区三区视频网页| 日韩av不卡一区二区| 亚洲香蕉伊在人在线观| 91亚洲男人天堂| 日韩毛片高清在线播放| 捆绑调教一区二区三区| 精品久久久久久久久久久久包黑料| 青青草精品视频| 国产欧美精品在线观看| eeuss鲁一区二区三区| 亚洲自拍另类综合| 91久久国产最好的精华液| 蓝色福利精品导航| 日韩精品中午字幕| 免费成人在线网站| 日韩视频免费观看高清完整版| 久久99精品久久久久婷婷| 色8久久精品久久久久久蜜| 一区二区三区在线视频免费观看| 欧美一级片免费看| 国产高清在线观看免费不卡| 亚洲免费成人av| 日本不卡不码高清免费观看| 1024成人网| 久久久久久久综合色一本| 在线视频一区二区三| 丁香六月综合激情| 精品亚洲成a人| 一区二区三区鲁丝不卡| 中文字幕av不卡| 精品国产一区二区三区av性色| 欧美性xxxxx极品少妇| 国产高清在线精品| 国产呦萝稀缺另类资源| 狠狠色丁香久久婷婷综合_中 | 韩国成人福利片在线播放| 国产精品乱码一区二三区小蝌蚪| 欧美日本在线视频| 欧洲色大大久久| 午夜精品久久一牛影视| 91成人免费电影| 91视频com| 国产中文字幕一区| 福利一区在线观看| 在线视频亚洲一区| 欧美日韩大陆一区二区| 欧美电影在线免费观看| 欧美大片在线观看| 精品国产青草久久久久福利| 日韩美女在线视频| 中文字幕中文字幕在线一区| 久久亚洲精精品中文字幕早川悠里| 欧美r级电影在线观看| 国产精品国产自产拍高清av王其| 欧美日韩国产乱码电影| 天堂蜜桃91精品| 久久99深爱久久99精品| 国产一区二区三区观看| www.色精品| 日韩视频免费观看高清完整版 | jlzzjlzz国产精品久久| 99精品视频在线观看| 日韩精品在线一区| 亚洲精品免费电影| 国产91色综合久久免费分享| 欧美私人免费视频| 久久精品男人的天堂| 亚洲国产精品一区二区久久| 91亚洲精品久久久蜜桃| 国产精品美女久久久久高潮| 日韩成人一区二区| 91.xcao| 亚洲一区二区三区免费视频|