API - Application programming interface
API - Application programming interface
Hallo zusammen.
Ich habe mich gefragt ob es zu Freewar eine öffentliche & frei-verfügbare API gibt?
Wenn nicht, wie greifen die Tools zu Freewar auf die Weltdaten zu? Sind das euer Tools oder "Third-party tools"?
Eine API ist eine Schnittstelle um z.B. über HTTP Befehle Daten vom Server zu erhalten. Dies kann sogar sowas einfaches sein wie beispiel.de/spielerliste.txt
Ich habe mich gefragt ob es zu Freewar eine öffentliche & frei-verfügbare API gibt?
Wenn nicht, wie greifen die Tools zu Freewar auf die Weltdaten zu? Sind das euer Tools oder "Third-party tools"?
Eine API ist eine Schnittstelle um z.B. über HTTP Befehle Daten vom Server zu erhalten. Dies kann sogar sowas einfaches sein wie beispiel.de/spielerliste.txt
Re: API - Application programming interface
Genau das, es gibt ein paar Dump-Dateien, konkret Spieler (id, name, xp, rasse, clan), Clans (id, kürzel, name, leader, coleader), Aktien (id, name, wert), Achievements (userid, achievementid, fortschritt).
Dementsprechend findet man auch unter /freewar/{dump_players,list_stocks,dump_clans,dump_achieves}.php die entsprechenden Dump-Dateien.
Und ja, das sind keine Seiten von Freewar selbst, sondern von den Spielern. Daneben hat fwtools auch eine kleine API unter https://api.fwtools.de/, wo wir auch mal eine Schnittstelle für diejenigen bereitstellen, die nicht immer selbst alle Daten fetchen möchten vom Freewar-Server. [Die API ist klein, da noch nicht mehr benötigt wurde, kann ich aber beliebig erweitern, auf Anfrage.]
Dementsprechend findet man auch unter /freewar/{dump_players,list_stocks,dump_clans,dump_achieves}.php die entsprechenden Dump-Dateien.
Und ja, das sind keine Seiten von Freewar selbst, sondern von den Spielern. Daneben hat fwtools auch eine kleine API unter https://api.fwtools.de/, wo wir auch mal eine Schnittstelle für diejenigen bereitstellen, die nicht immer selbst alle Daten fetchen möchten vom Freewar-Server. [Die API ist klein, da noch nicht mehr benötigt wurde, kann ich aber beliebig erweitern, auf Anfrage.]
Bogs sind meine Spezialität - Signaturen sind eigentlich doch überflüssig...
-
- Kopolaspinne
- Beiträge: 1218
- Registriert: 6. Jul 2007, 13:39
- Wohnort: in Welt 3 geboren, Wohnhaft in Welt 2
Re: API - Application programming interface
Das mit den Aktien wäre noch ziemlich interessant, könntet ihr dazu mehr auf fwtools einbinden?
Sotrax hat geschrieben:Ich hab keine Ahnung was für eine Party der Server gerade feiert, ...
Re: API - Application programming interface
Soweit bin ich mal selber gekommen:
https://k4su.lima-city.de/stocks.php?world=WELT
(Wobei WELT entweder 'de' oder 'uk' gefolgt von einer Zahl ist (Welt1, Welt2, ...))
Beispiele:
https://k4su.lima-city.de/stocks.php?world=de9 (welt9)
https://k4su.lima-city.de/stocks.php?world=de1 (welt1)
https://k4su.lima-city.de/stocks.php?world=uk1 (world1)
Ich habe nur grundlegende Fehlerüberprüfung da ich kein PHP-crack bin und dies trotzdem kurz reingehackt habe.
Ihr dürft den Code gerne selber verwenden, jedoch wäre ich froh wenn ihr Verbessungen mit mir teilen würdet
Wie es funktioniert:
Es liest die Daten von freewar.{de,com} ein und wandelt sie in JSON um, diese werden in einer Datei zwischengespeichert.
Die Daten werden allerdings nur von freewar.{de,com} geholt wenn die lokalen Daten (aus der Datei) älter als 1h sind.
-> Maximal ergeben sich (15x24) = 360 Aufrufe bei freewar.de pro Tag!
stocks.php: https://pastebin.com/rMTWUPYi
Option.php: https://pastebin.com/HCtT3v1P
https://k4su.lima-city.de/stocks.php?world=WELT
(Wobei WELT entweder 'de' oder 'uk' gefolgt von einer Zahl ist (Welt1, Welt2, ...))
Beispiele:
https://k4su.lima-city.de/stocks.php?world=de9 (welt9)
https://k4su.lima-city.de/stocks.php?world=de1 (welt1)
https://k4su.lima-city.de/stocks.php?world=uk1 (world1)
Ich habe nur grundlegende Fehlerüberprüfung da ich kein PHP-crack bin und dies trotzdem kurz reingehackt habe.
Ihr dürft den Code gerne selber verwenden, jedoch wäre ich froh wenn ihr Verbessungen mit mir teilen würdet
Wie es funktioniert:
Es liest die Daten von freewar.{de,com} ein und wandelt sie in JSON um, diese werden in einer Datei zwischengespeichert.
Die Daten werden allerdings nur von freewar.{de,com} geholt wenn die lokalen Daten (aus der Datei) älter als 1h sind.
-> Maximal ergeben sich (15x24) = 360 Aufrufe bei freewar.de pro Tag!
stocks.php: https://pastebin.com/rMTWUPYi
Option.php: https://pastebin.com/HCtT3v1P
Zuletzt geändert von K4su am 7. Jun 2017, 10:49, insgesamt 2-mal geändert.
Re: API - Application programming interface
"5 Northern Casino Ltd. " bei den englischen Stocks wird wegen des Punkts nicht eingelesen.
Kleiner (ungetesteter) Fix (Solang nicht plötzlich Aktien mit Ziffern eingefügt werden^^)
const REGEX = '/(\d+)(.*?)(\d+)/';
$name = trim($match[2]);
EDIT: Allerdings ist die Frage, ob das soo dringend notwendig ist^^ Was man machen kann wäre privat genauer Buch zu führen über Aktien und deren Verläufe :3
Kleiner (ungetesteter) Fix (Solang nicht plötzlich Aktien mit Ziffern eingefügt werden^^)
const REGEX = '/(\d+)(.*?)(\d+)/';
$name = trim($match[2]);
EDIT: Allerdings ist die Frage, ob das soo dringend notwendig ist^^ Was man machen kann wäre privat genauer Buch zu führen über Aktien und deren Verläufe :3
mfG Rober
_________________
destruktion ist konstruktion
_________________
destruktion ist konstruktion
Re: API - Application programming interface
Vielen Dank für die (schnellen) Rückmeldungen Ich habe kurz das Skript angepasst und meine Fehler korrigiert die ihr gefunden habt
Für die neuste Version benutzt denselben Link, dieser wurde angepasst.
Vielen dank, das sollte nun funktionieren. Ich habe einen minim veränderten Regex verwendet: "/(\d+)\s+(.+?)\s+(\d+)/'".
Dieser sollte den Aufruf an trim() überflüssig macht, da die Spaces vor und nach dem Namen "weggeparst" werden.
Man kann dies natürlich privat führen, dies trifft aber auf viele der verfügbaren API-Funktionen zu. Jemand wollte dies haben, ich dachte mir ich stelle mal meine Beispielimplementation zur Verfügung. Ich auch, generell macht man das weil Skriptsprachen dynamisch typisiert sind und es keine Möglichkeit gibt dies einfacher zu überprüfen?
Für die neuste Version benutzt denselben Link, dieser wurde angepasst.
SpoilerShow
Rober hat geschrieben: ↑6. Jun 2017, 16:05 "5 Northern Casino Ltd. " bei den englischen Stocks wird wegen des Punkts nicht eingelesen.
Kleiner (ungetesteter) Fix (Solang nicht plötzlich Aktien mit Ziffern eingefügt werden^^)
const REGEX = '/(\d+)(.*?)(\d+)/';
$name = trim($match[2]);
EDIT: Allerdings ist die Frage, ob das soo dringend notwendig ist^^ Was man machen kann wäre privat genauer Buch zu führen über Aktien und deren Verläufe :3
Dieser sollte den Aufruf an trim() überflüssig macht, da die Spaces vor und nach dem Namen "weggeparst" werden.
Man kann dies natürlich privat führen, dies trifft aber auf viele der verfügbaren API-Funktionen zu. Jemand wollte dies haben, ich dachte mir ich stelle mal meine Beispielimplementation zur Verfügung. Ich auch, generell macht man das weil Skriptsprachen dynamisch typisiert sind und es keine Möglichkeit gibt dies einfacher zu überprüfen?
-
- Kopolaspinne
- Beiträge: 1218
- Registriert: 6. Jul 2007, 13:39
- Wohnort: in Welt 3 geboren, Wohnhaft in Welt 2
Re: API - Application programming interface
Ganz nett K4su, aber da seh ich ja nur die aktuellen Aktienkurse einer Welt, das ist glaub bei fwtools auch mit drin.
Was ich eher meinte wären Aktienverläufe (Unternehmen, Spielerdaten, und so weiter)
Was ich eher meinte wären Aktienverläufe (Unternehmen, Spielerdaten, und so weiter)
Sotrax hat geschrieben:Ich hab keine Ahnung was für eine Party der Server gerade feiert, ...
Re: API - Application programming interface
Nun ich hatte nicht vor so viel zu machen, aber das wäre schon eine Option. Jedoch sind die Aktienverläufe von fwtools einfach die Bilder aus Freewar die generiert werden? Was meinst du mit Spielerdaten? Wieviele Aktien von einer Firma welcher Spieler hat? Das ist soweit ich weiss nicht möglich. Eventuell könnte man mit den Erfolgen etwas machen da es ja den Erfolg für Dividenden gibt, aber ich denke höher als 10k wird er nicht sein, da dies das Limit für Dividenden ist..
Re: API - Application programming interface
Weitere Anpassungen, Ausgabeformat analog: https://labs.omniti.com/labs/jsend
Der Code wurde ein bisschen angepasst und hoffentlich vereinfacht. Es gibt eine weitere Datei die oben ebenfalls erwähnt wurde.
Fehlerüberprüfung sollte nun besser erkannt werden, allerdings wird momentan bei einem Fehler nichts schlaues ausgegeben.
Der Code wurde ein bisschen angepasst und hoffentlich vereinfacht. Es gibt eine weitere Datei die oben ebenfalls erwähnt wurde.
Fehlerüberprüfung sollte nun besser erkannt werden, allerdings wird momentan bei einem Fehler nichts schlaues ausgegeben.
-
- Kopolaspinne
- Beiträge: 1218
- Registriert: 6. Jul 2007, 13:39
- Wohnort: in Welt 3 geboren, Wohnhaft in Welt 2
Re: API - Application programming interface
Bei Tiramon gab es damals mal eine Übersicht über das eigene (andere) Aktienvermögen (kA mehr genau aaber war glaube nur der aktuelle Stand). Sowas würde ich mir wieder wünschen , daraus liesse sich sicherlich auch ein Verlauf erzeugen. (Ich weiss viele wünschen dies nicht, somit kA ob man sowas spielerbezogen darstellen kann, zum Beispiel nur im eigenem Profil (Abgleich Account-ID vom Servers oder so?)
Sotrax hat geschrieben:Ich hab keine Ahnung was für eine Party der Server gerade feiert, ...
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 31 Gäste