2013-06-15 11 views
2

github 사용자와 해당 위치를 가져오고 싶습니다. 나에게 사용자 목록을 제공 할 수있는 Github api (GET/users)가 있다는 것을 알고 있습니다. 현재 PyGithub을 사용하여 github에 액세스하고 있지만이 라이브러리가이 API를 구현하지 않은 것으로 보입니다. 누구나 github API 라이브러리를 사용하여 github 사용자와 위치를 얻는 방법을 제안 해 줄 수 있습니까?모든 github 사용자 세부 정보를 얻으려면

EDIT1 : 다음과 같은 코드가 업데이트되었습니다. 그러나 어떤 방법으로 나는 이메일 ID와 위치를 얻을 수 없다.

import github3 
from datetime import datetime 

def main(): 
     g = github3.login(username="rakeshcusat", password="mypassword") 
    for user in g.iter_emails(): 
     print user 
    current_time = datetime.now() 
    fhandler = open("githubuser_"+current_time.strftime("%d-%m-%y-%H:%M:%S"), "w") 

    for user in g.iter_all_users(): 
      fhandler.write(" user: {0}, email: {1}, location: {2}\n".format(user, user.email, user.location)) 
      #fhandler.flush() 

    fhandler.close()   

if __name__ == "__main__": 
    main() 

샘플 출력

user: andywatts, email: None, location: 
user: mueller, email: None, location: 
user: cp, email: None, location: 
user: davea, email: None, location: 
user: vrieskist, email: None, location: 

답변

2

github3 library 모든 사용자에 걸쳐 반복을 지원합니다

import github3 

for user in github3.iter_all_users(): 
    user.refresh() 
    print user.location 

github3.iter_all_users()User objects을 생산하고 있습니다.

/users endpoint은 사용자 정보의 더 작은 하위 집합만을 반환하기 때문에 여기에 .refresh() 전화가 필요하며 위치는 여기에 포함되지 않습니다. 이렇게하려면 다른 API 요청이 필요하므로 GitHub 속도 제한을 지키지 않도록 스크립트 속도를 조절할 수 있습니다.

github3 (0.7.0 이상)의 향후 버전은 필요한 API 요청 수를 줄이기 위해 페이지 (배치) 크기를 지정하는 지원을 추가합니다. GitHub API는 기본적으로 페이지 당 30 개의 결과를 표시하지만 대신 load up to 100 results per page을 사용할 수 있습니다.

for user in github3.iter_all_users(per_page=100): 
    user.refresh() 
    print user.location 
+0

답장을 보내 주셔서 감사합니다. 이 라이브러리를 몇 번 사용했지만 'github3.models.GitHubError : 403 API 제한 속도 초과 (XYZ.XYZ.XYZ.XYZ)'오류가 발생했습니다. 이 문제를 어떻게 해결할 수 있습니까? – Rakesh

+1

귀하의 IP 주소에 대한 속도 제한을 맞추고 있습니다. http://developer.github.com/v3/#rate-limiting을 참조하십시오. 먼저 로그인하면 더 많은 요청을 할 수 있습니다. –

+1

귀중한 의견을 보내 주셔서 감사합니다. 이제 로그인하여 시도해 보았습니다. 희망이 시간은 목록을 다운로드합니다. – Rakesh

관련 문제