Steam Marktpreise auslesen.
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
artikel
code
datum
dokument
durchsuchen
folge
frage
http
markt
marktpreis
menge
minimum
objekt
pos
preis
rage
span
start
url
zeichen
-
Hallo,
ich hätte mal wieder eine Frage evtl kennt sich da jemand aus.
Ich würde gern vom Steam Community Markt (https://steamcommunity.com/market/?l=german) von einem beliebigen Produkt mir den Preis automatisch hohlen lassen wollen um ihn anzuzeigen bzw sonstige lustige Dinge mit ihm zu machen. Das Problem welches ich jetzt eigentlich habe ist, wie komme ich am besten da dran? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
http://store.steampowered.com/api/appdetails?appids={Steam-ID} ;)
-
Leider ist es nicht ganz so einfach. Die Steam API gibt mir zwar alles was Trading, Games oder Nutzerdaten angeht allerdings hört es bei Marktpreisen auf. Allerdings kommt man da auch irgendwie dran.
Mit
http://steamcommunity.com/market/search/render/?query=Artikel&start=0&count=10"
z.bsp
http://steamcommunity.com/market/search/render/?query=/listings/730/Krakow%202017%20Challengers%20Autograph%20Capsule&start=0&count=10"
kommt man an eine Textform aller Daten. Diese würde ich recht einfach mit
$artikel = "/listings/730/Krakow%202017%20Challengers%20Autograph%20Capsule"; $url = "http://steamcommunity.com/market/search/render/?query=$artikel&start=0&count=10"; $quelltext = file_get_contents($url);
in eine Variable schreiben.
Innerhalb dieser Zeichenkette befindet sich
was allgemein in etwa so aussehen sollte:<span class=\"sale_price\">$0.61 USD<\/span>
<span class=\"sale_price\">**.* *<\/span>
Diesen Teil würde ich gerne herausfiltern aus dem gesamten Zeichen. Das würde ich so machen:
$_url = "http://steamcommunity.com/market/search/render/?query=/listings/730/Krakow%202017%20Challengers%20Autograph%20Capsule&start=0&count=10"; $quelltext = file_get_contents($_url); $folge = "<span class=\"sale_price\">"; $pos = strpos($quelltext, $folge); $preiz = substr($quelltext, $pos); echo $preiz;
Das sollte eigentlich den Preis als die ersten paar Zeichen ausgeben, allerdings geht das nicht so richtig.
Beitrag zuletzt geändert: 27.7.2017 22:20:32 von horstexplorer -
RegEx oder ein echter Parser.
-
fatfox schrieb:
RegEx oder ein echter Parser.
? Verstehe ich jetzt leider nicht ganz. -
Ja entweder verwendest du eine einfache Gleichheitsprüfung z.B. mit einem regulären Ausdruck oder du verwendest einen Parser, dein Beispiel schaut nach HTML aus, wenn du das Dokument parst bekommst du die Struktur der Seite als Daten- / Objektstruktur, die lässt sich dann z.B. nach Element-Typen durchsuchen usw.
-
Ah ok, wie müsste ich das machen?
-
horstexplorer schrieb:
Leider ist es nicht ganz so einfach. Die Steam API gibt mir zwar alles was Trading, Games oder Nutzerdaten angeht allerdings hört es bei Marktpreisen auf.
Hast du dir den Link überhaupt angeschaut? Bei der Rückgabe ist auch ein Objekt "price_overview" drin was dir eben den Preis, Währung, Rabatt zurück gibt.
Siehe hier z.B. für das Spiel "RAGE". -
Ah, mein Fehler. Falsch verstanden.
Den "einen Preis" gibt es ja da nicht.
Aber Durchschnitt/Minimum kriegste über die API:
https://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name=Spectrum%20Case%20Key
currency: 1 -> USD, 3 -> EUR
appid: Steam-ID
market_hash_name: Name vom Artikel (findest du easy im Quelltext)
In dem Fall ist es der Artikel: https://steamcommunity.com/market/listings/730/Spectrum%20Case%20Key -
Ah okay das ist ja noch viel cooler :) wie bekomme ich da aber die Werte für volume und median_price raus mit PhP das nur die zugehörige Zahl in einer Variable steht?
-
Json mit den JSON-Funktionen von deiner verwendeten Programmiersprache auslesen und vom Preis dann halt das letzte Zeichen abtrennen oder das Euro-Zeichen gegen nen leeren String ersetzen.
-
Also müsste es theoretisch so gehen (habe gerade keinen PC zum überprüfen zur hand)
//Die codeteile bis zu $url $jsonfile = file_get_contents($url); $jsonarray = json_decode($jsonfile); $menge = $jsonarray[0]->volume; $preis = $jsonarray[0]->median_price;
Und danach halt ggf die Zeichen a-z A-Z und Sonderzeichen entfernen. -
Ähnlich. Die Daten hast du dann direkt als Objekt. Die Menge also z.B. über $jsonarray->volume.
-
Ah vielen Dank :) ich teste das heute Abend mal aus und merke mir eine positive Bewertung :)
//
Funktioniert super :)
jetzt würde ich die Information gerne noch in eine Tabelle schreiben, aber da scheine ich noch etwas falsch zu machen.
<!DOCTYPE html> <table border="1" width="100%" cellpadding="3" cellspacing="1"> <tbody> <tr> <td>Name</td> <td>Bild</td> <td>Stückzahl</td> <td>Preis</td> </tr> //AKREDLINE <?php $name = "AK-Redline | FT"; $img = "http://community.edgecast.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpot7HxfDhjxszJemkV09-5lpKKqPrxN7LEm1Rd6dd2j6eQ9N2t2wK3-ENsZ23wcIKRdQE2NwyD_FK_kLq9gJDu7p_KyyRr7nNw-z-DyIFJbNUz/360fx360f"; $market_hash_name = "AK-47%20%7C%20Redline%20%28Field-Tested%29"; $url = "https://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name=$market_hash_name"; $jsonfile = file_get_contents($url); $jsonarray = json_decode($jsonfile); $menge = $jsonarray->volume; $preiseuro = $jsonarray->median_price; $url2 = "https://steamcommunity.com/market/priceoverview/?currency=1&appid=730&market_hash_name=$market_hash_name"; $jsonfile2 = file_get_contents($url2); $jsonarray2 = json_decode($jsonfile2); $preisusd = $jsonarray->median_price; <tr> <td>$name</td> <td><img src="$img" alt="$name" height="100px" width="100px"></td> <td>$menge vorhanden</td> <td>$preiseuro / $preisusd</td> </tr> ?>
Beitrag zuletzt geändert: 28.7.2017 20:55:07 von horstexplorer -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage