[Snippet] OpenLigaDB-API mit Python und suds nutzen

[Snippet] OpenLigaDB-API mit Python und suds nutzen

sudslogo-medium_duckyUm die freie Fußball-Datenbank ObenLigaDB zu nutzen benötigt man SOAP. Für SOAP nutzt man sinnvollerweise eine Programmiersprache um den Output auch weiterverarbeiten zu können. Auf der Website finden sich bereits Beispiele für einige Programmiersprachen. Leider nicht für Python. Daher wollte ich das hier mal nachholen.

Für das Beispiel nutze ich das SOAP-Modul suds. Dieses könnt ihr über easy_install (Was ist das?) ganz einfach nachinstallieren:

$ easy_install suds

Das folgende Beispiel ist ein mininmal Beispiel und kann beliebig erweitert werden:

import suds
 
def getMatchData(matchday_list, league, season, proxy={}):
    result_list = []
    oldb = suds.client.Client(
            'http://www.openligadb.de/Webservices/Sportsdata.asmx?WSDL', 
            proxy = proxy)
    for matchday in matchday_list:
        oldb_client = oldb.service.GetMatchdataByGroupLeagueSaison(
                                      matchday, 
                                      league, 
                                      season)
 
        for el in oldb_client[0]:
            #print el
            # Hat das Spiel bereits stattgefunden?
            if el[17] == -1:
                continue
            result_list.append([el[0],   # match_id
                                el[5],   # spieltag
                                el[6],   # Spieltag (lesbar)
                                el[10],  # liga
                                el[8],   # Liga (lesbar)
                                el[9],   # saison
                                unicode(el[11]), # teamName1
                                unicode(el[12]), # teamName2
                                el[17],  # tore1
                                el[18],  # tore2
                                el[1],   # matchDateTime
                                el[13],  # teamId1
                                el[14],   # teamId2
                                el[21],  # matchResults
                                el[22],   # goals
                                el[23],   # Location (Stadion)
                                el[24],  # Zuschauerzahl
                                ])
    return result_list
 
if __name__ == '__main__':
    """
    http://www.openligadb.de/Webservices/Sportsdata.asmx
 
    bl1 = Bundesliga
    bl2 = 2. Bundeliga
    bl3 = 3. Liga
 
    2013 = 2013/2014
 
    [1,2] = 1. und 2. Spieltag
    """
    test = getMatchData([1], 'bl1', 2013, proxy=proxy)
    print test

Wie funktioniert der Code?

matchday_list ist eine Liste der Spieltage. Ihr könntet zB auch sagen matchday=range(34) um alle Spieltage einer Saison zu lesen.
league ist die Liga (bl1 = 1. Bundesliga)
season ist die Saison (2013 = Saison 2013/2014)
proxy ist der/die Proxy(ies) als Dictonary ({‚http‘:’127.0.0.1:3128′})

Mithilfe der API-Dokumentation von OpenLigaDB könnt ihr weitere Daten abrufen. Viel Spaß beim experimentieren.

Sorry das lange Zeilen häufig nicht korrekt angezeigt werden. Ich muss hierfür bei Gelegenheit ein neues WP-Theme suchen.