使用Github API提取用户邮箱地址
我有一个Python函数,它通过Github的API来获取仓库中的问题(也就是issues),我想用这个函数提取那些关闭和打开这些问题的用户的邮箱。我尝试了下面的代码,但它没有效果(提取出来的结果是空的)。有没有办法做到这一点呢?
def extract_issues(repo_url, access_token):
try:
g = Github(access_token)
# Extract username and repository name from the URL
repo_url_parts = repo_url.strip('/').split('/')
username, repo_name = repo_url_parts[-2:]
repo = g.get_repo(f"{username}/{repo_name}")
issues_data = []
for issue in repo.get_issues(state='all'):
issue_comments = issue.get_comments()
opened_by = issue.user.login if issue.user else None
opened_by_email = None
if issue.user:
user = g.get_user(issue.user.login)
opened_by_email = user.email
issue_data = {
'id': issue.number,
'title': issue.title,
'description': issue.body,
'state': issue.state,
'created_at': issue.created_at.strftime('%Y-%m-%d %H:%M:%S'),
'closed_at': issue.closed_at.strftime('%Y-%m-%d %H:%M:%S') if issue.closed_at else None,
'closed_by': issue.closed_by.login if issue.closed_by else None,
'closer_mail': issue.closed_by.email if issue.closed_by.email else "not closed",
'opened_by': opened_by,
'opener_mail': opened_by_email,
'comments': [{'author': comment.user.login,
'comment_date': comment.created_at.strftime('%Y-%m-%d %H:%M:%S'),
'comment_text': comment.body} for comment in issue_comments]
}
issues_data.append(issue_data)
return issues_data
except Exception as e:
print(f"An error occurred: {str(e)}")
return None
1 个回答
0
根据GitHub API的说明,如果你查询的用户没有设置公开邮箱,或者你没有提供可以读取用户邮箱的令牌,那么email
字段会返回null
。
请仔细检查一下你的令牌是否有权限读取用户的邮箱,并确保你查询的用户已经设置了公开邮箱。