Seite 1 von 1

github check für last commit

Verfasst: Sonntag 23. Juni 2019, 20:59
von harryberlin
Hallo Zusammen,

möchte am liebsten ohne GitPython (da nicht sicherzustellen ist, dass es vorhanden ist) überprüfen, wann der letze commit auf github war.
Eine idee war jetzt, die html auszulesen und einfach per re die integer zu parsen, was jedoch nicht klappt, vermutlich wegen den zeilenumbruch.
habt ihr ne einfachere idee?

ziel ist es, meine kodi skin zu checken und ein event (download) auszuführen, wenn sich etwas neues ergeben hat.

aktuller code ist, an dem ich mich voran arbeteiten wollte:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import re

import urllib2

def main():
    url = 'https://github.com/harryberlin/skin.confluence-bmw/tree/kodi_18' 
    
    res = urllib2.urlopen(url).read()

    #print res
    m = re.search('<li class="commits">(.+?)</li', res)
    
    print m


if __name__ == '__main__':
    main()

Re: github check für last commit

Verfasst: Sonntag 23. Juni 2019, 21:16
von __blackjack__
@harryberlin: HTML verarbeitet man nicht mit regulären Ausdrücken und GitHub hat eine API, also braucht man sich da auch nichts aus HTML heraus zu fummeln.

API: https://developer.github.com/

Re: github check für last commit

Verfasst: Sonntag 23. Juni 2019, 22:38
von harryberlin
ok, habs jetzt hinbekommen, schaugt aktuell so aus. mal noch ohne exceptions:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import json
import urllib2
import datetime


def get_last_commit_datetime(owner, repo, branch='master'):
    url = 'https://api.github.com/repos/%s/%s/git/refs/heads/%s' % (owner, repo, branch)

    res = urllib2.urlopen(url).read()
    sha_url = json.loads(res)['object']['url']

    res = json.loads(urllib2.urlopen(sha_url).read())

    return datetime.datetime.strptime(res['committer']['date'],'%Y-%m-%dT%H:%M:%SZ')

def main():
    print get_last_commit_datetime('harryberlin', 'skin.confluence-bmw', 'kodi_18')

if __name__ == '__main__':
    main()