你如何通过Githubs API v4获得总贡献

时间:2017-06-16 02:30:35

标签: api github github-api graphql apollo

我一直在查看Github V4 API文档,我似乎无法找到查询当年总贡献的方法(如github配置文件中所示)。有没有人设法使用新API从您的个人资料中获取一些统计信息?

我在github上使用graphQL和个人访问令牌,并设法获得最少的用户配置文件数据;用户名,个人资料名称等。

2 个答案:

答案 0 :(得分:4)

这样没有API。所以有两种方法可以解决它。抓取用户URL或循环遍历每个repo用户的简单数据已经分叉,然后计算贡献。后者将耗费更多时间。第一个更可靠,因为它是由github缓存的。下面是一个获取相同

的python方法
import json
import requests
from bs4 import BeautifulSoup

GITHUB_URL = 'https://github.com/'


def get_contributions(usernames):
    """
    Get a github user's public contributions.
    :param usernames: A string or sequence of github usernames.
    """
    contributions = {'users': [], 'total': 0}

    if isinstance(usernames, str) or isinstance(usernames, unicode):
        usernames = [usernames]

    for username in usernames:
        response = requests.get('{0}{1}'.format(GITHUB_URL, username))

        if not response.ok:
            contributions['users'].append({username: dict(total=0)})
            continue

        bs = BeautifulSoup(response.content, "html.parser")
        total = bs.find('div', {'class': 'js-contribution-graph'}).findNext('h2')
        contributions['users'].append({username: dict(total=int(total.text.split()[0].replace(',', '')))})
        contributions['total'] += int(total.text.split()[0].replace(',', ''))

    return json.dumps(contributions, indent=4)

PS:取自https://github.com/garnertb/github-contributions

对于后来的方法,有一个npm包

https://www.npmjs.com/package/github-user-contributions

但我建议仅使用抓取方法

答案 1 :(得分:0)

ContributionsCollection对象提供两个日期之间每种贡献类型的总贡献。

注意:import numpy as np a = np.array([[1,2,3],[4,5,6],[7,8,9]]) print(a[0,1]) print(a[0][1]) import os import sys def resource_path(relative_path): if hasattr(sys, '_MEIPASS'): return os.path.join(sys._MEIPASS, relative_path) return os.path.join(os.path.abspath("."), relative_path) with open(resource_path('./myfile.csv'), newline='') as csv_file: readCSV = csv.reader(csv_file) 最多可以相隔一年,对于较长的时间范围,可以发出多个请求。

from