github3.py

github3.py is wrapper for the GitHub API written in python

pip install github3.py

In [9]:
import github3
import getpass

Logging in

Logging into Github gives higher rates at which to perform Github API calls.


In [16]:
username = 'mjuenema'
password = getpass.getpass('Password for {0}: '.format(user))


Password for mjuenema: ········

In [29]:
login = github3.login(username, password)
user = login.user()

In [30]:
user.name, user.bio, user.email, user.type, user.created_at


Out[30]:
(u'Markus Juenemann',
 None,
 None,
 u'User',
 datetime.datetime(2014, 3, 13, 8, 35, 8, tzinfo=UTC()))

Searching

Searching repositories

Searching repositories


In [31]:
search = login.search_repositories(query='a language:HCL modified>')
search


Out[31]:
<SearchIterator [-1, /search/repositories?q=a+language%3AHCL]>

In [32]:
repositories = list(search)

In [33]:
len(repositories)


Out[33]:
1000

In [59]:
repository = repositories[10]
repository


Out[59]:
<RepositorySearchResult [Capgemini/terraform-amazon-ecs]>

In [60]:
repository.repository.full_name, repository.repository.size, repository.repository.clone_url, repository.repository.language


Out[60]:
(u'Capgemini/terraform-amazon-ecs',
 13,
 u'https://github.com/Capgemini/terraform-amazon-ecs.git',
 u'HCL')

In [61]:
repository.repository.owner, repository.repository.owner.login, repository.repository.owner.repos_url


Out[61]:
(<Organization [Capgemini:]>,
 u'Capgemini',
 u'https://api.github.com/users/Capgemini/repos')

In [62]:
repository.repository.id, repository.repository.owner.html_url


Out[62]:
(41561471, u'https://github.com/Capgemini')

In [67]:
repository.repository.description


Out[67]:
u'Terraform files for deploying and running Amazon ECS (+ Private Docker Registry)'

In [104]:
search = login.search_repositories(query='aws in:name,description,readme language:HCL> pushed>2017-03-01')

In [105]:
repository = repositories[0]
repository


Out[105]:
<RepositorySearchResult [open-guides/og-aws]>

In [107]:
repository.repository.pushed_at


Out[107]:
datetime.datetime(2017, 4, 24, 7, 25, 27, tzinfo=UTC())

In [132]:
readme = repository.repository.contents('README.md')

In [125]:
readme.html_url


Out[125]:
u'https://github.com/open-guides/og-aws/blob/master/README.md'
dir(readme)

In [135]:
markdown = login.markdown(readme.decoded)

In [144]:
markdown[:100]


Out[144]:
'<p><a href="figures/signpost-horiz1-1600.jpg" target="_blank"><img src="figures/signpost-horiz1-1600'

In [137]:
files = repository.repository.contents('/')

In [138]:
files


Out[138]:
{u'AUTHORS.md': <Content [AUTHORS.md]>,
 u'CONTRIBUTING.md': <Content [CONTRIBUTING.md]>,
 u'README.md': <Content [README.md]>,
 u'admin': <Content [admin]>,
 u'figures': <Content [figures]>}

In [139]:
admin = files['admin']

In [140]:
admin.type


Out[140]:
u'dir'

In [141]:
admin.name, admin.path


Out[141]:
(u'admin', u'admin')

In [142]:
admin_files = repository.repository.contents(admin.path)

In [143]:
admin_files


Out[143]:
{u'authors-info.yml': <Content [admin/authors-info.yml]>,
 u'reformat.sh': <Content [admin/reformat.sh]>}

In [ ]: