amazon.inc.phpのAWS4.0対応

メッセージ

関連: official:自作プラグイン/amazon.inc.php

変更点

これら3点を修正したら元の通り表示するようになりました。

6/10追記

function plugin_amazon_cache_image_fetch($dir)
{
   global $asin, $asin_ext, $asin_all;

   $filename = $dir . 'ASIN' . $asin . '.jpg';

   $get_img = 0;
   if (! is_readable($filename)) {
       $get_img = 1;
   } elseif (PLUGIN_AMAZON_EXPIRE_IMAGECACHE * 3600 * 24 < time() - filemtime($filename)) {
       $get_img = 1;
   }

   if ($get_img) {
-      $url = 'http://images-jp.amazon.com/images/P/' . $asin . '.' . $asin_ext . '.MZZZZZZZ.jpg';
-      if (! is_url($url)) return FALSE;
-
-      $body = plugin_amazon_get_page($url);
-      if ($body != '') {
-          $tmpfile = $dir . 'ASIN' . $asin . '.jpg.0';
+      $url = PLUGIN_AMAZON_XML . $asin;
+      $xml = plugin_amazon_get_page($url);
+      if ($xml != '') {
+          $xml = mb_convert_encoding($xml, SOURCE_ENCODING, 'UTF-8');
+          $tmpary = array();
+          preg_match('/<' . PLUGIN_AMAZON_IMAGE_SIZE . '><URL>([^<]*)</', $xml, $tmpary);
+          $tmpfile = trim($tmpary[1]);
+          $body = plugin_amazon_get_page($tmpfile);
           $fp = fopen($tmpfile, 'wb');
           fwrite($fp, $body);
           fclose($fp);
           $size = getimagesize($tmpfile);
           unlink($tmpfile);
       }
-      if ($body == '' || $size[1] <= 1) { // 通常は1が返るが念のため0の場合も(reimy)
+      if ($xml == '' || $size[1] <= 1) { // 通常は1が返るが念のため0の場合も(reimy)
           // キャッシュを PLUGIN_AMAZON_NO_IMAGE のコピーとする
           if ($asin_ext == '09') {
-              $url = 'http://images-jp.amazon.com/images/P/' . $asin . '.01.MZZZZZZZ.jpg';
-              $body = plugin_amazon_get_page($url);
-              if ($body != '') {
-                  $tmpfile = $dir . 'ASIN' . $asin . '.jpg.0';
+              $xml = plugin_amazon_get_page($url);
+              if ($xml != '') {
+                  $xml = mb_convert_encoding($xml, SOURCE_ENCODING, 'UTF-8');
+                  $tmpary = array();
+                  preg_match('/<' . PLUGIN_AMAZON_IMAGE_SIZE . '><URL>([^<]*)</', $xml, $tmpary);
+                  $tmpfile = trim($tmpary[1]);
+                  $body = plugin_amazon_get_page($tmpfile);
                   $fp = fopen($tmpfile, 'wb');
                   fwrite($fp, $body);
                   fclose($fp);
                   $size = getimagesize($tmpfile);
                   unlink($tmpfile);
               }
           }
-          if ($body == '' || $size[1] <= 1) {
+          if ($xml == '' || $size[1] <= 1) {
               $fp = fopen(PLUGIN_AMAZON_NO_IMAGE, 'rb');
               if (! $fp) return FALSE;
               
               $body = '';
               while (! feof($fp)) $body .= fread($fp, 4096);
               fclose ($fp);
           }
       }
       plugin_amazon_cache_image_save($body, CACHE_DIR);
   }
   return $filename;
}

9/18追記

2.2を元にECS4.0対応を施して見ました。
が、まだ多くの商品でテストしたわけではないので人柱版という位置付けとさせて頂きます。
またプラグイン使用には以下のパラメータが必要となります。各自で用意してください。



*1 SwatchImage < SmallImageThumbnailImage < TinyImage < MediumImage < LargeImageから選択可能だがSwatchImage, ThumbnailImage, TinyImageは商品によってはタグが用意されていないこともある。またLargeは画像サイズが大きすぎてページが非常に重くなるのでSmallImage, MediumImageあたりが無難?

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-07-23 (木) 09:26:02
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.193 sec.

OSDN