Amazon ��ɸ��ξ��ʥ�󥯤ϡֹ����ץܥ���ȥץ饤�Х�����󥯤����礤�Ȥ���ޤʤΤǡ���ʬ�Ǻ�ꤿ���ʤ롣 ���ΤȤ���ɬ�פˤʤäƤ���Τ����ʲ����ʤ櫓����������μ����������ǤϤ����ʤ���
�����ASIN���Ѥ��� URL �Ǽ����Ǥ����褦���������ϲ����� URL �ξ��ʼ��̻Ҥ������� "15ndv8ndf9a" �Τ褦�� ASIN ����ñ��˵����ʤ��ʤäƤ��롣
http://ecx.images-amazon.com/images/I/15ndv8ndf9a._SS160_.jpg
��äơ���ˡ�Ȥ��Ƥ� Product Advertising API �Ȥ�����󥯺����Ѥ�API��Ȥ������ʤ���
���Ȥ��Ƥ�
����ϥ�����ץȤ� PHP ���Ѥ������ޤ��������С��� Apache �Ǥ���Τ� URL Rewrite �����Ū��ñ�����ѤǤ��롣IIS �ʤɤ���Ѥ��Ƥ����������Ĵ�٤Ƥ�������������
Amazon �����������ȤΥȥåץڡ������� "Product Advertising API" �����֤� "��������Ⱥ���" �ܥ��󤬤���Τǡ�����򥯥�å�������������Ȥ�������롣
�ʤ���Amazon.co.jp �Υ�������ȤǤϤʤ���AWS (Amazon Web Services) �Υ�������ȤʤΤǡ���äƤ��ʤ�������Ͽ��ɬ�פǤ��롣��Ͽ�ϱѸ�����������Ȥγ��������ʤɤ�Ŭ���˽񤤤Ƥ����Ф�����
��Ͽ����λ����� "�������������"��"����������������" ���饢��������������ǧ�Ǥ��롣Access Key ID �� Secret Access Key ��ɬ�פʤΤǡ����äƤ�����
����� Amazon Product Advertising API �ؤ��б���PHP�ǡ� - ��䤷���� �ʤɤ����ͤˤʤ롣 4���ܤ���50���ܤ�����ޤǤϤۤܤ��Τޤ޻Ȥ碌�Ƥ��������Ƥ��롣
5����6���ܤ� <Access Key ID> �� <Secret Access Key> �ò¤½¤ì¤¾ï¿½ï¿½ñ¤´ï¿½ï¿½ï¿½ï¿½ï¿½Ð¤è¤¤ï¿½ï¿½
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
$asin = isset($_GET["asin"]) ? $_GET["asin"] : "B003H7MVD2";
$option = isset($_GET["op"]) ? $_GET["op"] : "_SS160_";
// Access Key ID �� Secret Access Key ��ɬ�ܤǤ�
$access_key_id = '<Access Key ID>';
$secret_access_key = '<Secret Access Key>';
$xmlns = 'http://webservices.amazon.com/AWSECommerceService/2009-03-31';
// RFC3986 ������ URL ���󥳡��ɤ���ؿ�
function urlencode_rfc3986($str)
{
return str_replace('%7E', '~', rawurlencode($str));
}
// ����Ū�ʥꥯ�����Ȥ�������ޤ�
// - ������ʬ�Ϻ��ޤ��̤�
$baseurl = 'http://ecs.amazonaws.jp/onca/xml';
$params = array();
$params['Service'] = 'AWSECommerceService';
$params['AWSAccessKeyId'] = $access_key_id;
$params['Version'] = '2009-03-31';
$params['Operation'] = 'ItemLookup';
$params['ResponseGroup'] = 'Images';
$params['ItemId'] = $asin;
// Timestamp �ѥ�᡼�����ɲä��ޤ�
// - ���֤�ɽ���� ISO8601 �����������ॾ����� UTC(GMT)
$params['Timestamp'] = gmdate('Y-m-d\TH:i:s\Z');
// �ѥ�᡼���ν���򾺽���¤��ؤ��ޤ�
ksort($params);
// canonical string ��������ޤ�
$canonical_string = '';
foreach ($params as $k => $v) {
$canonical_string .= '&'.urlencode_rfc3986($k).'='.urlencode_rfc3986($v);
}
$canonical_string = substr($canonical_string, 1);
// ��̾��������ޤ�
// - �����ʸ����ե����ޥåȤ����
// - HMAC-SHA256 ��׻�
// - BASE64 ���󥳡���
$parsed_url = parse_url($baseurl);
$string_to_sign = "GET\n{$parsed_url['host']}\n{$parsed_url['path']}\n{$canonical_string}";
$signature = base64_encode(hash_hmac('sha256', $string_to_sign, $secret_access_key, true));
// URL ��������ޤ�
// - �ꥯ�����Ȥ������˽�̾���ɲ�
$request_url = $baseurl.'?'.$canonical_string.'&Signature='.urlencode_rfc3986($signature);
// �ꥯ�����Ȥ��� XML �����
$strXml = file_get_contents($request_url);
if (!$strXml)
{
echo 'Failed. Request URL = '.$request_url;
exit;
}
// URL �򸫤Ĥ���
if (preg_match("|s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+_.jpg|", $strXml, $matches))
{
//���ץ�����ñ¤´ï¿½ï¿½ï¿½ï¿½ï¿½
$url = preg_replace("|_[a-z0-9]+_|i", $option, $matches[0]);
}
if (strlen($url) > 0)
{
// URL �������Ǥ��Ƥ���Х�����쥯��
header("Location: ".$url);
}
else
{
// ���Ԥ������� XML �ò¤½¤Î¤Þ¤Þ½ñ¤½Ð¤ï¿½ï¿½Ê¥Ç¥Ð¥Ã¥ï¿½ï¿½Ñ¡ï¿½
echo $strXml;
}
�ʸ塢���Υ������� /cgi/amazon_image.php ����¸������ΤȤ��롣
1��2 ���ܤϥ�����ץȤ��Ϥ��ѥ�᡼���Ǥ��롣
asin | ���ʤ�ASIN |
---|---|
op | �������ץ���� |
�������ץ����� Amazon�ξ��ʲ����򥫥����ޥ������Ƥߤ�ʤ���1�� - ����꡼�ޥ���� �ʤɤ򻲹ͤˤ��롣_�ʥ�������������ˤǤϤ��ޤ줿ʸ����Ǥ��롣
�������ѹ��ϤΥ��ץ����ϲ������̤ꡣ
���� ��xxx ��500�ʲ��ο����� | ��ǽ | �� |
_SLxxx_ | ��ư�ꥵ���� �������⤵��xxx�˹�碌�롣����¾���դ�����Ū�˷��ꤵ���� | _SL160_ |
_SXxxx_ | ������ꥵ���� ������xxx�˹�碌�롣�⤵������Ū�˷��ꤵ���� | _SX100_ |
_SYxxx_ | �⤵����ꥵ���� �ʹ⤵��xxx�˹�碌�롣��������Ū�˷��ꤵ���� | _SY200_ |
_SSxxx or AAxxx_ | �������ꥵ���� �������⤵�Ȥ��xxx�˹�碌�롣Â��ʤ��������ˤ�;���ɲä����� | _SS160_ |
���Τ��ᡢ���Ȥ��� ASIN=B000000000 �ξ��ʤ������� 150px �Ǽ��Ф���������
/cgi/amazon_image.php?asin=B000000000&op=_SS150_
�Ȥ���Ф褤��
ǰ�Τ��ᡢ52 ���ܰʲ����ɲä��������ɤ��������ñ�ˤ��Ƥ�����
���Τޤޡ�img ������
<img src="/cgi/amazon_image.php?asin=B000000000&op=_SS150_"/>
�Ȥ��Ƥ���������Ϥʤ��Τ���������äȤ��ä��褯(?) .jpg ��ɽ���Ǥ���褦�ˤ��Ƥߤ롣
Apache �� URL Rewrite �����Ѥ��� .htaccess �˲����Τ褦���ɵ����롣
# Amazon ��������������ץ��� URL Rewrite RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f # with option RewriteRule ^amazon_image/([A-Z0-9]+)(_[_a-zA-Z0-9]+_)\.jpg$ /cgi/amazon_image.php?asin=$1&op=$2 [L] # without option RewriteRule ^amazon_image/([A-Z0-9]+)\.jpg$ /cgi/amazon_image.php?asin=$1 [L]
���ץ����Ĥ��ȥ��ץ���󤢤�ξ��� RewriteRule ��񤤤Ƥ��롣�����
amazon_image/B000000000_SS150_.jpg amazon_image/B000000000.jpg
�Ȥ����褦�� URL ���ꥯ�����Ȥ��줿�Ȥ������줾��
/cgi/amazon_image.php?asin=B000000000&op=_SS150_ /cgi/amazon_image.php?asin=B000000000
�Ƚñ¤´ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Î¤Ç¤ï¿½ï¿½ë¡£
����ˤ�� img �����ˤ�
<img src="amazon_image/B000000000_SS150_.jpg"/>
�ȵ��Ҥ��뤳�Ȥ��Ǥ��롣
Kenz Yamada�ʻ��ĸ���ˡ�1984ǯ������塣����äȤ��Ĺ����ʥץ�������äƤޤ���
�����ʤ�Τϥ�����ι�ԡ��������åȤ�Ȥβ�ꡢ����äȤ������ޤ���
�ܤ����� Web mixi �ǡ�