如何通过GitHub API获取项目徽章?

3
我已经为自己建立了一份简历页面,并使用GitHub API列出了所有的项目。其中一些项目是文档,具有 rtfd build passing 徽章,一些是Python项目,具有 travis-ci 和 pep-lint 徽章。
现在,我想要将徽章与项目一起显示,我该如何在API中使用?
我的页面链接在这里:http://gh.windrunner.info/resume/#/github
2个回答

6

你也可以使用不同的API,https://github-shields.com/是一个很好的选择。

请参见 "如何在博客和文档中嵌入实时Github PR状态"。

考虑PR 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在评论中报告发现了shields.io,请参考链接

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

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

从我找到的链接中,http://shields.io/ 显示了如何获取徽章的状态。如果该项目没有添加任何徽章,则会返回一个不可访问的徽章,例如:https://img.shields.io/travis/kxxoling/z42-doc.svg 。等我完成工作后,我会更深入地研究它。 - Kane Blueriver
@kxxoling 看起来不错!我已经在答案中包含了那个链接以增加可见性。 - VonC
1
但是我怎么知道一个项目有哪些徽章呢?这就是我想要的,而不是一个“无法访问的徽章”。 - Kane Blueriver
我有一个仓库列表r1、r2、r3... 对于每个仓库,如果它有badge1,则在列表页面上显示badge1;如果它有badge2,则显示badge2... 这样我就可以忽略它们是哪种类型的仓库,并在旁边显示所有相关的徽章。 - Kane Blueriver
@kxxoling 我不知道。除非该过程是脚本化的并且能够检测到这些徽章,否则我认为没有完全符合您要求的功能。 - VonC
显示剩余2条评论

3
对于像https://github.com/kxxoling/z42-doc这样的项目(其中确实有一个徽章),您需要获取README,然后搜索其中可能存在的徽章。没有知道您喜欢使用什么语言,我将编写一些伪代码。

首先,您需要检索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的内容,你只需要解析其中与你所选择的标记语言特定链接或指令相关的部分。你可以使用正则表达式或你选择的HTML/XML解析库将它们解析出来(如果你从GitHub检索渲染内容)。

它看起来可行,但是似乎我必须为每个仓库在浏览器中发送网络请求并解析响应,我认为这不太优雅。 - Kane Blueriver
@kxxoling 并不是所有的事情都必须在浏览器中完成。如果你是通过这种方式生成你的存储库列表的话,我很惊讶你会反感这样做。如果你的存储库列表是在服务器上自动生成的,而且是静态的,那么只要在生成存储库列表时获取即可。如果你将其作为一个cron工作每天只需要执行一次或两次即可。 - Ian Stapleton Cordasco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接