Script ดึง ASIN ของ Amazon ออกมาเยอะๆ (Amazon ASIN Quick List)

เห็นมีหลายท่านถามหา ก็เลยลองนั่งโมดูครับ
เป็นไฟล์ php ดึง api ของ amazon มาแต่เฉพาะ ASIN กับ Product Name นะครับ ทำให้ก๊อป ASIN เอาไปใช้กันง่ายๆ ไม่ได้ทำแบบ node นะครับ เพราะว่าจะได้ไม่ต้องมาเสียเวลาค้นหา เลข node กัน ตัวนี้ใช้ .htaccess เป็นตัวช่วยให้สามารถคลิ๊กไปที่ หน้าต่อๆไปเพื่อก๊อปๆๆๆๆ ได้อย่างสะดวกครับ
เอาไปลองใช้กันเลย

index.php

<style type="text/css">
<!--
body,td,th {
   font-family: Tahoma;
   font-size: 12px;
   color: #333333;
}
body {
   margin-left: 30px;
   margin-top: 30px;
   margin-right: 30px;
   margin-bottom: 30px;
}
h1,h2,h3,h4,h5,h6 {
   font-weight: bold;
}
h1 {
   font-size: 18px;
}
-->
</style>
<h1>Amazon Quick List</h1>
<table width="90%"  border="0" align="center" cellpadding="0" cellspacing="5">
  <tr>
    <td><form accept-charset="UTF-8" id="search" name="search" method="get" action="index.php">
      Category:
      <select name="category" id="category">
           <option value="Blended">All (-title)</option>
         <option value="Books">Books</option>
         <option value="Music">Music</option>
         <option value="DigitalMusic">DigitalMusic</option>
         <option value="Classical">Classical</option>
         <option value="DVD">DVD</option>
         <option value="VHS">VHS</option>
         <option value="Apparel">Apparel</option>
         <option value="Toys">Toys</option>
         <option value="Baby">Baby</option>
         <option value="PCHardware">PCHardware</option>
         <option value="VideoGames">VideoGames</option>
         <option value="Electronics">Electronics</option>
         <option value="Photo">Photo</option>
         <option value="Software">Software</option>
         <option value="Tools">Tools</option>
         <option value="OfficeProducts">OfficeProducts</option>
         <option value="Magazines">Magazines</option>
         <option value="SportingGoods">SportingGoods</option>
         <option value="OutdoorLiving">OutdoorLiving</option>
         <option value="Kitchen">Kitchen</option>
         <option value="Jewelry">Jewelry</option>
         <option value="Beauty">Beauty</option>
         <option value="GourmetFood">GourmetFood</option>
         <option value="MusicalInstruments">MusicalInstruments</option>
         <option value="HealthPersonalCare">HealthPersonalCare</option>
         <option value="PetSupplies">PetSupplies</option>
         <option value="Automotive">Automotive</option>
         <option value="Video">Video</option>
         <option value="Wireless">Wireless</option>
         <option value="Watches">Watches</option>
      </select>
Keyword:
<input name="keywords" type="text" id="keywords" size="25" maxlength="255">
Title:
<input name="title" type="text" id="title" size="18" maxlength="255">
<input type="submit" name="Submit" value="Submit"> 
    </form></td>
  </tr>
</table>

<?php//--- EDIT CONFIG ---//$public_key = "1BZ8XEWYCAHTWCV8J902";$private_key = "2MtDFk3C6AjuIriwP2Qq1ipZ/Eo1OHelTkjMpw2a";$AssociateTag = "ablestuff-20";//--- END EDIT CONFIG ---//

$site_url = $_SERVER["SERVER_NAME"];$category = $_REQUEST['category'];$keywords = $_REQUEST['keywords'];$title = $_REQUEST['title'];$page = $_REQUEST['page'];   $all = 50;   $CFG['amount_link_page'] = 5;   if(empty($CFG['amount_link_page'])) $show = $all; else   $show = $CFG['amount_link_page'];   $now = $page;   $start = ($now <= $show) ? 1 : $now-$show;   $end = (($all-$now)<$show ? $all+1 : $now+$show);   for($i=$start; $i<$end; $i++) {      if($i == 1 && empty($search) && $i!=$now)          $a_nav .= " <a href=\"http://$site_url/".$category."-".$keywords."-".$title."-1.html\">1</a> ";      elseif($i!=$now) $a_nav .= " <a href=\"http://$site_url/".$category."-".$keywords."-".$title."-$i.html\">$i</a> ";      else $a_nav .="<b>[".$i."]</b>";   }
//$category = "Electronics";
//$page = "1";
//$keywords = "mp3";
//$title = "sony";
function makeAWSUrl($parameters, $associate_tag, $access_key, $secret_key, $aws_version = '2009-10-01') {
  
$host = 'ecs.amazonaws.com';
  
$path = '/onca/xml';
  
$query = array(      
    
'Service' => 'AWSECommerceService',
    
'AWSAccessKeyId' => $access_key,
    
'AssociateTag' => $associate_tag,
    
'Timestamp' => gmdate('Y-m-d\TH:i:s\Z'),
    
'Version' => $aws_version,
  );
  if (
is_array($parameters)) {
    
$query = array_merge($query, $parameters);
   }
  
ksort($query);
  
$temp = array();
  foreach (
$query as $k => $v) {
    
$temp[] = str_replace('%7E', '~', rawurlencode($k)) . '=' . str_replace('%7E', '~', rawurlencode($v));
  }
  
$signable = implode('&', $temp);
   
$stringToSign = "GET\n$host\n$path\n$signable";
  
$hex_str = hash_hmac('sha256', $stringToSign, $secret_key);
  
$raw = '';
  for (
$i = 0; $i < strlen($hex_str); $i += 2) {
    
$raw .= chr(hexdec(substr($hex_str, $i, 2)));
  }
  
$query['Signature'] = base64_encode($raw);
  
ksort($query);
  
$temp = array();
  foreach (
$query as $k => $v) {
    
$temp[] = rawurlencode($k) . '=' . rawurlencode($v);
  }
  
$final = implode('&', $temp);
  return 
'http://' . $host . $path . '?' . $final;
}
$url = makeAWSUrl(array('Title' => $title, 'ItemPage' => $page, 'Keywords' => $keywords, 'Operation' => 'ItemSearch', 'ResponseGroup' => 'Small', 'SearchIndex' => $category), $AssociateTag, $public_key, $private_key);
$xml = simplexml_load_file ($url);
$ii = 0;   foreach($xml->Items as $results) {   $totalresults = $results->TotalResults;   $totalpages = $results->TotalPages;   echo "<p>Total Results is: $totalresults<br />Total Pages is: $totalpages</p>";   }
   echo "<p>$a_nav</p>";
$iii = 0;   foreach($xml->Items->Item as $item) {   $ASIN = $item->ASIN;
    
$Name = $item->ItemAttributes->Title;   echo "$ASIN -> $Name<br />";   }
   echo "<p>To copy:</p>";
$iiii = 0;   foreach($xml->Items->Item as $itemcopy) {   $ASINcopy = $itemcopy->ASIN;   echo "$ASINcopy<br />";   }
?>


แก้ไขไฟล์ index.php ในบรรทัด นี้ใส่ ID ของตัวเองก่อนครับ
//--- EDIT CONFIG ---//
$public_key = "1BZ8XEWYCAHTWCV8J902";
$private_key = "2MtDFk3C6AjuIriwP2Qq1ipZ/Eo1OHelTkjMpw2a";
$AssociateTag = "ablestuff-20";
//--- END EDIT CONFIG ---//
.htaccess
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)-([^/]*)-([^/]*)-([^/]*)\.html$ //index.php?category=$1&keywords=$2&title=$3&page=$4 [L]
การติดตั้งก็สุดง่ายครับ สร้างซับโดเมนขึ้นมา หรือไม่ก็ใส่ลงใน appserv เลย ให้สองไฟล์นี้อยู่ใน folder เดียวกัน

copy code ที่ผมแยกไว้ให้ save เป็นสองไฟล์ตามรูปครับ index.php กับ .htaccess ครับ
ถ้าไม่ได้ให้ลองปรับเป็น php5 ครับ หรือไม่ก็ลองตรวจสอบโอสต์ดูว่าเปิดให้ใช้งาน .htaccess หรือเปล่าครับ

วิธีใช้*
1. ถ้า search แบบ All ไม่ต้องใส่ keyword ใน ช่อง title ครับ
2. ถ้า search แบบ Category ให้ใส่ keyword แล้วใส่ Title เพื่อกำหนดให้ดึงสินค้ามี Title ตามที่เราใส่ไปครับ