0

首先,提前为这可能是一个非常绿色的问题道歉!我只是掌握了 PHP 的窍门,而且对 API 的支持并不多……

我目前正在尝试过滤我使用 Etsy API 返回的一些列表结果。我想将它们限制为仅特定类别或分类 ID,但我使用的 PHP 条件似乎都没有返回任何结果。到目前为止我尝试过的一些事情:

<?php

define("API_KEY", XXX);

$url = "https://openapi.etsy.com/v2/listings/active?tags=unicorn,unicorns&keywords=unicorn,unicorns&includes=Images:1:0&api_key=" . API_KEY;

while (isset($url) && $url != '' && $next_page < 3) {

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response_body=curl_exec($curl);
curl_close($curl);

$response = json_decode($response_body);

$taxo = $response->results->taxonomy_id;

if($taxo == 66) {

    foreach ($response->results as $listing) {
            echo "<li>"
            . '<a href="' . $listing->url . '" target="_blank"><img src="' . $listing->Images[0]->url_170x135 . '" alt=""></a>'
            . "<p>" . $listing->title . "</p>"
            . "<p>~*~" . $listing->price . " " . $listing->currency_code . "~*~</p>" .
            $listing->taxonomy_id .
            "</li>";
}
} else {
    echo "NO RESULTS";
}

$next_page = $response->pagination->next_page;
$baseUrl = "https://openapi.etsy.com/v2/listings/active?tags=unicorn,unicorns&keywords=unicorn,unicorns&includes=Images:1:0&api_key=" . API_KEY . "&page=";
$url = $baseUrl . $next_page;

}

?>

我已经在这里尝试过:

<?php

define("API_KEY", XXX);

$url = "https://openapi.etsy.com/v2/listings/active?tags=unicorn,unicorns&keywords=unicorn,unicorns&includes=Images:1:0&api_key=" . API_KEY;

if(isset($url) && $url != '' && $next_page < 3 && $taxo == 66) {

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response_body=curl_exec($curl);
curl_close($curl);

$response = json_decode($response_body);

$taxo = $response->results->taxonomy_id;

foreach ($response->results as $listing) {
    echo "<li>"
    . '<a href="' . $listing->url . '" target="_blank"><img src="' . $listing->Images[0]->url_170x135 . '" alt=""></a>'
    . "<p>" . $listing->title . "</p>"
    . "<p>~*~" . $listing->price . " " . $listing->currency_code . "~*~</p>" .
    $listing->taxonomy_id .
    "</li>";
}

$next_page = $response->pagination->next_page;
$baseUrl = "https://openapi.etsy.com/v2/listings/active?tags=unicorn,unicorns&keywords=unicorn,unicorns&includes=Images:1:0&api_key=" . API_KEY . "&page=";
$url = $baseUrl . $next_page;

var_dump($url);

}

else {
echo "NO RESULTS";
}

?>

我觉得我在这里遗漏了一些明显的东西,但我被卡住了。关于我做错了什么的任何指导?


使用上述代码中包含的调用为列表返回的示例响应:

结果:

[ { Listing_id: 264154010, state: "active", user_id: 22167794, category_id: 69190377, title: "Swim with Mermaids print, hand lettering, watercolor, green blue Purple", creation_tsz: 1452898819, ending_tsz: 1463349619, original_creation_tsz: 145289867 last_modified_tsz:1452898849,价格:“10.00”,货币代码:“USD”,数量:15,标签:[“彩虹”,“独角兽”,“仙女”,“美人鱼”,“紫色”,“蓝色”,“绿色” , “手刻字”, “抽象”, “刻字”, “手”, “水彩”],category_path:[“艺术”,“打印”,“Giclee”],category_path_ids:[68887312、68892154、69190377],url:“https://www.etsy.com/listing/264154010/swim-with-mermaids-print-hand-lettering?utm_source=funappyay&utm_medium=api&utm_campaign=api", taxonomy_id: 121, taxonomy_path: ["Art & Collectibles", "Prints", "Giclee" ], }, { Listing_id: 234448248, state: "active", user_id: 30961143, category_id: 68887486, title: "保持冷静和拥抱我的婴儿毯阿富汗钩针图案 Peach.Unicorn”,creation_tsz:1452898542,ending_tsz:1463349342,original_creation_tsz:1432388408,last_modified_tsz:1452898542,价格:“1.99”,currency_code:“GBP”,数量:41,标签:[“婴儿”,“毯子”,“钩针”,“钩针图案”,“毯子图案”,“Keep Calm”, “Puff Stitch”, “Baby Blanket”, “Instant download”, “baby girl”, “baby boy”, “hug me”, “dk yarn pattern” ], category_path: [ "Patterns" ], category_path_ids :[68887486],网址:“https://www.etsy.com/listing/234448248/keep-calm-and-hug-me-baby-blanket-afghan?utm_source=funappyay&utm_medium=api&utm_campaign=api ”,taxonomy_id:729,taxonomy_path:[“工艺用品和工具”、“模式和教程”]、}、

4

1 回答 1

0

好吧,我想通了!万一其他人在未来寻找答案,我有点混乱的解决方案:

<?php

define("API_KEY", XXX);

$url = "https://openapi.etsy.com/v2/listings/active?tags=unicorn,unicorns&keywords=unicorn,unicorns&includes=Images:1:0&api_key=" . API_KEY;

while(isset($url) && $url != '') {

    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $response_body=curl_exec($curl);
    curl_close($curl);

    $response = json_decode($response_body);

        foreach ($response->results as $listing) {

                $taxo = $listing->taxonomy_id;

                if($taxo == 41 || $taxo == 873){
                    echo '<li><a href="'
                    . $listing->url .
                    '" target="_blank"><img src="'
                    . $listing->Images[0]->url_170x135 .
                    '" alt=""></a>'
                    . "<p>" . $listing->title . "</p>"
                    . "<p>~*~" . $listing->price . " " . $listing->currency_code . "~*~</p>" .
                    $taxo . '</li>';
                }
        }

    $next_page = $response->pagination->next_page;
    $baseUrl = "https://openapi.etsy.com/v2/listings/active?tags=unicorn,unicorns&keywords=unicorn,unicorns&includes=Images:1:0&api_key=" . API_KEY . "&page=";
    $url = $baseUrl . $next_page;

}

?>

仍然在努力理解为什么在 foreach 循环之外设置 $taxo 是不成功的,所以任何见解仍然值得赞赏。

于 2016-01-20T00:49:39.750 回答