关键词:
今天开头我想叨叨几句,我个人最近的感受。在这个信息爆炸,互联网的时代里。我的周遭总是充斥者着各种让人能产生焦虑的信息,
我不知道有没有小伙伴和我一样,看到各种神通广大、游戏人生的大侠,低头看看自己当前的处境和生活,默默的叹了口气。
我很长一段时间都处于被信息轰炸的焦虑中,感觉自己没有什么值得称赞的成就,自己再努力也追赶不上。就像那种要做的事情太多,无从下手,索性就随他去了,
但是什么都不做导致要做的事情越来越多,从而会更加焦虑。这样的状态持续 2 个月,偶然的机会下我发现然了一个缓解这种压力的办法——读书。
你的问题主要在于读书不多而想得太多。——杨绛
技术的书籍有些啃不下去了,我就去看了《飞鸟集》好像真的平静了一些。减少了获取各种信息的途径,从书里看看智者眼睛里的世界。
When we rejoice in our fullness, then we can part with our fruits with joy.
当我们从追求充实中找到快乐时,便能愉快地和以结果为目的分手了。——《飞鸟集》
专注的做自己眼下、手上的事情,投入宝贵的时间,让时间把平凡的事情变得不平凡。我觉得快乐总来的很慢,但它永远不会缺席。
作者:HelloGitHub-卤蛋
一、介绍
好了,以上就是我的心路历程和一些笨拙的经验。下面开始我们的正题吧:
项目地址:
今天推荐一个 GitHub 上开源的 Mac OSX Menu Bar 工具:BitBar,它可以载入各种类型的脚本输出信息。比如在 Menu Bar 上监控 GitHub 上的 Star 数量,展示的信息完全取决于你写的脚本。
它有多香,容我慢慢道来。先看一张效果图:
二、上手
-
解压
-
下载 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 的标准库。
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/repos/用户名/项目名称
- 获取首页的信息流:https://api.github.com/users/用户名/received_events
比如 HelloGitHub 项目:
- https://api.github.com/repos/521xueweihan/HelloGitHub
- https://api.github.com/users/521xueweihan/received_events
通过命令行先验证下 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 运行
-
首先创建一个目录,然后把写好的脚本放进去,脚本的命名规则:
名称.运行间隔.文件后缀
,比如:GitHub.30m.py 每半个小时执行一次。 -
然后然后给脚本增加执行权限,命令:
chmod +x 文件名
。(重要) -
最后点击 BitBar 的
Choose Plugin Folder
,选择脚本所在的目录。
-
Refresh all
手动刷新一下,最终效果如下:
四、结尾
由于时间仓促,我只写了一个展示 GitHub 项目 star 的简单示例。有兴趣的小伙伴可以自己动手编写、定制自己关心信息的数据脚本。
好了,今天的项目你还满意吗?还想看那些项目欢迎留言告诉我~
HelloGitHub 交流群现已全面开放,添加微信号:HelloGitHub 为好友入群,可同前端、Java、Go 等各界大佬谈笑风生、切磋技术~
50.8kstar,工作学习效率利器!(代码片段)
哈喽,大家好,我是开源君,一个资深的互联网玩家,致力于为大家分享各领域优质开源项目。今天给大家推荐的项目是awesome系列里面的awesome-machine-learning,可能有些小伙伴对awesome类型的项目不是很熟悉,其... 查看详情
增长黑客-开源项目增长利器
2012年我开源了自己的第一个项目https://github.com/allwefantasy/ServiceFramework,这个项目并不成功,但对我个人的价值还是比较大的,一直作为我工具箱用到现在。从16年开始,我全身心的投入到[Byzer](https://github.com/byzer-org)项... 查看详情
实用的开源百度云分享爬虫项目yunshare-安装篇
今天开源了一个百度云网盘爬虫项目,地址是https://github.com/callmelanmao/yunshare。百度云分享爬虫项目github上有好几个这样的开源项目,但是都只提供了爬虫部分,这个项目在爬虫的基础上还增加了保存数据,建立elasticsearch索引的... 查看详情
分享几个适合新手的c/c++开源项目
分享几个适合新手的C/C++开源项目今天主要给大家分享一些github内适合初学者练手的c/c++开源项目。所有项目均提供项目下载地址,无法使用github的读者,也可以在文末进行获取项目一:C-Plus-Plus项目介绍C-... 查看详情
restful接口调试分享利器restc
这个工具来自于https://elemefe.github.io/restc/ 这里对Abp进行了一次封装 1.在项目中添加nuget包Abp.Web.Api.Restc2.在项目Abp模块的DependsOn添加AbpWebApiRestcModuleRunIt,启动项目,访问/api开头的restful接口,原先正常返回的干巴巴JSON数据变... 查看详情
读书几年收藏的编程利器网站,给大家分享出来(代码片段)
前言大家好,我是bigsai,今天给大家分享几个非常适合程序员编程学习的网站。工欲善其事,必先利其器,有好的武器才能打更好的仗,今天给大家分享一些程序员学习必备的编程学习网站。像谷歌、知乎、B... 查看详情
超全的开源winformui库,满足你的一切桌面开发需求!(代码片段)
...长整理网址:https://dotnet9.com/本站曾介绍过一款Winform开源控件库HZHControls,Winform在大家心中的地位还是挺高的,今天小编再分享一款新鲜出炉的WinformUI库——SunnyUI,一起跟Dotnet9往下看吧。项目名称:SunnyUI项... 查看详情
十大开源swift库开始你的下一个ios项目
随着Swift变得更加成熟,开源Swift库变得越来越多样化并且数量迅速增长。在本文中,我策划了可用于引导您的下一个iOS项目的最佳开源Swift库。它们将使您的代码库更加强大,性能更高,并允许您 更快地发布iOS项目。事实上... 查看详情
flask:10-项目部署(02):让更多的朋友访问你的装逼利器(代码片段)
项目部署WEB工作原理客户端(chrom)<=>WEB服务器(nginx)<=>WSGI(uWSGI)<=>Python(Flask)<=>数据库(MySQL)Flask框架自带一个测试服务器,开发时直接运行即可;但是在生成环境中,必须进行完整部署。nginx服务器安装:sudoapt-getins... 查看详情
.net平台开源项目速览(17)fluentconsole让你的控制台酷起来
从该系列的第一篇文章.NET平台开源项目速览(1)SharpConfig配置文件读写组件 开始,不知不觉已经到第17篇了。每一次我们都是介绍一个小巧甚至微不足道的.NET平台的开源软件,或者学习,或者使用,或者介绍... 查看详情
国内优秀的java开源saas项目分享(代码片段)
国外的优秀开源项目没啥好说的,支持国产,今天重点聊聊国内优秀的Java开源项目。在国内开源项目做得最好的莫非于阿里巴巴了,今天特地给大家整理了阿里的11个神级项目。最后还有一个java全开源的saas新零售小... 查看详情
如何选择开源项目?
...也是因为最近不少人给我留言说「张哥,现在我接触到了开源社区,发现不少开源项目,但是却不知道如何选择应用到自己的项目上?」这个问题比较好,相信不少人都有这样的疑问,且听我细细给大家说来。什么是开源?「开... 查看详情
x100个项目彻底精通java!开源
为了帮助更多的小伙伴,快速成长进步,冲进大厂中厂,我分享了很多的项目哟,例如:java项目精品实战案例|JavaSwing实战项目但很多小伙伴,还觉得不够,好吧!今天就拿出压箱底的项目,给支持我的粉丝朋... 查看详情
读书几年收藏的编程利器网站,给大家分享出来(代码片段)
前言大家好,我是bigsai,今天给大家分享几个非常适合程序员编程学习的网站。工欲善其事,必先利其器,有好的武器才能打更好的仗,今天给大家分享一些程序员学习必备的编程学习网站。像谷歌、知乎、B... 查看详情
读书几年收藏的编程利器网站,给大家分享出来(代码片段)
前言大家好,我是bigsai,今天给大家分享几个非常适合程序员编程学习的网站。工欲善其事,必先利其器,有好的武器才能打更好的仗,今天给大家分享一些程序员学习必备的编程学习网站。像谷歌、知乎、B... 查看详情
这5个app开源了!
推荐几个不错的实战开源项目,可以用来学习练手,积累项目实战经验。今天要推荐的项目是:1. 食谱管理 App2. 在线视频App3.极客日报App4.在线电影App5.在线文档管理系统01. 食谱管理App推荐一个用于管理食谱、计划... 查看详情
「开源」springboot快速开发框架推荐,接私活利器
参考技术A本期为大家精选了码云上优秀的SpringBoot语言开源项目,涵盖了企业级系统框架、文件文档系统、秒杀系统、微服务化系统、后台管理系统等,希望能够给大家带来一点帮助:)1、项目名称:分布式敏捷开发系统架构项... 查看详情
go调试利器-delve(代码片段)
...学习,一起成长。今天小栈君带来的分享是go语言的调试利器DELVE。关于delve工具的介绍,这里简单给大家介绍一下。delve在go项目及应用的开发中可以用来追踪程序中的异常代码,也可以通过打日志的方式追查问题,但是更重要... 查看详情