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;

}

?>

ここで for と while の両方を試しました:

<?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";
}

?>

ここで明らかな何かが欠けているように感じますが、私は非常に立ち往生しています。私が間違っていることについてのガイダンスはありますか?


上記のコードに含まれる呼び出しを使用して、リスティングに対して返されるサンプル応答:

結果:

[ { list_id: 264154010, state: "active", user_id: 22167794, category_id: 69190377, title: "Swim with Mermaid print, hand lettering, watercol, green blue purple", creation_tsz: 1452898819, end_tsz: 1463349619, original_creation_tsz: 145289865 last_modified_tsz: 1452898849、価格: "10.00"、 currency_code: "USD"、数量: 15、タグ: [ "虹"、"ユニコーン"、"妖精"、"人魚"、"紫"、"青"、"緑" 、「手文字」「抽象」「文字」「手」「水彩」], category_path: [ "Art", "Print", "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: "Keep Calm Peach.Unicorn の Hug Me Baby ブランケット アフガン クロシェ パターン赤ちゃん」、「毛布」、「かぎ針編み」、「かぎ針編みの模様」、「毛布の模様」、「Keep Calm", "Puff Stitch", "Baby Blanket", "Instant download", "baby girl", "baby boy", "hug me", "dk yarn pattern" ], category_path: [ "Patterns" ], category_path_ids : [ 68887486 ]、URL: "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 に答える