【问题标题】:How to get project badge via GitHub API?如何通过 GitHub API 获取项目徽章?
【发布时间】:2023-03-15 19:10:01
【问题描述】:

我为自己建立了一个简历页面,并使用 GitHub API 列出了我所有的项目。有些项目是带有rtfd build passing 徽章的文档,有些是带有 travis-ci 和 pep-lint 徽章的 python 项目。

现在,我想像项目一样显示徽章,我应该如何使用 API?

我的页面在这里:http://gh.windrunner.info/resume/#/github

【问题讨论】:

    标签: api github github-api badge


    【解决方案1】:

    您还可以通过 https://github-shields.com/ 使用不同的 API

    见“How to embed live Github PR status in your blogs & docs”

    考虑公关https://github.com/cloudfoundry/bosh/pull/715。
    该 URL 不指示 PR 是否打开/合并/关闭。

    URL 的cloudfoundry/bosh/pull/715 部分直接复制到以下基本 URL:

    https://github-shields.com/github/ + cloudfoundry/bosh/pull/715 + .svg 给出一个重定向到 PR 的 URL。

    https://github-shields.com/github/cloudfoundry/bosh/pull/715.svg

    作为图像 URL,它提供cloudfoundry/bosh/pull/715

    太棒了,它被合并了!


    对于项目的状态,OP kxxoling 报告in the comments 找到了shields.io:

    https://img.shields.io/badge/<SUBJECT>-<STATUS>-<COLOR>.svg
    

    它指示如何获取徽章的状态。
    如果没有为该项目添加徽章,它将返回一个无法访问的徽章,如下所示:https://img.shields.io/travis/kxxoling/z42-doc.svg =>

    【讨论】:

    • 从链接中我找到了这个:shields.io,它指示如何获取徽章的状态,如果没有为该项目添加徽章,它将返回一个不可接受的徽章,如下所示:@987654330 @ .等我做完工作再深入看看。
    • @kxxoling 看起来不错!我已在答案中包含该链接以获得更多可见性。
    • 但是我怎么知道一个项目有哪些徽章呢?这就是我想要的,但不是“无法访问的徽章”。
    • @kxxoling 有哪些徽章?如果每个徽章都与状态或 PR 状态相关,那么问题应该是如何获得这些状态。
    • 我有一个 repos r1, r2, r3 的列表...对于它们中的每一个,如果它有 badge1,它会在列表页面中显示 badge1,如果它有 badge2,则显示 badge2...这样我就可以忽略它们是哪种 repo,并在旁边显示所有相关的徽章。
    【解决方案2】:

    对于像https://github.com/kxxoling/z42-doc 这样的项目(其中确实有徽章),您需要获取自述文件,然后在其中搜索可能的徽章。在不知道你喜欢用什么语言的情况下,我会写一些伪代码

    首先,您需要检索 GitHub 识别为要在您的主页上呈现的 README。你可以这样做

     GET /repos/kxxoling/z42-doc/readme
     Host: https://api.github.com
     Accept: application/vnd.github.v3.raw
    

    如果您更愿意解析 HTML,请将最后一个标题中的“raw”更改为“html”,例如,

     GET /repos/kxxoling/z42-doc/readme
     Host: https://api.github.com
     Accept: application/vnd.github.v3.html
    

    有了 README 的内容,现在您只需解析它以查找特定于您为 README 选择的标记语言的链接或指令。您可以使用正则表达式或您选择的 HTML/XML 解析库来解析它们(如果您从 GitHub 检索呈现的内容)。

    【讨论】:

    • 这似乎可行,但似乎我必须发送网络请求并在浏览器中解析每个 repo 的响应,我认为不是那么优雅。
    • @kxxoling 并非所有事情都必须在浏览器中完成。如果您以这种方式生成存储库列表,那么我很惊讶您反对这样做。如果您的存储库列表是在服务器上自动生成的,否则是静态的,您可以在生成存储库列表时得到它。如果你把它作为一个 cron 工作,你真的应该每天只需要这样做一两次
    猜你喜欢
    • 2021-02-18
    • 1970-01-01
    • 2021-09-17
    • 2017-10-05
    • 2012-03-05
    • 1970-01-01
    • 2018-08-14
    • 2021-11-08
    • 1970-01-01
    相关资源
    最近更新 更多