如何通过GitHub GraphQL获取发布版本总数和总下载量 规避分页限制
获取GitHub仓库发布总数及总下载量的无分页限制方案
1. 发布版本总数获取
你无需遍历所有发布节点,直接通过releases连接自带的totalCount字段即可一次性拿到全量发布总数,无任何分页限制,示例查询如下:
query { repository(owner: "UserName", name: "RepoName") { releases { totalCount } } }
2. 全量发布总下载量获取
GitHub GraphQL API单次查询最多返回100个release节点,你可以通过游标分页的方式批量拉取所有发布数据,累加所有资产的下载量即可得到总下载量,具体实现逻辑:
- 首次查询时携带
pageInfo和endCursor字段,拉取第一页100条数据的同时获取下一页的分页游标 - 后续查询在
releases参数中添加after: "上一次返回的endCursor值",循环拉取直到pageInfo.hasNextPage返回false - 每次拉取后累加当前页所有release下所有资产的
downloadCount值,最终结果即为仓库全量发布的总下载量
单页拉取的通用查询模板:
query ($owner: String!, $repo: String!, $afterCursor: String) { repository(owner: $owner, name: $repo) { releases(first: 100, orderBy: {field: CREATED_AT, direction: DESC}, after: $afterCursor) { pageInfo { hasNextPage endCursor } nodes { releaseAssets(first: 100) { nodes { downloadCount } } } } } }
提示:上述模板中将
releaseAssets的单次拉取数量调整为100,避免单个发布版本下关联资产超过4条时出现统计遗漏。如果你的仓库发布版本量极大,注意控制查询频率,避免触发GitHub API速率限制。
内容的提问来源于stack exchange,提问作者Nicke Manarin
相关产品推荐
相关产品推荐

