我有一个 Python 函数,可以使用 Github API 提取存储库中的问题,并且我想提取使用此函数关闭和打开问题的用户的电子邮件。我尝试了下面的代码,但它不起作用(它提取空类型)。有办法做到这一点吗?
def extract_issues(repo_url, access_token): 尝试: 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
根据 GitHub API,如果指定用户未设置公共用户或者您未提供可以读取用户电子邮件的令牌,则
email
字段将返回 null
。
仔细检查您的令牌是否具有读取用户电子邮件的权限,并确保指定用户也设置了公共电子邮件。