2013-06-15 3 views
2

Я хочу получить пользователей github и их местоположение. Я знаю, что есть Github apI (GET/users), который может предоставить мне список пользователей. В настоящее время я использую PyGithub для доступа к github, но, похоже, эта библиотека не реализовала этот API. Кто-нибудь может предложить мне, как получить пользователей github и их местоположение, используя любую библиотеку API github?Чтобы получить подробную информацию о пользователе github

EDIT1: Я обновил код, который приводится ниже. Но некоторые, как я не могу получить адрес электронной почты и местоположение.

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.

Вам нужно позвонить .refresh(), потому что /users endpoint возвращает меньше подмножества информации о пользователе, а местонахождение в это не входит. Для этого требуется другой запрос API, поэтому вам может потребоваться выполнить темп вашего скрипта, чтобы не допустить ограничения скорости GitHub.

В будущей версии github3 (новее 0.7.0) добавлена ​​поддержка для указания размера страницы (партии) для уменьшения количества запросов API, которые необходимо выполнить; API GitHub по умолчанию имеет 30 результатов на странице, но вместо этого: :

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

Спасибо за ваш ответ. Я использовал эту библиотеку пару раз, но получаю эту ошибку: github3.models.GitHubError: предел скорости передачи данных 403 превышен для XYZ.XYZ.XYZ.XYZ '. Любая идея, как это исправить? – Rakesh

+1

Вы получаете ограничение по скорости для своего IP-адреса, см. Http://developer.github.com/v3/#rate-limiting. При первом входе в систему вам будет разрешено делать больше запросов. –

+1

Спасибо за ваши ценные комментарии. Теперь я вошел в систему и пытался, продолжая. Надеюсь, на этот раз он будет загружать список. – Rakesh

Смежные вопросы