今天开头我想叨叨几句,我我的最近的感觉。在这个信息爆炸,互联网的时代里。个人周遭老是充斥者着各类让人能产生焦虑的信息, 我不知道有没有小伙伴和我同样,看到各类神通广大、游戏人生的大侠,低头看看本身当前的处境和生活,默默的叹了口气。node
我很长一段时间都处于被信息轰炸的焦虑中,感受本身没有什么值得称赞的成就,本身再努力也追赶不上。就像那种要作的事情太多,无从下手,索性就随他去了, 可是什么都不作致使要作的事情愈来愈多,从而会更加焦虑。这样的状态持续 2 个月,偶然的机会下我发现然了一个缓解这种压力的办法——读书。python
你的问题主要在于读书很少而想得太多。——杨绛git
技术的书籍有些啃不下去了,我就去看了《飞鸟集》好像真的平静了一些。减小了获取各类信息的途径,从书里看看智者眼睛里的世界。程序员
When we rejoice in our fullness, then we can part with our fruits with joy.github
当咱们从追求充实中找到快乐时,便能愉快地和以结果为目的分手了。——《飞鸟集》web
专一的作本身眼下、手上的事情,投入宝贵的时间,让时间把平凡的事情变得不平凡。我以为快乐总来的很慢,但它永远不会缺席。json
做者:HelloGitHub-削微寒api
好了,以上就是个人心路历程和一些笨拙的经验。下面开始咱们的正题吧:app
项目地址:https://github.com/matryer/bitbarcurl
今天推荐一个 GitHub 上开源的 Mac OSX Menu Bar 工具:BitBar,它能够载入各类类型的脚本输出信息。好比在 Menu Bar 上监控 GitHub 上的 Star 数量,展现的信息彻底取决于你写的脚本。 它有多香,容我慢慢道来。先看一张效果图:
下载地址:https://github.com/matryer/bitbar/releases/tag/v1.9.2
解压
下载 plugins:https://getbitbar.com/plugins/BitBar
上面的插件是展现 BitBar 版本,效果展现:
这样整个程序就跑起来了,若是非程序员的话能够直接在第 3 步的官网上选择插件。下面我将写一个 Python 脚本用于获取 GitHub 的 star 数量,能够方便动态关注个人 HelloGitHub 项目 star 信息和增加。
由于我比较擅长 Python,因此我采用了 Python 脚本进行开发,固然 BitBar 支持不少语言好比:Ruby、JS、Go、Swift 等等。
先不考虑如何展现到 Menu Bar 部分,先解决如何获取 GitHub 上的项目 star。为了让整个过程简单不考虑环境,如下脚本将采用 Python 的标准库。
想要经过 GitHub 接口获取数据必需要有一个 token,因此须要先在本身的 GitHub 上申请一个 token( https://github.com/settings/tokens/new ),什么额外的权限都不用勾选,而后点击最下面的 Generate token
。
而后把生成的 token 复制出来,保存好后面要用到的!
获取数据的方式采用 GitHub API,文档地址:https://developer.github.com/v3/ 。
好比 HelloGitHub 项目:
经过命令行先验证下 token:curl -H "Authorization: token 你申请的 token" 请求的接口
curl -H "Authorization: token xxxx" https://api.github.com/repos/521xueweihan/HelloGitHub
{ "id": 580xxx, "node_id": "MDEwOlJlcG9xxxxxODAzOA==", "name": "HelloGitHub", "full_name": "521xueweihan/HelloGitHub", "private": false, ... "temp_clone_token": "", "allow_squash_merge": true, "allow_merge_commit": true, "allow_rebase_merge": true, "delete_branch_on_merge": false, "network_count": 4752, "subscribers_count": 2085 } 复制代码
上面接口和 token 都准备好了,下面就是编写脚本了。
#!/usr/bin/env python3
# -*- coding:utf-8 -*- # # Author : XueWeiHan # E-mail : 595666367@qq.com # Date : 2020-07-10 15:18 # Desc : BitBar GitHub Python plugin import json import datetime from urllib import request REPO_NAME = "HelloGitHub" # 项目名 USER_NAME = "521xueweihan" # 用户名 TOKEN = "xxx" # TOKEN def fetch_data(url): """ 请求、解析 GitHub API 函数 """ headers = { 'Accept': 'application/json, text/plain, */*', 'Authorization': 'token ' + TOKEN, } req = request.Request(url, headers=headers) # GET方法 response = request.urlopen(req).read() data = response.decode('utf-8') # 解析数据 info_dict = json.loads(data) return info_dict def get_star_count(): """ 获取 star 总数 """ url = "https://api.github.com/repos/{}/{}".format(USER_NAME, REPO_NAME) repo_info_dict = fetch_data(url) star_count = repo_info_dict["stargazers_count"] return star_count def get_today_star(): """ 获取今日 star 增加数 """ today_star_count = 0 page = 1 # 是不是今天事件的标识符 is_today_event = True # 今日事件用来判断事件事件 today = datetime.datetime.now().date() url = "https://api.github.com/users/{}/received_events".format(USER_NAME) url += "?page={}&per_page=200" while is_today_event: event_info_list = fetch_data(url.format(page)) for event_info in event_info_list: create_at_str = event_info["created_at"] create_at_obj = datetime.datetime.strptime( create_at_str, '%Y-%m-%dT%H:%M:%SZ') # 转化成北京时间的日期 create_at_date_obj = (create_at_obj + datetime.timedelta(hours=8)).date() # 判断是不是今天的事件 if create_at_date_obj < today: # 结束获取 is_today_event = False break # 过滤指定项目的 star 事件 if event_info["type"] == "WatchEvent" \ and event_info.get("payload", {}).get("action") == "started" \ and event_info.get("repo", {}).get("name") == USER_NAME + "/" + REPO_NAME: today_star_count += 1 page += 1 return today_star_count if __name__ == '__main__': try: star_count = get_star_count() today_star_count = get_today_star() print("{} 今日增加: {}✨共计:{}k🌟".format( REPO_NAME, today_star_count, int(star_count/1000))) except Exception as e: print("ERROR:{}".format(e)) 复制代码
脚本很简单,一个请求、解析 GitHub API 的方法,而后是获取项目的总 star 数和今日 star 增加。整个脚本能够直接拿来用,把最上面的几个常量参数写上本身的信息和 token 就好了,运行结果以下:
HelloGitHub 今日增加: 62✨共计:32k🌟
复制代码
首先建立一个目录,而后把写好的脚本放进去,脚本的命名规则:名称.运行间隔.文件后缀
,好比:GitHub.30m.py 每半个小时执行一次。
而后而后给脚本增长执行权限,命令:chmod +x 文件名
。(重要)
最后点击 BitBar 的 Choose Plugin Folder
,选择脚本所在的目录。
Refresh all
手动刷新一下,最终效果以下:
因为时间仓促,我只写了一个展现 GitHub 项目 star 的简单示例。有兴趣的小伙伴能够本身动手编写、定制本身关心信息的数据脚本。 好了,今天的项目你还满意吗?还想看那些项目欢迎留言告诉我~
关注公众号加入交流群