今天开头我想叨叨几句,我个人最近的感受。在这个信息爆炸,互联网的时代里。我的周遭总是充斥者着各种让人能产生焦虑的信息,
我不知道有没有小伙伴和我一样,看到各种神通广大、游戏人生的大侠,低头看看自己当前的处境和生活,默默的叹了口气。

我很长一段时间都处于被信息轰炸的焦虑中,感觉自己没有什么值得称赞的成就,自己再努力也追赶不上。就像那种要做的事情太多,无从下手,索性就随他去了,
但是什么都不做导致要做的事情越来越多,从而会更加焦虑。这样的状态持续 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/ 。

  • 获取项目信息的接口: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 requestREPO_NAME = "HelloGitHub" # 项目名
USER_NAME = "521xueweihan" # 用户名
TOKEN = "xxx" # TOKENdef 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_dictdef 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_countdef get_today_star():"""获取今日 star 增长数"""today_star_count = 0page = 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 = Falsebreak# 过滤指定项目的 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 += 1page += 1return today_star_countif __name__ == '__main__':try:star_count = get_star_count()today_star_count = get_today_star()print("{} 今日增长: {}✨共计:{}k												

开源利器分享:BitBar 坐看今天你的项目涨了多少star相关推荐

  1. 重启开源,分享无限--微软面试187题精选

    重启开源,分享无限--诚邀你加入微软面试187题的解题中 前期回顾 我想,只要是稍微浏览过我博客的朋友都知道,本博客内总体上大致分为两个部分的内容:1.算法(如十六个经典算法研究系列):2.面试与编程 ...

  2. 开源正在吞噬软件业?看开源的7大理念

    软件正在慢条斯理地吞噬世界,开源正在慢条斯理地吞噬软件业. 软件正在吞噬世界?是的,对于购物.吃饭.健身.交停车费都需要使用软件的年代,对于平均每人每天都要花费5到6个小时使用手机软件的年代,有什么理 ...

  3. 不同格式图片相互转换的开源库分享

    不同格式图片相互转换的开源库分享 一.背景 笔者在项目的开发中,需要调用windows下的COM接口SetIconLocation来实现桌面快捷方式.而我们项目中给定的图片格式为png格式,SetIc ...

  4. 微博十年:坐看江湖,搅动风云

    十年前的中国互联网,你的记忆中有什么? 2009年,我还在读大三,当时抱着对移动互联网的憧憬,先是到广东一家移动运营商实习,再到杭州一家互联网巨头实习,最后机缘巧合来到广州工作.现在回头去看,2009 ...

  5. qt 运动控制软件 界面_开源库分享----一款跨平台图形界面的百度网盘不限速客户端...

    pan-light pan-light 是一款不限速的百度网盘客户端, 基于 golang + Qt5 开发. 本项意义在于探究 golang 在图形界面客户端; web 服务端; 事件调度, web ...

  6. 笑对人生,坐看云起云落

    有时在想,生命里什么最重要?生命里什么才是我们追求的呢?--题记 有人说我要的是快乐.简单的生活,家庭的的美满,这就是快乐.快乐就是微笑,开心的看一场球赛,亲人的健康喜悦,朋友之间聚会的欢悦,甚至一次 ...

  7. Java开源技术分享交流群

    JAVA开源技术分享群 群号:551404618 [Java开源技术分享(群号551404618)][点击链接加入群聊[Java开源技术分享(群号551404618)] [点击链接加入群聊[Java开 ...

  8. h5app多功能商城源码可二开微信小程序商城开源版分享

    基于ThinkPhp6.0+uniapp 开发的一套新零售商城系统.集客户关系管理+营销电商系统,能够真正帮助企业基于微信公众号.小程序.wap.pc等,实现会员管理.数据分析,精准营销的电子商务管理 ...

  9. 条形码/二维码之开源利器ZXing图文介绍

    全文目录: 基本介绍 二维码(比如:QRCode)的编码和解码演示 条形码(比如:EAN-13)的编码和解码演示 [一]. 基本介绍 : 1-1. ZXing是一个开源Java类库用于解析多种格式的条 ...

最新文章

  1. Spring - @ControllerAdvice + @ExceptionHandler全局处理Controller层异常(转)
  2. mongoose小试牛刀
  3. Your shell has not been properly configured to use 'conda activate'
  4. Python 第三方模块之 matplotlib - 绘图库
  5. java中的四个指令_JAVA命令学习系列(四) ---- jstat
  6. TF2.0—tf.keras.layers.GaussianNoise
  7. reactor ---- 反应堆模型
  8. 春季个人训练赛 5(广工新生赛)
  9. 通达 oa 2017 mysql 密码,修改通达OA Mysql数据库密码
  10. vrep中接近开关与激光雷达
  11. Overfeat 笔记
  12. 基于LQR的车辆LKA算法设计
  13. 职场中该如何自学?看书/看视频
  14. win10系统许可证即将过期的解决方法
  15. LaTeX代码: 表格 ← 利用 tabular
  16. java pppoe_PPPoE拨号流程
  17. 让AI自己调整超参数,谷歌大脑新优化器火了,自适应不同任务,83个任务训练加速比经典Adam更快...
  18. AppUI常规设计颜色使用
  19. 黑马瑞吉外卖项目之套餐删除、起售、停售和批量删除、起售、停售菜品功能
  20. 《当代美术家》期刊简介及投稿要求

热门文章

  1. 青龙面板搭配诺兰nvjdc详细教程
  2. ECCV 2022 | 适用于分类,检测,分割的生成式知识蒸馏开源
  3. opencv-python中 boundingRect(cnt)以及cv2.rectangle用法
  4. 李宏毅ML2021 HW7 BERT-Question Answering
  5. 语音增强 理论与实践 pdf_初中英语语音教学策略研究 (结题报告)
  6. 计算机专业的文献翻译,计算机专业外文文献翻译
  7. 推荐很nice英文文献翻译软件
  8. 阿里巴巴大数据学院落地成都,计划5年培养2000名高端专业人才
  9. Arithmetic Slices 算术序列
  10. mysql按时间查询的优化_mysql按时间查询优化的方法