API - Application programming interface

Hier kann alles rund um Freewar diskutiert werden.
Antworten
Benutzeravatar
K4su
Waldschlurch
Beiträge: 13
Registriert: 1. Jun 2017, 15:50

API - Application programming interface

Beitrag von K4su » 3. Jun 2017, 04:49

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

bwoebi
Administrator
Beiträge: 3290
Registriert: 28. Apr 2008, 19:13

Re: API - Application programming interface

Beitrag von bwoebi » 3. Jun 2017, 11:36

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.]
Bogs sind meine Spezialität - Signaturen sind eigentlich doch überflüssig...

Asgard_W3
Kopolaspinne
Beiträge: 1218
Registriert: 6. Jul 2007, 13:39
Wohnort: in Welt 3 geboren, Wohnhaft in Welt 2

Re: API - Application programming interface

Beitrag von Asgard_W3 » 3. Jun 2017, 13:36

bwoebi hat geschrieben: 3. Jun 2017, 11:36 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).
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, ...

Benutzeravatar
K4su
Waldschlurch
Beiträge: 13
Registriert: 1. Jun 2017, 15:50

Re: API - Application programming interface

Beitrag von K4su » 6. Jun 2017, 15:32

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
Zuletzt geändert von K4su am 7. Jun 2017, 10:49, insgesamt 2-mal geändert.

Rober
Gelbbart-Yeti
Beiträge: 2192
Registriert: 21. Nov 2008, 16:40
Kontaktdaten:

Re: API - Application programming interface

Beitrag von Rober » 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
mfG Rober


_________________
destruktion ist konstruktion

Benutzeravatar
Flummi
Gelbbart-Yeti
Beiträge: 2284
Registriert: 17. Mai 2008, 11:22

Re: API - Application programming interface

Beitrag von Flummi » 6. Jun 2017, 17:19

Ich hasse es wenn Integerwerte als String übermittelt werden. Warum macht man sowas?
Nyrea hat geschrieben: 17. Jan 2020, 14:18#BigBugBob

Benutzeravatar
K4su
Waldschlurch
Beiträge: 13
Registriert: 1. Jun 2017, 15:50

Re: API - Application programming interface

Beitrag von K4su » 6. Jun 2017, 19:14

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.
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
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.
SpoilerShow
pFT hat geschrieben: 6. Jun 2017, 17:19 Ich hasse es wenn Integerwerte als String übermittelt werden. Warum macht man sowas?
Ich auch, generell macht man das weil Skriptsprachen dynamisch typisiert sind und es keine Möglichkeit gibt dies einfacher zu überprüfen?

Asgard_W3
Kopolaspinne
Beiträge: 1218
Registriert: 6. Jul 2007, 13:39
Wohnort: in Welt 3 geboren, Wohnhaft in Welt 2

Re: API - Application programming interface

Beitrag von Asgard_W3 » 6. Jun 2017, 20:13

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) :)
Sotrax hat geschrieben:Ich hab keine Ahnung was für eine Party der Server gerade feiert, ...

Benutzeravatar
K4su
Waldschlurch
Beiträge: 13
Registriert: 1. Jun 2017, 15:50

Re: API - Application programming interface

Beitrag von K4su » 7. Jun 2017, 08:51

Asgard_W3 hat geschrieben: 6. Jun 2017, 20:13 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) :)
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..

Benutzeravatar
K4su
Waldschlurch
Beiträge: 13
Registriert: 1. Jun 2017, 15:50

Re: API - Application programming interface

Beitrag von K4su » 7. Jun 2017, 10:48

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.

Asgard_W3
Kopolaspinne
Beiträge: 1218
Registriert: 6. Jul 2007, 13:39
Wohnort: in Welt 3 geboren, Wohnhaft in Welt 2

Re: API - Application programming interface

Beitrag von Asgard_W3 » 7. Jun 2017, 17:38

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, ...

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 32 Gäste