Наиболее подходящая библиотека Python для Github API v3

68

Я ищу библиотеку python для Github APIv3, подходящую для меня. Справочная информация. Я python noob с фоном, в основном внедренным в Matlab и С++, и недавно научился использовать python-matplotlib.

Я нашел одну библиотеку (python-github3), упомянутую в GH API. Поиграв с ним в ipython в течение часа или двух, мне было очень неинтересно исследовать/работать. Я посмотрел еще немного и нашел там довольно много людей, по крайней мере пытающихся написать такую ​​библиотеку. Более перспективными (с первого взгляда) являются PyGithub и другое python-github3, который, по-видимому, отличается от первого.

До того, как я проведу следующие дни подряд, попробовав библиотеку после библиотеки, я хотел спросить сообщество SO, если есть приемлемый, окончательный, очевидный выбор для этой библиотеки?

То, что мне не понравилось в первой библиотеке, было (для меня) неинтуитивным способом получения данных - некоторые вещи, которые вы получаете как атрибуты, некоторые из которых вы получаете как возвращаемое значение метода, возвращающее значение - это некоторый сложный объект который должен быть выгружен и повторен и т.д.

В этом отношении PyGithub выглядит более привлекательно с первого взгляда - четко прорисовывается иерархия объектов, а затем достигает атрибута, содержащего то, что вы хотите:

for repo in g.get_user().get_repos(): print repo.name

Итак, любой жемчуг мудрости делиться? Я знаю, что у меня недостаточно навыков, чтобы быстро оценить качество библиотеки, поэтому я обращаюсь к сообществу SO.

edit: fwiw, я закончил использование PyGithub. Он работает хорошо, и автор действительно восприимчив к отчетам об ошибках и ошибках.: -)

  • 0
    Возможно, стоит спросить некоторых из команды github.
  • 6
    я закончил тем, что использовал PyGithub. Это работает хорошо, и автор действительно восприимчив к отзывам и сообщениям об ошибках. :-)
Показать ещё 1 комментарий
Теги:
github

4 ответа

16
Лучший ответ

В конце концов, я закончил использование PyGithub. Он работает хорошо, и автор действительно восприимчив к отчетам об ошибках и ошибках.: -)

(Адаптировано из моего редактирования к исходному вопросу, для лучшей видимости)

57

Поскольку вы упомянули, что являетесь программистом-программистом для начинающих, я предлагаю вам сначала попробовать использовать JSON API без какой-либо библиотеки Github. Это действительно не так сложно, и это поможет вам намного позже в вашей жизни программирования, поскольку такой же подход может быть применен к любому JSON API. Особенно, если кажется, что опробовать библиотеки потребуется несколько дней.

Я не говорю, что некоторая библиотека не проще в использовании, я просто говорю, что небольшие дополнительные усилия по использованию API напрямую могут стоить в конечном итоге. По крайней мере, это поможет вам понять, почему некоторые из этих библиотек кажутся "неинтуитивными" (как вы сказали).

Простой пример для получения времени создания репозитория django:

import requests
import json
r = requests.get('https://api.github.com/repos/django/django')
if(r.ok):
    repoItem = json.loads(r.text or r.content)
    print "Django repository created: " + repoItem['created_at']

Это использует популярную библиотеку запросов . В вашем коде вам, естественно, также придется обрабатывать случаи ошибок.

Если вам нужен доступ с аутентификацией, он будет немного сложнее.

  • 11
    +1 за упоминание requests , с которыми я раньше не сталкивался. Выглядит изящно.
  • 0
    Кстати, это должно быть r.content , а не r.text (у объекта 'Response' нет атрибута 'text')
Показать ещё 7 комментариев
6

Документация для PyGitHub ужасна, но продукт замечательный. Вот простой пример для фактического извлечения файла, изменения его с новым комментарием в начале файла и его возврата

from github import Github
gh = Github(login_or_token='.....', base_url='...../api/v3')
user = gh.get_user()
repo = user.get_repo("RepoName")
file = repo.get_file_contents("/App/forms.py")
decoded_content = "# Test " + "\r\n" + file.decoded_content
repo.update_file("/"RepoName"/forms.py", "Commit Comments",decoded_content,
  file.sha)
  • 2
    Это? Я не использовал его целую вечность, но на самом деле он все еще поддерживается - может быть, открыть вопрос об этом? Кстати, PyGithub - один из немногих примеров успешной передачи обслуживания, когда у первоначального создателя больше не было времени, и он попросил добровольцев .
  • 2
    Спасибо за этот пример, я не понимаю, как кто-то может потратить месяцы на разработку своего проекта и не потрудиться написать пару параграфов, описывающих, как его использовать.
1

Libsaas отлично подходит для начинающих. Он имеет приятную документацию и прост в использовании, см. example. Не стесняйтесь вносить свой вклад.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню