Open gpeters3110 opened 1 year ago
Hi Gregor,
welche ID benötigst du? Sprechen wir über die Fußball.de-ID oder die Spiel-ID, wie zum Beispiel 280023031? Wenn du möchtest, kann ich dir die URL für das Spiel auf fussball.de zur Verfügung stellen.
Die Adresse bei "next_games" kann ich dir nicht einbauen, da die Informationen nicht verfügbar sind. Das bedeutet, ich muss für jedes Spiel extra auf die Detailseite gehen und die Informationen heraussuchen. Da der Aufruf der Detailseite etwa 70 ms kostet, würde die Seite um circa 700 ms langsamer werden, was ich hier vermeiden möchte. Alternativ könnte ich dir einen API-Endpunkt erstellen, bei dem du die Informationen pro Spiel erhältst. Wäre das für dich von Nutzen?
Wie werden denn bis jetzt die Daten geholt? Wenn man das Widget entsprechend parsed bekommt man sowohl die nächsten Spiele als auch die Adressen... Wollte ich erst selbst machen, hab dann aber das hier gefunden ^^
Mit der ID habe ich so etwas gemeint: fc-schalke-04-hamburger-sv/-/spiel/02MA3N5JDO000000VS5489B4VSAUO6GA Also im Prinzip einfach nur die Url zu dem Spiel damit ich mir den Ort selbst ziehen kann
Kann man die Api eigentlich einfach so nutzen oder muss irgendwas beachtet werden? Ist das mit Fußball.de abgeklärt?
Also der Endpoint von fußball.de dazu wäre:
Allerdings hab ich für meinen konkreten Fall schon ein work around gefunden. Viel Erfolg noch!
Hallo, könntest du mir den Workaround zeigen? Ich bräuchte ebenfalls die Adresse für die jeweiligen Spiele :-) Grüße
Also aktuell hole ich mir von dem Link oben die URLs zu den Fußball.de Seiten und parse daraus die Adresse. Das ist bisschen tricky weil da in Amateurmannschaften oft der Platz doppelt drin steht... Soll ich dir den Code schicken?
Tatsächlich bekommt man über den obigen Link aber wie bereits gesagt die Adresse auch direkt, sodass man nur nach
<td colspan="3">
querien muss.
So parse ich aktuell die Adresse:
from pyquery import PyQuery as pq
def linkToLoc(link):
d = pq(url=link)
loc = (d(".icon-location").parents('a')[0].text)
indices=[loc.find(',')]
while indices[-1]!=-1:
indices.append(loc.find(',', indices[-1]+1))
return loc[indices[-4]+2:indices[-3]]+"\n"+loc[indices[-3]+1:]
So funktioniert es in nur einem Request:
import requests
def getLocations(verein_id, mannschaft_id):
foo = requests.get(url="https://www.fussball.de/ajax.team.matchplan.loadmore/-/datum-bis/2030-02-07/datum-von/"+datetime.today().strftime('%Y-%m-%d')+"/id/"+verein_id+"/match-type/-1/mime-type/JSON/mode/WIDGET/prev-season-allowed/true/show-venues/true/team-id/"+mannschaft_id+"/max/12/").content.decode()
foo = foo.replace('\\n', '\n').replace('\\t', '\t').replace('\\"', '"').replace('\/\/', 'https://').replace('\/', '/')
d = pq(foo)
locations = d('td[colspan="3"]').contents()
out = []
for loc in locations:
indices=[loc.find(',')]
while indices[-1]!=-1:
indices.append(loc.find(',', indices[-1]+1))
out.append(loc[indices[-4]+2:indices[-3]]+"\n"+loc[indices[-3]+1:-2])
return out
Die replaces sind ein wenig unschön, aber es funktioniert...
Hi,
ist es möglich
/api/team/next_games/
so zu erweitern, dass die Adresse des Fußballplatzes und die Id des Spiels auch geliefert werden?Danke im Voraus!