You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Github API获取指定日期之后Pull Requests的参数失效问题及PyGithub库适配咨询

解决GitHub PR过滤及PyGithub支持问题

一、API请求参数不生效的原因及修复

你踩了一个常见的API端点误用坑!/repos/{owner}/{repo}/pulls 这个端点不支持q参数做时间过滤——这个参数是GitHub搜索API(/search/issues)专属的,因为Pull Requests在GitHub的搜索体系里被归类为issues的子集。

正确的API请求方式

改用搜索API构造请求,格式如下:

GET /search/issues?q=repo:gooddata/gooddata-python-sdk+is:pr+updated:>=2022-06-01&per_page=10&page=1&sort=updated&direction=asc

查询条件拆解:

  • repo:gooddata/gooddata-python-sdk:锁定目标仓库
  • is:pr:仅返回Pull Requests(排除普通issues)
  • updated:>=2022-06-01:严格过滤2022年6月1日之后更新的PR
  • 其余参数per_page、page等和你原需求保持一致

这样请求返回的结果就会完全符合你的时间过滤要求了。

二、PyGithub的解决方案

PyGithub确实没在get_pulls()方法里直接提供updated字段过滤的参数,但有两种实用的解决办法:

方法1:调用PyGithub的搜索API(推荐)

利用PyGithub封装的搜索功能,直接对接GitHub搜索API,效率更高:

from github import Github

# 初始化客户端(传入个人访问令牌可提升速率限制)
g = Github("your-github-token")

# 构造搜索查询字符串
query = "repo:gooddata/gooddata-python-sdk is:pr updated:>=2022-06-01"

# 执行搜索并指定排序规则
search_results = g.search_issues(query, sort="updated", order="asc")

# 取前10条结果
for pr in search_results[:10]:
    print(f"PR #{pr.number}: {pr.title} | 更新时间: {pr.updated_at}")

注意:搜索API有速率限制(未认证用户每小时10次,认证用户每小时30次),高频请求建议使用令牌。

方法2:本地手动过滤PR

如果坚持用get_pulls()方法,可以先拉取PR列表,再在本地做时间过滤:

from github import Github
from datetime import datetime

g = Github("your-github-token")
repo = g.get_repo("gooddata/gooddata-python-sdk")

# 获取所有状态的PR,按更新时间升序排列
pulls = repo.get_pulls(state="all", sort="updated", direction="asc")

# 定义时间阈值
threshold = datetime(2022, 6, 1)

# 手动过滤符合条件的PR
filtered_pulls = []
for pr in pulls:
    # 统一时区后比较时间
    if pr.updated_at.replace(tzinfo=None) >= threshold:
        filtered_pulls.append(pr)
        if len(filtered_pulls) >= 10:
            break

# 输出结果
for pr in filtered_pulls:
    print(f"PR #{pr.number}: {pr.title} | 更新时间: {pr.updated_at}")

这种方法适合PR数量较少的仓库,否则加载大量数据会影响效率。

总结

  • 直接调用API时,必须用搜索API而非普通PR列表端点来实现时间过滤
  • PyGithub优先推荐用搜索API方案,既符合GitHub设计规范,又能避免本地过滤的性能问题

内容的提问来源于stack exchange,提问作者Jan Soubusta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 16:57:43