2015-04-20 1 views
0

J'utilise cette fonction pour obtenir la dernière allouent URL à l'aide PyGithub:Obtenir la dernière Commit URL de PyGithub Efficacement

from github import Github 

def getLastCommitURL(): 
    encrypted = 'mypassword' 
    # naiveDecrypt defined elsewhere 
    g = Github('myusername', naiveDecrypt(encrypted)) 
    org = g.get_organization('mycompany') 
    code = org.get_repo('therepo') 
    commits = code.get_commits() 
    last = commits[0] 
    return last.html_url 

Il fonctionne, mais il semble faire Github malheureux avec mon adresse IP et me donner un lent réponse pour l'URL qui en résulte. Y a-t-il un moyen plus efficace pour moi de faire cela?

Répondre

2

Cela ne fonctionnerait pas si vous n'aviez pas effectué de validation au cours des dernières 24 heures. Mais si vous le faites, il semble revenir plus vite et demandera moins commits, selon le Github API documentation:

from datetime import datetime, timedelta 

def getLastCommitURL(): 
    encrypted = 'mypassword' 
    g = Github('myusername', naiveDecrypt(encrypted)) 
    org = g.get_organization('mycompany') 
    code = org.get_repo('therepo') 
    # limit to commits in past 24 hours 
    since = datetime.now() - timedelta(days=1) 
    commits = code.get_commits(since=since) 
    last = commits[0] 
    return last.html_url 
2

Vous pouvez directement faire une demande à l'api.

from urllib.request import urlopen 
import json 

def get_latest_commit(owner, repo): 
    url = 'https://api.github.com/repos/{owner}/{repo}/commits?per_page=1'.format(owner=owner, repo=repo) 
    response = urlopen(url).read() 
    data = json.loads(response.decode()) 
    return data[0] 

if __name__ == '__main__': 
    commit = get_latest_commit('mycompany', 'therepo') 
    print(commit['html_url']) 

Dans ce cas, vous ne être fait une demande à l'api au lieu de 3 et vous obtenez seulement la dernière livraison au lieu de tous. Devrait être plus rapide aussi.

+0

Cela ne fonctionnerait-il pas uniquement pour les pensions publiques? Je ne vois aucune authentification dans votre code. –