github check für last commit

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
harryberlin
User
Beiträge: 227
Registriert: Donnerstag 17. Dezember 2015, 12:17

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()
empty Sig
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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/
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
harryberlin
User
Beiträge: 227
Registriert: Donnerstag 17. Dezember 2015, 12:17

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()
empty Sig
Antworten