Github API - 检索用户提交?

2024-01-30

我正在尝试构建一种方法,在该方法中我可以访问 Github 用户名,并发布该用户的所有提交或至少一些提交。

是否有调用 GET user/repo/commit 关联或直接用户/提交?

现在,我认为需要采取以下措施:

  1. 获取与特定名称关联的存储库:api.github.com/users/:name/repos.

  2. 从 feed 获取存储库名称。

  3. 将存储库名称放入数组中,例如:

api.github.com/repos/:user/:repo1/commits
api.github.com/repos/:user/:repo2/commits
api.github.com/repos/:user/:repo3/commits
  1. 从提要中获取 shas 的数量?

迭代用户的存储库并不是最佳选择,因为它会错过他们在其他存储库中所做的任何提交。更好的方法是使用事件API https://developer.github.com/v3/activity/events/反而。

第一步是获取用户的事件 https://developer.github.com/v3/activity/events/#list-events-performed-by-a-user:

GET /users/:username/events

接下来,您需要迭代返回的事件,检查项目where result.type被设定为PushEvent https://developer.github.com/v3/activity/events/types/#pushevent。其中每一项都对应一个git push由用户和该推送的提交可用(按时间倒序排列)为result.payload.commits.

您可以通过检查来过滤这些内容以忽略其他用户所做的任何提交commit.author.email符合您的期望。您还可以访问以下属性sha, message and url在该对象上,您可以使用以下方法消除多次推送中的重复提交distinct财产。

总体而言,涉及更多的跑腿工作,但它也可以让您更准确地了解用户实际提交的内容。

如果有帮助,这里有一些示例代码 https://gitlab.com/philbooth/www/blob/9067593eee0788f48cd32a32292562a39f7d0a91/server/data/code.js#L313-333取自我的网站,它使用上述方法来获取用户的最后一次提交(使用 Node.js 和octokatnpm 模块 https://www.npmjs.com/package/octokat):

const USER = 'TODO: your GitHub user name'
const EMAIL = 'TODO: your GitHub email address'

const github = require('octokat')({ token: 'TODO: your GitHub API token' })

return github.fromUrl(`https://api.github.com/users/${USER}/events`)
  .fetch()
  .then(events => {
    let lastCommit

    events.some(event => {
      return event.type === 'PushEvent' && event.payload.commits.reverse().some(commit => {
        if (commit.author.email === EMAIL) {
          lastCommit = {
            repo: event.repo.name,
            sha: commit.sha,
            time: new Date(event.createdAt),
            message: commit.message,
            url: commit.url
          }

          return true
        }

        return false
      })
    })

    return lastCommit
  })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Github API - 检索用户提交? 的相关文章

随机推荐

  • 如何在单元测试中比较两个对象?

    public class Student public string Name get set public int ID get set var st1 new Student ID 20 Name ligaoren var st2 ne
  • 使用 Selenium Python 绑定读取 div 中的隐藏值

    Issue 如何读取嵌套中的值 div 情况 我正在我们的网站上测试注册 为了完成该过程 用户需要输入验证码 使用帮助程序类 在我们的开发服务器上 我们可以显示 隐藏 当前的验证码 我需要抓住它并保存它以供 send keys 函数使用 该
  • 在 Kotlin 中设置匿名接口[重复]

    这个问题在这里已经有答案了 我的界面中有一个界面Adapter class interface OnItemClickListener fun onItemClick view View 请注意我的interface是在科特林 我想通过这个
  • 如何使带有转换构造函数的wrapper类在重载解析中胜过wrapper

    我正在尝试设计一个包装器来使用一些特殊逻辑来处理算术参数 https godbolt org z zG959e5Pz https godbolt org z zG959e5Pz include
  • 在哪里部署我的 web 服务的 jar 依赖项?

    我的 Web 服务依赖于一个 jar 其中包含自定义 Exception 类等 当我在没有这个 jar 的情况下简单部署 web 服务时 axis2 抱怨 Exception 类未知 所以我想我也必须部署我的罐子 但我不愿意把它放进去 to
  • 如何在Python中创建一个循环来创建多个空列表?

    我想要一行代码来创建一个空列表 其名称由递增变量确定 到目前为止我看过的所有地方都没有帮助 他们建议改为创建空列表列表或使用字典 这不是我想要的 我想要一行 或几行 代码 它只是创建一个空列表 它不是字典或列表列表的一部分 一个独立的实体
  • 检测视口方向,如果方向为纵向,则显示警报消息,向用户提供说明建议

    我正在建立一个专门针对移动设备的网站 特别是有一个页面最好以横向模式查看 有没有办法检测访问该页面的用户是否以纵向模式查看它 如果是 则显示一条消息 通知用户该页面最好以横向模式查看 如果用户已经在横向模式下查看它 则不会出现任何消 息 所
  • 在 Python 2.7 中包装大列表以使其不可变

    如果我有一个很大的list gt 100k 元素 可以通过函数调用从某个对象中检索 是否有一种方法可以包装该列表以使其对调用者不可变 而无需将其复制到tuple 在下面的例子中我只有一个list领域 但解决方案应该适用于任意数量list f
  • 将 iPhone 应用程序安装到 iPhone

    我按照该网站的教程进行操作 http theappleblog com 2008 08 04 tutorial build a simple rss reader for iphone http theappleblog com 2008
  • jquery - 使用 .done()、.then() 和 .when() 按给定顺序发出 ajax 请求

    我一直在阅读有关 jquery 中 Promise 的大量内容 并在发出多个 ajax 请求时避免 回调地狱 我觉得即使读完所有这些 对于使用什么也没有给出简单的答案 就 done then and when 在链接请求方面 我试图构建最基
  • 使用 pandas 绘制箱线图

    尝试为 pandas 数据框绘制箱线图 但 x 轴列名称似乎不明确 import matplotlib pyplot as plt pd set option display mpl style default fig ax1 plt su
  • Python:如何将进程轮询和非阻塞 WebSocket 服务器结合起来?

    我有个主意 编写一个基于 WebSocket 的 RPC 该 RPC 将根据以下场景处理消息 客户端连接到 WS Web 套接字 服务器 客户端向WS服务器发送消息 WS服务器将消息放入传入队列 可以是multiprocessing Que
  • 按 RDD 值从 Cassandra 表中过滤

    我想根据 RDD 中的值从 Cassandra 查询一些数据 我的方法如下 val userIds sc textFile tmp user ids keyBy e gt e val t sc cassandraTable keyspace
  • 如何在 npm 包中捆绑依赖项?

    我有一个 npm 包 它引用了其他本地包 它有这样的结构 deploy typescriptapp tgz references mydependency 包 json app js app css typescriptapp 包 json
  • 中间人:从 Markdown 引用存储在数据文件中的 URL

    For my 中间人构建的网站我已将所有页面的链接和其他信息存储在数据文件中 https middlemanapp com advanced data files data pages yaml pageA link some long u
  • 关于 Nix 包管理的 Nix 表达式是什么?

    即使在阅读了 Nix 手册之后 仍然对 Nix 表达式的真正含义感到困惑 有时它们被称为派生 但存储派生也有其他含义 在尼克斯 一个尼克斯表达只是您可以用 Nix 语言编写的任何类型值的通用术语 Nix 表达式可以是集合 列表 数字 字符串
  • 如何将 Google Plus 与 iPhone sdk 集成?

    我想将 google plus 集成到我的应用程序中 但我不知道从哪里开始 所以如果有人对此有任何想法 请回复我 以此为基础 gt https developers google com api https developers googl
  • 如何从 ORMLite 的 sqlite 数据库生成 java 类代码

    给定一个 sqlite 数据库作为输入 我想知道如何生成一个ORMLite http ormlite com 与关联数据库映射的java类 非常感谢 你可以尝试Telosys 工具 一个用于代码生成的 Eclipse 插件从现有数据库工作具
  • 文件上传大文件 PHP/AJAX [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Github API - 检索用户提交?

    我正在尝试构建一种方法 在该方法中我可以访问 Github 用户名 并发布该用户的所有提交或至少一些提交 是否有调用 GET user repo commit 关联或直接用户 提交 现在 我认为需要采取以下措施 获取与特定名称关联的存储库