PyGithub



2019年11月17日    Author:Guofei

文章归类: 建站日志    文章编号:

版权声明:本文作者是郭飞。转载随意,标明原文链接即可。本人邮箱
原文链接:https://www.guofei.site/2019/11/17/pygithub.html


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)

一些图标

PyPI GitHub All Releases

release Build Status codecov License Python

PyPI_downloads Stars Forks Join the chat at https://gitter.im/guofei9987/scikit-opt


您的支持将鼓励我继续创作!