開発ブログ

ページメニュー

<< YouTube出力タグIE7での不具合 | main | fgetcsvで配列がズレた時〜5c問題 >>

カレンダー

<< December 2017 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>

  • Amazon APIのサンプル〜『マニアンミュージック』
  • Amazon APIの利用

    メジャーじゃない曲を登録して紹介する、まねきねこプロジェクトのサービス『マニアンミュージック』に、AmazonのAPIとの連動を実施してみました。

    まず、AmazonでAPIキーを取得します。このページの『 Create your free Amazon Web Services account』という箇所でAPIキーを作ります。

    ZIPCodeを3桁にしないと『The address you provided appears to be invalid. Please check the required fields and try again』というエラーが出て登録ができない、という不具合があってしばしてこずりました。

    メール受信後に認証してから、このページYour Access Key IDshow。これでアクセスキーIDを取得します。

    PEAR
    の2つを用います。

    上記PEARの設置ですが、サーバによってはPEARのパスを通せないところもあるので、ルート直下に.htaccessをおいて、php_value include_path アドレスなどと、アドレスに追加するのもいいかもしれません(複数箇所を指定する場合は「:」で区切る)。include_pathについて詳しく知りたい方は、デジットさんのPHPが参考になります。

    ロリポップサーバの場合では、ルートのcommonフォルダ以下のファイルを参照する場合、
    php_value include_path "/home/sites/lolipop.jp/users/ユーザ/web/common:.:/usr/local/lib/php:/usr/local/lib/php/Smarty"
    とすればOK。記述順に優先されて読み込むので「.」であるワーキングディレクトリへの参照を先にしてしまうと、バージョンが異なる場合、古いファイルを参照しバージョン違いの為エラーを返すので注意です。

    上記の手順などを用いて、PEARへのパスがきちんと通っていれば、以下のような感じで、データを取得できます。データは10件までしか取得できないので、取得を繰り返すループ処理を入れてます。ただ、これだと何万件というデータがひっかかった時大変なので、ある一定度取得したらループを抜けるようにしてます。

    $subid = 'アマゾンAPIキー';
    $associd = 'アソシエイトキー';
    $objAmazon = new Services_AmazonECS4($subid, $associd);
    $objAmazon->setLocale('JP');
    $options = array();
    $options['Keywords'] = "浜崎あゆみ";//検索キーワード
    $options["Operation"]="ItemSearch";
    $options['ResponseGroup'] = "EditorialReview,ItemIds,ItemAttributes,Images";
    $SearchIndex="Music";//Books,Musicなど
    $pageCnt=1;
    $result=array();
    while($pageCnt<5){
    $options["ItemPage"]=$pageCnt;
    $re = $objAmazon->ItemSearch($SearchIndex, $options);
    if(count($re["Item"])==0){
    //これ以上結果が無い
    break;
    }
    array_push($result,$re);
    $pageCnt++;
    }
    print_r($result);
    print_r$resultの内容を表示してるので、以下のような内容が取得されるはずです。実行結果はこちらでご覧ください。print_rの出力結果にはHTMLタグが入ってないので改行はされません。内容をソースの表示で見ると随時改行されているはずです。

    プログラムに慣れた方ならわかると思いますが、例えばタイトルの「GUILTY(DVD付)」を取得するためには
    $result[0]["item"]["ItemAttributes"]["Title"]
    で、取得できます。アソシエイトURLであれば
    $result[0]["item"]["DetailPageURL"]
    となります。

    一方、小さな画像であれば
    $result[0]["item"]['SmallImage']['URL']
    で取得できますし、その画像の縦サイズであれば、
    $result[0]["item"]['Height']['_content']
    で取得できます。意味がわからない人は、Google『PHP 連想配列』と検索するといいかと思います。配列が分からない人は、まず配列を知ることからはじめましょう。

    尚、『マニアンミュージック』のアドレスにサブドメインを適用させ、以下のアドレスが使えるようになりました。

    http://lab.24th.jp/music/

    マニアンミュージックをご覧の際は、このアドレスにてご覧ください。

    参考サイト
    今回記事を書くにあたり参考にしたサイトおよび今後役立つと思われるサイトです。

| 開発関連 | 22:43 | comments(0) | trackbacks(0) |


コメント

コメントする

この記事のトラックバックURL

http://blog.24th.jp/trackback/929114