Jako, że lubię sobie czasem pograć w Counter Strike i kupić od czasu do czasu jakiegoś skina, poszukiwałem metody na sprawdzenie, czy mogę znaleźć jakieś okazje i kupić coś po taniości
Prowadzę sobie na komputerze plik excela, w którym wpisuję kwotę zakupu i kwotę sprzedaży (pomniejszoną o prowizję dla Valve) i widzę kiedy mogę coś sprzedać z zyskiem, czy jeszcze poczekać.
Rynek Steam działa w ten sposób, że jak już wybierzesz to co chcesz kupić i wejdziesz w tablicę zleceń to domyślnie najniższe ceny są umieszczone na „stosie”, tak jak na obrazku poniżej. (przykład - od najtańszej do najdroższej)
Pamiętam jednak, że kiedyś napaliłem się na skórkę do AK-47, która kosztowała ok. 170zł.
Śledziłem jej cenę przez kilka dni, wchodziłem w rynek i sprawdzałem jaka cena jest najniższa, aż pewnego dnia zauważyłem, że pierwsza oferta wystawiona była za kwotę ok. 170zł, natomiast kilka pozycji niżej cena 125zł.
Wyglądało to tak:
| Oferta | Wartość |
|---|---|
| Oferta 1 | 170 |
| Oferta 2 | 172 |
| Oferta 3 | 176 |
| Oferta 4 | 182 |
| Oferta 5 | 125 |
| Oferta 6 | 194 |
Kliknąłem „kup teraz” a z mojego konta Steam pobrało dokładnie 125zł. Po tej transakcji byłem od razu do przodu z kasą, bo skórkę mogłem sprzedać drożej pomimo faktu, że Valve zabiera zawsze ok.13% z ceny, jaką później oferujesz do sprzedaży.
Przeglądając rynek z poziomu aplikacji można zobaczyć jak czasem nierównomiernie ułożone są ceny.
Nie wiem czym to było spowodowane ale postanowiłem sprawdzić czy mogę sobie w przyszłości pozwolić na takie poszukiwanie okazji. Zacząłem od sprawdzenia czy Steam oferuje jakiś punkt API (API – w uproszczeniu, to taki punkt wejścia dla aplikacji z poziomu wiersza poleceń, bez wchodzenia na stronę internetową, żeby pobrać dane ze strony) do pobierania danych z rynku. No i dupa – bo API jest tak ubogie że mogę za jego pomocą jedynie sprawdzić szczegóły kont użytkowników - ogólnie słabo.
W internecie są jednak do kupienia biblioteki, które daję dostęp do runku Valve ale nie są one licencjonowane przez Valve a mi zależało na zabawie a nie prowadzeniu sklepu ze skórkami.
Sprawdzenie linku i zawartości strony
Jako, że potrafię coś tam programować, postanowiłem sprawdzić czy adres linku z aplikacji Steam da mi więcej informacji jeśli przekleję go do przeglądarki.
Nic za bardzo to nie dało, mogłem zobaczyć jedynie które znaczniki strony HTML, odpowiadają wartościom na wyświetlanej stronie.
W opcjach deweloperskich przeglądarki, wszedłem w zakładkę „Sieć”, usunąłem wszystkie procesy i kliknąłem w numer strony.
Strona załadowała się ponownie, a moim oczom ukazał się adres z żądaniem danych w formacie json oraz link do histogramu.
Na początek zabrałem się za sprawdzenie json.
Po kliknięciu w link, mogłem zobaczyć dokładne zapytanie i zmienić jego atrybuty. Co też zrobiłem, zmieniając start=0 i count=100.
Wtedy taki link przekleiłem do nowego okna przeglądarki. Wynik był zadowalający 😊 Mogłem zobaczyć 100 ofert sprzedaży przedmiotów, gdzie podczas korzystania z aplikacji można podejrzeć tylko 10.
Kolejną ciekawostką jest prezentacja ceny. Steam definiuje tam takie atrybuty jak rodzaj waluty i cenę wyrażoną w danej walucie ale konwertuje ją na jakieś jednostki, nie zgłębiałem się jaka to może być waluta. Oznacza to, że jeden użytkownik wystawił M4 np. za 100 USD (id=2006) a drugi za 4277,83 Liry Tureckiej (id=2005)
Widać, że „converted price” lepiej odzwierciedla cenę jak „price”. Ciężko jednak wskazać przez co podzielić „cenverted_price” żeby otrzymać dokładną wartość w PLN; jest to tak zmienna jednostka, że dla jednego przedmiotu należy podzielić przez 87, dla innego 77, dla jeszcze innego 79. Także tego nie zgłębiałem.
Pisanie skryptu
Dla swoich obliczeń przyjąłem wartość wyjściową 77 - wynik i tak będzie mi pokazywał czy w tabeli zleceń jest jakaś cena odbiegająca. Dodałem też wiersz, który mówi mi jaka cena jest najniższa i dodałem do tej ceny +13% - czyli tyle ile zabierze mi Valve po wystawieniu przedmiotu, żeby wiedzieć czy cena sprzedaży znajduje się blisko progu zleceń, czy tez musiałbym długo czekać ze sprzedażą. Dodałem także numer strony aby szybciej zlokalizować atrakcyjną cenę.
Kod działa i wskazuje na której stronie jest wartość odbiegająca == najniższa.
Ok a co z drugim adresem? Drugi adres prowadzi do danych tabeli histogramu ale odnajdziemy tam więcej danych jak te prezentowane na stronie. Na stronie dostajemy tylko 5 wierszy, ofert kupna, z poziomu linku mamy ich ok. 100 po obu stronach kupna/sprzedaży.
Z danych można uzyskać histogram, taki jak ten który mamy przy ofertach skrzynek.
Trzeba go tylko zbudować 😊
No i to tyle, więcej nie chce mi się grzebać, może to jeszcze skończę ale na razie mam obiad.
Hash artykułu:
ID transakcji: sprawdź OP_RETURN i porównaj jego hash











Komentarze
Prześlij komentarz