Skip to content

Instantly share code, notes, and snippets.

@alextercete
Created January 2, 2018 15:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alextercete/6b9dea4677e585661494c2c4df305dc1 to your computer and use it in GitHub Desktop.
Save alextercete/6b9dea4677e585661494c2c4df305dc1 to your computer and use it in GitHub Desktop.
Try to find a Makers graduate GitHub CV from their name
import argparse
import requests
def parse_command_line_args():
parser = argparse.ArgumentParser()
parser.add_argument('-t', '--token', required=True)
parser.add_argument('-n', '--name', required=True)
args = parser.parse_args()
return args.token, args.name
def get_forks(personal_access_token, repo, page = 1):
url = 'https://api.github.com/repos/{}/forks?page={}'.format(repo, page)
forks_response = requests.get(url, auth=(personal_access_token, ''))
forks_json = forks_response.json()
if forks_json:
for json in forks_json:
yield json
for json in get_forks(personal_access_token, repo, page + 1):
yield json
def get_makers_by_name(personal_access_token, name):
for cv_fork_json in get_forks(personal_access_token, 'makersacademy/cv'):
maker_response = requests.get(cv_fork_json['owner']['url'], auth=(personal_access_token, ''))
maker_json = maker_response.json()
maker = Maker(maker_json['name'], cv_fork_json['html_url'])
if maker.answers_to(name):
yield maker
class Maker:
def __init__(self, name, github_cv_url):
self.name = name
self.github_cv_url = github_cv_url
def answers_to(self, name):
return self.name and name.lower() in self.name.lower()
def __str__(self):
return '{} <{}>'.format(self.name, self.github_cv_url)
def main():
personal_access_token, name = parse_command_line_args()
for maker in get_makers_by_name(personal_access_token, name):
print(maker)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment