iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么用Python制作GitHub消息助手
  • 854
分享到

怎么用Python制作GitHub消息助手

2023-06-06 10:06:36 854人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章将为大家详细讲解有关怎么用python制作GitHub消息助手,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在互联网2.0时代,工程师解决业务问题主要依赖的是自己掌握的各种工具和软件伴随着席卷全球

这篇文章将为大家详细讲解有关怎么用python制作GitHub消息助手,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

互联网2.0时代,工程师解决业务问题主要依赖的是自己掌握的各种工具和软件伴随着席卷全球的开源浪潮,开源工具和软件也迅猛增长。工程师需要关注的技术和软件也随之越来越多,学习负担越来越大,大脑也越来越不够用。但工程师们也很无奈,因为谁掌握的技术和软件越多,谁就能更高效的解决问题。于是工程师们开始借助互联网外脑工具:尤其是搜索引擎、书签、github、scihub等 而工程师们解决问题的能力就体现在了对外脑工具的利用上。
但是,随着工程师们要解决的问题增长以及自身知识的积累,外脑工具也逐渐变得臃肿:书签越来越多,github的订阅越来越多,多到最后就约等于没有书签、没有订阅了。为了解决这些问题,我们需要更智能灵活的外脑工具,能让我们从信息的海洋中解放出来,让我们能更加专注自身业务。

GitHub 消息的问题

怎么用Python制作GitHub消息助手

有没有发现你的 Github 消息 Inbox 过几天不处理,就会堆积成山呢?相信有的同学 Inbox 里的数字比这个还要夸张,甚至有的同学已经绝望的放弃了 Inbox 这个功能。
为什么会这样?
因为每个Coder内心大多都会喜欢收藏喜爱的作品,而github的项目主页右上角最醒目的位置总是摆着这三个按钮:

怎么用Python制作GitHub消息助手

相信工程师们看到喜爱的项目,就会毫不犹豫的一键三连:watch、start、fork。
悲剧也就从这里开始了。
1、工程师喜欢的项目越来越多;
2、项目会有自己的生命周期,有的变得活跃,有的逐渐消亡;
3、工程师越来越忙,无暇顾及Inbox。
然后,Inbox就变这样了:

怎么用Python制作GitHub消息助手

看着满是堆积的消息,是不是有种崩溃的感觉。那github的功能到底出了什么问题?
我认为是 watch、star、fork 需要工程师投入的关注程度搞错了。当然现在github也在积极改进,相比以前,我们可以发现有了更多的 watch 选项:

怎么用Python制作GitHub消息助手

但是仅仅这些就够了吗?看着 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不变则不需要,所以第一次我们只能先手工输入一次。

怎么用Python制作GitHub消息助手

不过github的登录页面相对简单,只需要找到Username和password对应的表单组件就可以了。所以登录的代码可以非常简洁,如下所示:

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.模拟进入Inbox

登录完成后,我们需要进入收件箱,查看到底有哪些未读消息。收件箱有点小复杂,不过也还能很方便的区分。

怎么用Python制作GitHub消息助手

找到了正确的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 = "//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 = "//*[@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.删除僵尸项目消息

最后,该是解除困扰的时候了,这种不再更新的项目,工程师自然也不要再被它的消息骚扰。

    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消息助手的全部逻辑,整个Inbox终于清静了,是不是可以喝杯咖啡惬意一下了。

怎么用Python制作GitHub消息助手

关于“怎么用Python制作GitHub消息助手”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: 怎么用Python制作GitHub消息助手

本文链接: https://www.lsjlt.com/news/246548.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用Python制作GitHub消息助手
    这篇文章将为大家详细讲解有关怎么用Python制作GitHub消息助手,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在互联网2.0时代,工程师解决业务问题主要依赖的是自己掌握的各种工具和软件伴随着席卷全球...
    99+
    2023-06-06
  • 怎么用Python制作一个愚人节整蛊消息框
    这篇文章主要讲解了“怎么用Python制作一个愚人节整蛊消息框”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python制作一个愚人节整蛊消息框”吧!messageboxtkinter...
    99+
    2023-07-05
  • 制作一个串口助手 | python + pyqt5
    目录 一、背景 1.1、开发流程图 二、前提 2.1、关于环境 2.2、关于源码 三、步骤 3.1、使用pyqt创建一个.ui界面并生成.py文件 3.2、创建两个.py文件,一个用来继承ui界面生成的.py类,一个用来实现各种功能 3.3...
    99+
    2023-09-26
    python qt
  • python + pyqt5制作一个串口助手
    目录一、背景1.1、开发流程图二、前提2.1、关于环境2.2、关于源码三、步骤3.1、使用pyqt创建一个.ui界面并生成.py文件3.2、创建两个.py文件,一个用来继承ui界面生...
    99+
    2023-05-14
    python 串口助手 python pyqt5串口助手 python pyqt5
  • 利用Python制作一个愚人节整蛊消息框
    目录messagebox愚人节整蛊消息框尺寸messagebox tkinter.messagebox中封装了多种消息框,其输入参数统一为title, message以及其他参数。其...
    99+
    2023-05-14
    Python愚人节整蛊消息框 Python整蛊消息框 Python消息框
  • python消息中间件的作用是什么
    Python消息中间件的作用是在分布式系统中实现消息传递和通信。它充当了消息传递的中间人,负责接收和发送消息,并将消息传递给相应的组...
    99+
    2023-10-22
    python
  • Windows消息过滤机制怎么应用
    Windows消息过滤机制是指Windows操作系统对各种窗口消息进行过滤和处理的机制,可以用于实现各种功能和优化程序性能。下面是一...
    99+
    2024-02-29
    Windows
  • 怎么使用springboot + rabbitmq消息确认机制
    这篇文章主要介绍“怎么使用springboot + rabbitmq消息确认机制”,在日常操作中,相信很多人在怎么使用springboot + rabbitmq消息确认机制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-02
  • 如何使用CSS3来制作消息提醒框
    本篇内容主要讲解“如何使用CSS3来制作消息提醒框 ”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用CSS3来制作消息提醒框 ”吧!现代Web设计技术允许...
    99+
    2024-04-02
  • rabbitMQ怎么复制队列内消息
    要复制RabbitMQ队列内的消息,可以使用RabbitMQ的镜像队列功能。镜像队列功能可以将一个队列中的消息复制到多个节点上,以提...
    99+
    2024-02-29
    rabbitmq
  • Python中怎么读取 QQ 消息
    这期内容当中小编将会给大家带来有关Python中怎么读取 QQ 消息,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先安装必须的库pip install uiautomation然后 ...
    99+
    2023-06-16
  • 使用Python怎么制作一个信息轰炸工具
    本篇文章给大家分享的是有关使用Python怎么制作一个信息轰炸工具,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。准备阶段我们需要安装pyautogui调用库(在命令提示符下安装...
    99+
    2023-06-15
  • 怎么用Python查看微信撤回消息
    本篇内容主要讲解“怎么用Python查看微信撤回消息”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python查看微信撤回消息”吧!一、功能设计给大家来演示一下实现的功能。二、功能实现微信...
    99+
    2023-06-02
  • MQ消息队列怎么用
    本篇内容介绍了“MQ消息队列怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!消息生产失败一般来说,从生...
    99+
    2024-04-02
  • win10专注助手的作用是什么
    这篇文章主要介绍了win10专注助手的作用是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇win10专注助手的作用是什么文章都会有所收获,下面我们一起来看看吧。可以在游戏和办公中免打扰。可以更加让你专注工作...
    99+
    2023-07-01
  • 天气变冷了,用Python给爸妈制作一个天气提醒小助手
    天气慢慢变冷了,和父母聊天中得知,他们查看每天的天气预报不太方便,我记得小时候,每晚 19:30 左右,一家人都要守在电视机旁边收听第二天的天气情况。如今,对于我们年轻人来说,获取天气情况很方便,但是对于我们不擅长用手机的父母来说,还是很吃...
    99+
    2023-06-02
  • 手把手教你用python发送短消息(基于阿里云平台)
    本次是纯发送演示,一步步讲解如何让发送成功,后继会介绍与网站注册功能的结合运用,敬请关注“有只狗狗叫多多” 一、首先,注册阿里云账号一个,完成实名认证,然后在产品中找到短信服务,选择...
    99+
    2024-04-02
  • Java中消息队列的作用是什么
    这篇文章主要讲解了“Java中消息队列的作用是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中消息队列的作用是什么”吧!  这些接口之间耦合比较严重,每新增一个下游功能...
    99+
    2023-06-16
  • 使用python怎么制作一个学生信息管理系统
    使用python怎么制作一个学生信息管理系统?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究...
    99+
    2023-06-14
  • 怎么用Python语言的grpc实现消息传送
    这篇“怎么用Python语言的grpc实现消息传送”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用Python语言的gr...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作