今天最初我想叨叨几句,我个人最近的感受。在这个信息爆炸,互联网的时代里。我的周遭总是充满者着各种让人能产生焦虑的信息,
我不知道有没有小伙伴和我相同,看到各种三头六臂、游戏人生的大侠,垂} ? , I R l z , a头看看自己当时的境况和日子,静静的叹6 : F = h K J了口气。
我很长一段时刻都处于被信息轰炸的焦虑H s L m中,感觉自己没有什么值得I Y 6 H称赞的成就,自己再尽力也追赶不上。就像那种要做的事情太多,无L C s x从下手,干脆就随他去了,
可是什么都不做导致要做的事情越来越多,从而会愈加焦虑。这样的状态持续 2 个月,偶然的机会下我Z v 2 U # & %发现然了一个缓解这种压力的办法——读书。
你的问题首要在于读书不多而想得太多。——杨绛
技术的书本有些啃不下去了,我就去看了《飞鸟集》如同真的平{ % R }静了一些。减少了获! # ) w = G t取各种信息的途径,从书里看看智者眼睛里的世界。
When we rejoice in( q ] k f ~ our fullness, then we can part with our fruits with joy.
当我们从Z _ K U f L k _ i寻求充分中找到高兴时,便能愉快地和以结果为} / , s $ +意图分手了。——《飞鸟集》
专注的做自己眼下、手上的事情,投入名贵的时刻,让时刻把普通的事情变得不普通。我觉得高兴总来的很慢,但它永远不会缺席。
作者:HelloGi[ m NtHub-削微寒
一、介绍
好了,以上便是我的心路历程和一些蠢笨的经历。下面开端我们的正题吧:
项目q t k .地址:https://github.com/matryer/bitbar
今天引荐一个 GitHub 上开源的 Mac OSX Menu Bar 工具~ i c 9 P . L I h:BitBar,它能够载入各种类型的脚本输出信息。比方在 Menu Bar 上监控 GitHub 上的 Star 数量,v I K n展现的信息完全取决于你写的脚本。
它o A B V Y 5 0 R有多香,容我渐渐道来。先看一张作用图:
二、上手
-
下载地址:https://github.com/matryer/bo D | l witbar/R z t C i 4 7 breleases/tag/v1.9.2d ^ W x 5 w
-
解压
-
下载 plugins:https://gR ~ (etbitbar.com/plugins/Bite D P L C s cBar
-
上面的插件是展现 BitBar 版本,作用展现:
这样整个程序就跑起来了,假如非程序员的话能够直接在第 3 步的官网上挑选插件。下面我将写一个 Python 脚本用于获取 GitHub 的 star 数量,能够方便动态关注我的 HelloGitHub 项目 star 信息和添加。
三、编写脚本
因为我比较擅长 Py/ 4 V U 2 U rthon,所以我选用了 Python 脚本进行开发,当然 BitBar 支撑很多言语比方:Ruby、JS、Go、Swift 等等。
先不考虑怎么展现到 Menu BarV n @ E { ? 部分,先解决怎么获取 GitHub 上的项目 star。为了让整个过程简略不考虑环境,以下脚本将选用 Pyth. c ( ~ 5 + ]on 的规范库。
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/ 。
-
获取项目信息的接口:https://api.github.com/reposc V 8 8 8 * p/用户名/项目名称 -
获取主页的信息流:https://api.github.com/usersa L z G r D t/用户名/received_events
比方 HelloGitHub 项目:
-
https://api.github.com/reposS { p } ~/521xueweihan/HelloGitHub -
https://api.giL { e . ? 3 othub.com/users/521xueweihan/received_events] L – B Q . b D w
经过命令行先验证下 token:curl -H "Authorb E K Q o P ; ization: token 你恳求的 token" 恳求的接口
curl -H "Authorization: token xxxx" https://api.github.com` * 5 F/repos/521xueweihan/HelloGitHub
{
"id":# ] j 580xxx,
"node_id": 1 _ , b y # 3 U M"MDEwOlJlcG9xxxxxODAzOA==",
"name": "HelloGitHub",
"full_name": "521xueweihan/HelloGitHub",
"private": falG F : c ? $ { Pse,
...
"temp_clone_token": "",
"allow_squash_m# # X x E = j Perge": true,
"allow_merge_commit": true,
"allow_rebase_merge": true,
"delete_branch_on_merge": false,
"network_countN v # f 1 z": 47* y ? F52,
"subscribers_count": 2085c j { 0 O p
}
3.3 开端编码
上面接口和 token 都预备好h R 4 3 W了,下面便是编写脚本了。
#!/usr$ { 8 _ a u D 8 7/bin/env pi W 8 ] = z 5 dython3
# -*- 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" #d 5 @ 6 项目名
USk p , C A vER_NAME = "521xueweihan" #N s u j P e D 7 4 用户名
TO0 u t n 4 = kKEN = "xxx" # TOKEN
def fetch_data(url):
"""
恳求、解析 GitHub; A e k D API 函数
"""
headers = {
'Accept': h h c e ] #'application/jso( h Yn, 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)
returb x M : ] yn info_dict
def get_star_count():
"f O F 8 G =""
获取 star 总数
"""
url = "https://api.github.com/repos/{}/{}".format(USER_NAME, REPO_NAME)
repo_info_dict = fetch_data(url)
star_count = reB J y 5 } W 2po_info_dict["stargazers_count"]
return star_u { i J c c o p @count
def get_today_star():
"""
获取今天 star 添加数
"""
todaA = T }y_star_count = 0
page = 1
# 是否是今天事情的标识符
is_today_event = True
# 今天事情用来判断事情事情
today = datetime.datetime.now().date()
url = "https://api.github.com/users/{}/received_events".format(USER_W w V P * P , 7 &NAME)
url += "?page={}&at Z 5 Bmp;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 = d& T i g Ratetim2 . V p x M p Y Ue.date. | @time.strptime(
create_at_str, '%Y-%m-%dT%H: 5 N%M:%SZ')
# 转化成北京时刻的日期
create_at_date_obj = (create_at_obj + datetimeW - q $ % j k.timedelta(hours=8)).date()
# 判断是否是今天的事情
if create_at_date_obj < today:
# 结束获取
is_toda0 ` P + 7 E J r iy_event = False
break
# 过滤指定项意图 star 事情
if event_info["type"]G ( + r == "WatchEvent"
and event_info.get("payload", {D r @ J z 0}).get("ac2 ( E % [ tion") == "started"
and event_info.get("repo", {}).get("name"1 . b t _ S) == 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_f 3 i p . B ( %count = get_today_star()
print(", 9 U 7 = X Q G{} 今天添加: {}✨合计:{}k".% $ /format(
REPO_N~ 0 W m n X FAME, today_star_ _ Mcount, int(star_count/1000)))
except Exception as e:
prin[ h $ ) s jt("ERROR:{}".format(e))
脚本很简略g = + 6 a,一个恳求、解析 GitHub API 的方^ H S e E ; 6法,然后是获取项意图总 star 数和今天 star 添加。整个脚本能够直接拿来用,把最上面的几个常量参数写上自己的信息和 token 就行了,运行结果如下:
HelloGitHub 今天添加: 62✨合计:32k
3.4 经过 BitBar 运行
-
首先创立一个目录,然后把写好X C f : h a 4 M ^的脚本放进去,脚本的命名规矩:
名称.运行距离.文件后缀
,比方:GitH_ z xub.30m.py 每半个小时履行一次。 -
然后然后给脚本添加履行权限,命令:
cz d qhmod +x 文件名
。(重要) -
最后点击 BitBar 的
Choose Plugin Folder
,挑选脚本所在的目录。1 d )
-
Refresh all
手动刷新? 4 4 3 ( g一下,最终作用如下:
四、结尾
因为时刻匆促,我只写了一个展现 GitHub 项目 star 的简略示例。有爱好的小伙伴能够自己着手编写、定制自己关怀信息的数据脚本。
好了,今天的项目你还满意吗?还想看那些项目欢迎留言告诉我~
关注公众号参加沟通群