URL декодирования Steam API json

Я пытаюсь сделать «эхо» цены для разных объектов, которые у меня есть в массиве, содержащем оружие:

Я много читал о том, как получать цены через Steammarket через Steamapi:
(ни один из этих источников не соответствовал моим требованиям) Источники:
Получить цены на товары в Steam
Как получить ответ на несколько ценовых позиций на рынке
Получить цену предмета на торговой площадке Steam с помощью PHP и Regex

Наконец-то я нашел фрагмент кода, который работает безупречно

ФАЙЛ marketprices.php

<?php

     $items = array("Exalted Manifold Paradox","Kinetic Gem","Mercurial's Call");
        foreach($items as $item)
        {
            $json = json_decode(file_get_contents("http://steamcommunity.com/market/priceoverview/?appid=570&market_hash_name=".rawurlencode($item)), true);
            if($json["success"] == true OR !empty($json))
            {
                echo $item."'s lowest price is ".$json["lowest_price"]."";
            }
            elseif($json["success"] == false OR empty($json))
            {
                echo "Could not get data for ".$item;
            }
        }

вывод>

Exalted Manifold Paradox's lowest price is $28.49Kinetic Gem's lowest price is $50.00Mercurial's Call's lowest price is $0.16

Источник: http://gamebanana.com/tuts/11942

When I am trying to implent this snippet to my code I get error in my result:

I have created an array that contains different weapons:
<?
    foreach($S_W as $item) // Steam weapon
    {
    echo $item;
    }

?>

вывод>

AWP | Worm God (Factory New)
FAMAS | Cyanospatter (Field-Tested)
G3SG1 | Green Apple (Factory New)
G3SG1 | Polar Camo (Field-Tested)
Glock-18 | Death Rattle (Field-Tested)
M249 | Gator Mesh (Field-Tested)
MAC-10 | Heat (Field-Tested)

Это пока хорошо..

Я получаю ошибку в результате Вот мой код ниже:

foreach($S_W as $item)
{
    $json = json_decode(file_get_contents("http://steamcommunity.com/market/priceoverview/?appid=570&market_hash_name=".rawurlencode($item)), true);
    if($json["success"] == true OR !empty($json))
    {
        echo $item."'s lowest price is ".$json["lowest_price"]."";
    }
    elseif($json["success"] == false OR empty($json))
    {
        echo "Could not get data for ".$item;
    }
}

Я получаю следующий результат: введите здесь описание изображения

Вижу часть ошибки.. при вызове в конце URL код добавляет:&lt;/br&gt;

Может ли кто-нибудь помочь мне с решением?

заранее спасибо

С наилучшими пожеланиями

Даниэль


person XsiSec    schedule 16.02.2016    source источник
comment
Являются ли фрагменты кода выше MarketPrices.php и показывают ли они оскорбительные строки?   -  person Professor Abronsius    schedule 16.02.2016
comment
@DanielElmnas: декодированное значение &lt;/br&gt; равно </br>. Это означает, что значение имеет один разрыв строки. Сначала попробуйте PHP strip_tags().   -  person CAPS LOCK    schedule 16.02.2016
comment
Не могли бы вы объяснить подробнее, я новичок в PHP. Не могли бы вы предоставить мне фрагмент? заранее спасибо   -  person XsiSec    schedule 16.02.2016
comment
@DanielElmnas: также у вас есть &amp; в URL-адресе, который вы должны заменить. И удалите ответ, который вы разместили, поскольку это не ответ. Вместо этого вы должны обновить свой вопрос.   -  person CAPS LOCK    schedule 16.02.2016
comment
Таким образом, следующий результат URL-адреса должен выглядеть примерно так: steamcommunity.com/market/priceoverview/?appid=570/ Если я вставлю это в браузере, я все равно получу null, заранее спасибо   -  person XsiSec    schedule 16.02.2016
comment
@DanielElmnas: измени 570/market_hash_name на 570&market_hash_name. Это дает вам json. Однако я не знаком с тем, как работает API Steam.   -  person CAPS LOCK    schedule 16.02.2016
comment
Я все равно получаю null: pastebin.com/7e4vVVbf   -  person XsiSec    schedule 16.02.2016


Ответы (1)


Конечная точка Priceoverview «API» ограничена по скорости Steam, а совсем недавно Valve еще больше ограничила скорость. Вы получаете код состояния HTTP 429, что означает «Слишком много запросов», вы слишком часто отправляете запросы на их сайт.

person ncla    schedule 21.02.2016
comment
Как другие люди решают создать массив из прайс-листа? заранее спасибо - person XsiSec; 22.02.2016
comment
@DanielElmnas, одним из способов было бы отправлять запросы на сумму меньше x в минуту, я полагаю, что это могло быть что-то около 20 запросов в минуту. - person ncla; 22.02.2016
comment
Если я должен отправлять x запросов в минуту, как вы должны это сделать? Не могли бы вы помочь мне с примером, если это не сложно. используя метод, который я использую. Это самый простой способ сделать это? заранее спасибо - person XsiSec; 22.02.2016
comment
Только что заметил, что вы отправляете неправильный appID для предметов CS: GO, 570 для Dota 2, 730 для CS: GO. - person ncla; 07.03.2016