Я ищу библиотеку 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. Он работает хорошо, и автор действительно восприимчив к отчетам об ошибках и ошибках.: -)
В конце концов, я закончил использование PyGithub. Он работает хорошо, и автор действительно восприимчив к отчетам об ошибках и ошибках.: -)
(Адаптировано из моего редактирования к исходному вопросу, для лучшей видимости)
Поскольку вы упомянули, что являетесь программистом-программистом для начинающих, я предлагаю вам сначала попробовать использовать 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']
Это использует популярную библиотеку запросов . В вашем коде вам, естественно, также придется обрабатывать случаи ошибок.
Если вам нужен доступ с аутентификацией, он будет немного сложнее.
requests
, с которыми я раньше не сталкивался. Выглядит изящно.
r.content
, а не r.text
(у объекта 'Response' нет атрибута 'text')
Документация для 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)
Libsaas отлично подходит для начинающих. Он имеет приятную документацию и прост в использовании, см. example. Не стесняйтесь вносить свой вклад.