Форум программистов, компьютерный форум, киберфорум
PHP: API
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.59/34: Рейтинг темы: голосов - 34, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 02.02.2017
Сообщений: 8
1

Steam API - Поиск цены предмета

02.02.2017, 16:53. Показов 6803. Ответов 9
Метки нет (Все метки)

Дело обстоит так нашел на данном чудесном форуме сообщение 3 летней давности, в котором собственно и нашел API http://steamcommunity.com/mark... %20Renewal после успешного перехода по данной ссылке и получения необходимой мне информации начал писать скрипт для поиска цен на несколько предметов сразу, и все пошло не так как надо уже с самого начала, в определенный момент получался сбой и мне выдавало что то типо (Warning: file_get_contents(http://steamcommunity.com/mark... k-Ache,0): failed to open stream: HTTP request failed! HTTP/1.0 429 Unknown in C:\xampp\htdocs\mySite\test\simple_html_dom.php on line 76) с API другого сайта такой проблемы не было, поэтому я решил что на стиме стоит какая то защита, но как её обойти я не вкурсе ибо в программировании не то что бы сильно шарю. И да в последствии стока http://steamcommunity.com/mark... %20Renewal вбитая в браузер вообще начала выдавать null связываю это с тем что меня забанили ибо захожу через прокси всё работает. Помогите решить проблему со скриптом, или что необходимо сделать что бы все работало и меня не банили? P.S. да я понимаю что в последствии надо работать с другого айпи ибо уже забанен.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
    include('simple_html_dom.php');
    $Html = file_get_contents('http://localhost/mySite/test/test.php'); // Тут получаю инфу о названиях предметов из другого скрипта.
 
    $pieces = explode(":", $Html); // перевожу строчку в массив
    for ($k=1; $k<51; $k++) { 
        $NameItem = $pieces[$k]; // вытаскиваю по очереди имена вещей
        $NameForLink = str_replace (" ","%20","$NameItem"); 
        $HtmlPriceSteam = file_get_html('http://steamcommunity.com/market/priceoverview/?appid=570&market_hash_name='.$NameForLink);  //получаю непосредственно с API
        echo $HtmlPriceSteam.$NameItem."</br>"; //вывожу то что мне выдает API и название предмета
    }
?>
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.02.2017, 16:53
Ответы с готовыми решениями:

Steam API и передача предмета
Можно ли сделать так чтобы при нажатии на кнопку, открывался трейд с кем-то и передавался ему...

Steam API - как можно получить медиану цен через API?
Ребят, как можно получить медиану цен через API ? Интересует количество продаж за последний день....

Продаю steam аккаунты гарантия обеспечена дешевые цены
Здравствуйте хочу предложить вам огромный список стим аккаунтов, сюда все писать не буду но дам...

Steam API
Здравствуйте!!! Возник такой вопрос: нужно сделать мониторинг сервера одной игры (Steam-версия)...

9
-4 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
04.02.2017, 19:29 2
PHP
1
2
$HtmlPriceSteam = json_decode(file_get_contents('http://steamcommunity.com/market/priceoverview' . '?' . http_build_query(array('appid' => 570,'market_hash_name'   => $NameForLink))), true);
print_r($HtmlPriceSteam);
Попробуй так. У меня работает, никакая защита не срабатывает.
0
0 / 0 / 0
Регистрация: 02.02.2017
Сообщений: 8
04.02.2017, 22:12  [ТС] 3
Сделал как вы посоветовали, создал отдельный скрипт для проверки
PHP
1
2
3
4
5
6
<?php
include('simple_html_dom.php');
$NameForLink = "Sigil%20Mask%20of%20the%20Bladekeeper";
$HtmlPriceSteam = json_decode(file_get_contents('http://steamcommunity.com/market/priceoverview' . '?' . http_build_query(array('appid' => 570,'market_hash_name'   => $NameForLink))), true);
print_r($HtmlPriceSteam);
?>
все равно ошибка (Warning: file_get_contents(http://steamcommunity.com/mark... dekeeper): failed to open stream: HTTP request failed! HTTP/1.0 500 Internal Server Error in C:\xampp\htdocs\qwer.php on line 4) при этом когда просто из браузера перехожу сюда http://steamcommunity.com/mark... ladekeeper все работает и выдает мне {"success":true,"lowest_price":"$1.64","volume":"610","media n_price":"$1.63"} (уже разбанили мой ip, но если делаю много запросов то банят опять)...
Вы говорите у вас всё работает, как часто вы обращаетесь к этому API?
0
-4 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
05.02.2017, 12:57 4
Лучший ответ Сообщение было отмечено akademogog как решение

Решение

PHP
1
2
3
$NameForLink = "Sigil Mask of the Bladekeeper";
$HtmlPriceSteam = json_decode(file_get_contents('http://steamcommunity.com/market/priceoverview' . '?' . http_build_query(array('appid' => 570,'market_hash_name'   => $NameForLink))), true);
print_r($HtmlPriceSteam);
Код
Array
(
    [success] => 1
    [lowest_price] => $1.67
    [volume] => 626
    [median_price] => $1.67
)
Добавлено через 18 секунд
Не нужно добавлять в имя "%20".
1
0 / 0 / 0
Регистрация: 02.02.2017
Сообщений: 8
05.02.2017, 13:24  [ТС] 5
Спасибо большое помогло, однако еще вопрос остался, как часто вы обращаетесь к этому API? (10 раз в минуту, 100 раз, 1000)
И еще я так понял при таком коде мне в переменную $HtmlPriceSteam возвращается массив и с ним можно как с массивом работать?
0
-4 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
05.02.2017, 14:28 6
С массивом работать как обычно
Код
print($HtmlPriceSteam['lowest_price']); - выводит минимальную цену
print($HtmlPriceSteam['median_price']); - выводит максимальную цену
и тд
По поводу количества обращений, то считаются обращения к одному и тому же методу. Лучше обращаться к одному методу раз в 5-10 секунд, этого должно быть достаточно, что бы система не сочла тебя ботом.

Добавлено через 33 минуты
Если у тебя это дело стоит в массиве, то воспользуйся http://php.net/manual/ru/function.sleep.php
1
0 / 0 / 0
Регистрация: 02.02.2017
Сообщений: 8
05.02.2017, 14:29  [ТС] 7
Цитата Сообщение от Dave_ Посмотреть сообщение
считаются обращения к одному и тому же методу
что имеется ввиду под методом? 1 вещь какая то? или именно html_get_contents? извините что задалбываю, но только учусь и многое еще не знаю
0
-4 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
05.02.2017, 15:00 8
Лучший ответ Сообщение было отмечено akademogog как решение

Решение

Имеется ввиду одинаковые запросы. К примеру:
market/priceoverview лучше вызывать раз в 5-10 секунд. В этот перерыв ты можешь делать все что угодно с API стима, кроме отправки market/priceoverview.
Касательно "задалбываю", то все хорошо. Этот раздел и создан для задалбливания. В этом и заключается помощь, в ответе на все вопросы.

Добавлено через 13 минут
Вот еще кое-что полезное: у стима есть лимит количества обращений в API. Лимит этот составляет 100 тыс запросов в сутки. Скорее всего ты не получал никаких банов, а просто истратил весь резерв обращений.
Код
You are limited to one hundred thousand (100,000) calls to the Steam Web API per day. Valve may approve higher daily call limits if you adhere to these API Terms of Use.
1
0 / 0 / 0
Регистрация: 02.02.2017
Сообщений: 8
05.02.2017, 15:10  [ТС] 9
Огромнейшее спасибо что растолковали мне все, но еще есть вопросик. Какие есть еще апи стима, а то я искал искал в инете и так и не нашел? Вернее я то нашел но там миллион всяких апи в которых я не разобрался в виду плохого знания языка https://lab.xpaw.me/steam_api_documentation.html интересуют именно апи с помощью которых можно получить цену на вещь, или на массив вещей.
0
-4 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
05.02.2017, 18:49 10
https://habrahabr.ru/post/172223
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2017, 18:49

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Steam и Api
Здравствуйте!Для общего развития решил сделать сайт,поставить авторизацию через стим по данной...

Steam api
https://www.cyberforum.ru/php-api/thread1115049.html вот статья по поводу стим апи(регистрация)...

Steam Web API
Ребят кароче нужна помощь, хочу получить список предметов в инветаре пользователя Steam для...

Steam api key
доброго вечера всем, у меня возник вопрос, мне нужно зарегистрировать Steam Web Api, но я не совсем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.