PyGithub
这个库让你可以用代码实现 GitHub 上的一切操作。
项目地址
文档地址
但是文档对很多功能都没写,我也是看源码才知道有些功能。所以记录下来。
获取接口
文档提供了3种获取数据接口:
- 帐号密码
- token(最实用)
- 自定义主页
这里就写 token 方式
token 获取
【右上角自己的头像】->【Settings】->【Developer settings】->【Personal access tokens】->【Generate new token】
或者直接点这个: https://github.com/settings/tokens/new
权限什么的看着选,不需要的权限最好不要勾
from github import Github
g = Github("你的token复制到这里")
user相关
user = g.get_user("guofei9987")
# 一些基础信息
user.name,user.bio,user.blog,user.collaborators,user.company,user.contributions
user.created_at,user.email,user.disk_usage
# api 相关
user.etag,user.events_url
# 社交相关
user.followers,user.followers_url,user.following,user.following_url
-
摘抄一些功能
issue
open_issues = repo.get_issues(state='open') # 'closed'
for issue in open_issues:
print(issue)
流量相关
repo.stargazers_count # 总 star 数量
repo.get_top_paths() # 点击量 Top10
repo.get_clones_traffic(per="day") # per="week" 近14天每个周期 clone 流量
repo.get_views_traffic(per="day") # per="week" 近14天,每个周期总点击量
小工具:star history
from github import Github
import matplotlib.pyplot as plt
import pandas as pd
def plot_star_history_cumcount(repo_name="guofei9987/scikit-opt", ax=None):
# get data
repo = g.get_repo(repo_name)
star_history = [[stargazer.user.login, stargazer.user.html_url, stargazer.starred_at]
for stargazer in repo.get_stargazers_with_dates()]
star_history = pd.DataFrame(star_history, columns=['login', 'html_url', 'time'])
star_history.set_index(keys='time', inplace=True)
# cumsum
star_history_cumsum = star_history.drop('html_url', axis='columns').resample(rule='d').count().cumsum()
star_history_cumsum.columns = [repo_name]
# plot
star_history_cumsum.plot(ax=ax)
g = Github("你的 token")
fig, ax = plt.subplots(1, 1)
plot_star_history_cumcount(repo_name="guofei9987/scikit-opt", ax=ax)
plot_star_history_cumcount(repo_name="guofei9987/reading", ax=ax)