python - 使用 PyGitHub 库获取成员的最后提交日期
问题描述
我正在开发一个 python 脚本,它要求我获取所有 GitHub 组织成员的列表,这些成员长时间未对任何组织存储库执行提交。借此,我们希望找到非活跃成员并将其从组织中删除
关于如何使用 PyGitHub 库获取成员上次提交日期的任何想法?
解决方案
使用Search commit API并使用参数过滤您组织的 repo org
:
GET https://api.github.com/search/commits?q=[SEARCH REQUEST]
您需要使用标头Accept: application/vnd.github.cloak-preview
才能使用此 API。以下给出了在特定组织拥有的存储库中为特定用户所做的所有提交,并按最近的 first 排序:
curl -s -H "Accept: application/vnd.github.cloak-preview" \
https://api.github.com/search/commits?q=author:fgette%20org:BboxLab%20sort:author-date-desc
然后,您可以过滤该组织中最近提交的日期:
curl -s -H "Accept: application/vnd.github.cloak-preview" \
https://api.github.com/search/commits?q=author:fgette%20org:BboxLab%20sort:author-date-desc | \
jq -r '.items[0].commit.author.date'
使用python,您将使用以下命令检查最近的提交是否低于截止日期(此处 < 12 个月后):
from github import Github
from datetime import date
from datetime import datetime
from dateutil.relativedelta import relativedelta
deadline = datetime.combine(
date.today() + relativedelta(months=-12),
datetime.min.time()
)
g = Github("YOUR_TOKEN", per_page = 1)
commits = g.search_commits(
query = 'author:fgette org:BboxLab sort:author-date-desc'
)
data = commits.get_page(0)
if (len(data) > 0):
last_commit = data[0].commit.author.date
print(f'last commit : {last_commit}')
if (last_commit < deadline):
print("too old :(")
else:
print("ok :)")
输出 :
最后一次提交:2019-03-06 15:29:26
太老 :(
推荐阅读
- c# - 带有 .NET 核心和后台服务的 Active Directory 更改通知
- regression - 调整滚动回归
- python - 将数据保存为 SequenceExample 并读取 LSTM 的 TFRecords
- android - 如何在 android 的 TextureView 上显示 SurfaceTextures
- javafx - Gluon Scene Builder 16.0.0 无法在 Windows 10 64 位中启动
- reactjs - 如何从另一个文件中的反应 axios 函数返回 const?
- html - 在具有线性渐变背景的元素上使用边框,导致边缘出现纯色
- python - Python:根据用户输入向函数传递参数并执行函数
- asp.net-mvc - 安全默认值不适用于 Azure AD 图形 API 创建的用户
- angular - Uglify、Minify 和压缩 Angular 12 库