Steam API Получить инвентарь человека

712
16 февраля 2017, 01:11

Добрый день господа, столкнулся с такой проблемой. Раньше делал парсер инвентаря пользователя, было все отлично. Теперь пытаюсь спарсить инвентарь, в итоге после 3й перезагрузки страници стим не отвечает, и начинает отдавать ответ только после минуты ожидания. Как быть? если сайтом будет пользоваться допустим человек 10, то инвентарь в таком случае вообще парситься не будет. Если что, контент беру так - file_get_contents('http://steamcommunity.com/profiles/'.$id.'/inventory/json/730/2'); Была мысль пускать запрос через ТОР, при каждом запросе меняя цепь, тем самым меняя IP адрес, но это же костыль.

Answer 1

Если бы вы прочитали код ошибки, всё бы сами поняли:

The request is a duplicate and the action has already occurred in the past, ignored this time (29)

Система знает, что вы недавно запрашивали точно этот ресурс и запрещает вам спамить её одинаковыми запросами.

Вам просто необходимо кешировать результаты всех запросов

Чтобы получить тело ответа при возникновении ошибки
нужно передать в file_get_contents контекст с параметром:

$context = stream_context_create(array(
    'http' => array('ignore_errors' => true),
));
$result = file_get_contents($uri, false, $context);  
$data = json_decode($result, true);
if (!empty($data['error'])) {
  throw new \Exception("SteamAPI Error: {$data['error']}");
}

ЗЫ:
Expires заголовок у них шикарнейший:

Expires:Mon, 26 Jul 1997 05:00:00 GMT

READ ALSO
Не могу разобраться с ошибкой syntax error, unexpected $end in on line 48

Не могу разобраться с ошибкой syntax error, unexpected $end in on line 48

Ошибка Parse error: syntax error, unexpected $end in on line 48

349
Как отловить объект Response перед ответом в laravel 5?

Как отловить объект Response перед ответом в laravel 5?

Есть задача глобально контролировать то, что будет возвращаться приложением (laravel5/lumen)На примере контроллера, это может быть примерно так:

287
Есть ли функция, которая чистит текст от html но при этом сохраняет все переводы строк?

Есть ли функция, которая чистит текст от html но при этом сохраняет все переводы строк?

Переменная содержит текст формате html при выводе этой переменной в textarea, текст выводится вместе со всеми тегами, можно ли как то почистить...

328