获取Github上所有存储库的列表,其中列出了特定“主题”的标签

时间:2017-06-17 14:50:20

标签: github

我正在开发一个简单的包管理器GUI,它使用npmGithub安装包。

为了实现这一点,我需要具有特定“主题”的所有存储库的以下信息:

  • 存储库的全名(帐户/存储库)
  • 存储库的描述。
  • “主题”列表
  • 存储库中的标记名称列表(所有标记以“v”开头)。

我的GUI会在每个会话中缓存这些数据,但可能会有很多人在不同的计算机上使用GUI。

查看Github v3 API documentation我能找到以下两个命令:

我对这种方法有一些顾虑:

  1. Github文档说:

      

    通过各种标准查找存储库。此方法每页最多返回100个结果。

    这意味着客户端每次都需要遍历并下载所有页面。

  2. Github文档还说:

      

    费率限制

         

    Search API具有自定义的速率限制。对于使用基本身份验证,OAuth或客户端ID和密钥的请求,您每分钟最多可以发出30个请求。对于未经身份验证的请求,速率限制允许您每分钟最多发出10个请求。

    如果包裹超过30页,则会很快超出此限制。但是,即使每页的页面数量较少,我也需要获取每页100个存储库中每个页面的标签列表。

  3. 这是伪代码,看起来我必须做些什么来获取这些数据:

    dataPages = { };
    
    for each page in GET /search/repositories?q=topic:my-package-marker
                     with "Accept: application/vnd.github.mercy-preview+json"
    {
      dataPage = new DataPage();
    
      for each entry in page
      {
        entry = new Entry();
        entry.FullName = entry.full_name
        entry.Description = entry.description
        entry.Keywords = entry.topics
        entry.Versions = { };
    
        for each tag in GET /repos/{entry.full_name}/git/refs/tags
        {
          if (tag.ref starts with "refs/tags/v")
          {
            entry.Versions.Add(tag.ref substring from character index 11);
          }
        }
    
        dataPage.Add(entry);
      }
    
      dataPages.Add(dataPage);
    }
    

    我想做什么?

    从npm v5开始,您现在可以直接从Git存储库安装软件包。这非常有用,因为这意味着npm可以用于不适合node.js / npm生态系统的包。 npm非常适合这些软件包,但是npm注册表不适合托管这些软件包。

    实现这一目标的最佳方式是什么?

0 个答案:

没有答案