今天开头我想叨叨几句,我个人最近的感受。在这个信息爆炸,互联网的时代里。我的周遭总是充斥者着各种让人能产生焦虑的信息,

我不知道有没有小伙伴和我一样,看到各种神通广大、游戏人生的大侠,低头看看自己当前的处境和生活,默默的叹了口气。

我很长一段时间都处于被信息轰炸的焦虑中,感觉自己没有什么值得称赞的成就,自己再努力也追赶不上。就像那种要做的事情太多,无从下手,索性就随他去了,

但是什么都不做导致要做的事情越来越多,从而会更加焦虑。这样的状态持续 2 个月,偶然的机会下我发现然了一个缓解这种压力的办法——读书。

你的问题主要在于读书不多而想得太多。——杨绛

技术的书籍有些啃不下去了,我就去看了《飞鸟集》好像真的平静了一些。减少了获取各种信息的途径,从书里看看智者眼睛里的世界。

When we rejoice in our fullness, then we can part with our fruits with joy.

当我们从追求充实中找到快乐时,便能愉快地和以结果为目的分手了。——《飞鸟集》

专注的做自己眼下、手上的事情,投入宝贵的时间,让时间把平凡的事情变得不平凡。我觉得快乐总来的很慢,但它永远不会缺席。

作者:HelloGitHub-卤蛋

一、介绍

好了,以上就是我的心路历程和一些笨拙的经验。下面开始我们的正题吧:

项目地址:

https://github.com/matryer/bitbar

今天推荐一个 GitHub 上开源的 Mac OSX Menu Bar 工具:BitBar,它可以载入各种类型的脚本输出信息。比如在 Menu Bar 上监控 GitHub 上的 Star 数量,展示的信息完全取决于你写的脚本。

它有多香,容我慢慢道来。先看一张效果图:

二、上手

  1. 下载地址:https://github.com/matryer/bitbar/releases/tag/v1.9.2

  2. 解压

  3. 下载 plugins:https://getbitbar.com/plugins/BitBar

  4. 上面的插件是展示 BitBar 版本,效果展示:

这样整个程序就跑起来了,如果非程序员的话可以直接在第 3 步的官网上选择插件。下面我将写一个 Python 脚本用于获取 GitHub 的 star 数量,可以方便动态关注我的 HelloGitHub 项目 star 信息和增长。

三、编写脚本

因为我比较擅长 Python,所以我采用了 Python 脚本进行开发,当然 BitBar 支持很多语言比如:Ruby、JS、Go、Swift 等等。

先不考虑如何展示到 Menu Bar 部分,先解决如何获取 GitHub 上的项目 star。为了让整个过程简单不考虑环境,以下脚本将采用 Python 的标准库。

3.1 申请 GitHub token

想要通过 GitHub 接口获取数据必须要有一个 token,所以需要先在自己的 GitHub 上申请一个 token( https://github.com/settings/tokens/new ),什么额外的权限都不用勾选,然后点击最下面的 Generate token

然后把生成的 token 复制出来,保存好后面要用到的!

3.2 GitHub API

获取数据的方式采用 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
}

3.3 开始编码

上面接口和 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

3.4 通过 BitBar 运行

  1. 首先创建一个目录,然后把写好的脚本放进去,脚本的命名规则:名称.运行间隔.文件后缀,比如:GitHub.30m.py 每半个小时执行一次。

  2. 然后然后给脚本增加执行权限,命令:chmod +x 文件名(重要)

  3. 最后点击 BitBar 的 Choose Plugin Folder,选择脚本所在的目录。

  4. Refresh all 手动刷新一下,最终效果如下:

四、结尾

由于时间仓促,我只写了一个展示 GitHub 项目 star 的简单示例。有兴趣的小伙伴可以自己动手编写、定制自己关心信息的数据脚本。

好了,今天的项目你还满意吗?还想看那些项目欢迎留言告诉我~

HelloGitHub 交流群现已全面开放,添加微信号:HelloGitHub 为好友入群,可同前端、Java、Go 等各界大佬谈笑风生、切磋技术~

最新文章

  1. 替代jquery1.9版本以前的toggle事件函数(开关)
  2. 10月25日下午PHP静态、抽象、接口
  3. asp.net对cookie的操作
  4. 交互式报表和工作报表控件Stimulsoft Reports.Fx for Java
  5. trade 1.0 开源工具
  6. Javascript 排序数组或对象
  7. 第三十 访问财富进退自如 —Spring交易管理
  8. Virtualbox 复制 CentOS 虚拟机无法联网
  9. time元素定义的格式
  10. TensorFlow-Slim image classification library:TensorFlow-Slim 图像分类库
  11. H5分享功能
  12. PHP 批量操作删除,支持单个删除
  13. C# 获取Header中的token值
  14. 超级wifi
  15. 高效遍历匹配Json数据与双层for循环遍历Json数据
  16. [React] 02 - Intro: why react and its design pattern
  17. redis的key越来越多,对速度是否有影响
  18. 雷林鹏分享:C# 封装
  19. python记录_day14 内置函数二 迭代 二分法
  20. f5 irules

热门文章

  1. 关于MYSQL的查询时间段、删除数据、查询目标行的命令用法。
  2. bug的描述
  3. Linux下自己和自己用各种方法进行文件的上传下载
  4. Python实现二分法和黄金分割法
  5. VSCode + WSL 2 + Ruby环境搭建详解
  6. Lucene5多条件查询
  7. Linux上的Systemctl命令
  8. JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去…
  9. 组合注解(Annotation)
  10. el-switch 初始值(默认值)不能正确显示状态问题