如何使用 GitHub API 获取 GitHub 中存储库的依赖信息?

HEL*_*RPG 12 github github-api graphql

我在使用 GitHub API v4 获取一些信息时,使用repository.dependencyGraphManifests. 但是我找不到任何使用 GitHub API v4 来获取依赖信息的方法,尽管我可以在Insights->Dependency Graph->Dependents. 我想知道是否有任何可能的方法来获取 GitHub 存储库中的依赖信息?无论是 GitHub API 还是其他东西。

Ber*_*tel 6

我不认为你可以使用 Github API(Rest 或 Graphql)获得依赖项目,一种方法是使用像下面的脚本一样的抓取:

import requests
from bs4 import BeautifulSoup

repo = "expressjs/express"
page_num = 3
url = 'https://github.com/{}/network/dependents'.format(repo)

for i in range(page_num):
    print("GET " + url)
    r = requests.get(url)
    soup = BeautifulSoup(r.content, "html.parser")

    data = [
        "{}/{}".format(
            t.find('a', {"data-repository-hovercards-enabled":""}).text,
            t.find('a', {"data-hovercard-type":"repository"}).text
        )
        for t in soup.findAll("div", {"class": "Box-row"})
    ]

    print(data)
    print(len(data))
    paginationContainer = soup.find("div", {"class":"paginate-container"}).find('a')
    if paginationContainer:
        url = paginationContainer["href"]
    else:
        break
Run Code Online (Sandbox Code Playgroud)

试试这个python脚本

  • 有 [`DependencyGraphManifest`](https://developer.github.com/v4/object/dependencygraphmanifest/),但在撰写本文时,它仅包含 `dependencies`,而不包含 `dependents`。 (2认同)

Nic*_*amy 6

我改进并打包了 python 命令行实用程序github-dependents-info中的所有答案

pip install github-dependents-info
github-dependents-info --repo nvuillam/npm-groovy-lint --markdownfile ./package-usage.md --sort stars --verbose
Run Code Online (Sandbox Code Playgroud)

除了已有的功能之外,它还可以:

  • 输出为文本、JSON 或 Markdown 文件
  • 在单个存储库中管理多个包(例如:megalinter
  • 失败时重试 HTTP 请求
  • 生成shields.io徽章

在此输入图像描述

结果示例链接