動画コンテンツや、ライブチャット、オークションや電子書籍等を扱う、DMM.comのアフィリエイトサービス、DMMアフィリエイトで、ウェブサービスAPIが公開されました。
ピンっとこない方もいるかもしれませんが、これによりアフィリエイトが格段にやりやすくなります。

検索キーワードや、ジャンルを指定して、特定のURLにリクエストを送れば、DMM.comで公開されている商品の情報やアフィリエイトURLを返してくれるAPIです。

利用するには、DMMアフィリエイトへの登録と、APIの利用登録が必要です。
詳しくはこちら → DMM webサービス

ちょっと説明すると、api利用登録すると、APIキーが発行され、リクエストする際に必要になります。
URLは基本的に下記のようなURLになります。

php等のプログラムを使い、このURLにリクエストを送ると、XMLが返されます。
そのXMLをxml_parse_into_structなどの関数を使い、配列などに格納したり、json形式にすると表示する時に楽になります。

xmlの操作は結構メンドクサイので、ちょっと工夫がひつようになりますね。
私の場合は配列に格納しています。

phpで扱うので配列の方が便利です。
サンプルプログラムを載せます。

[php]
<?php
//————————————————————–//
// DMM APIのリクエストURLを作成
//————————————————————–//
$api_id = "xxxxxxxxx"; // API_ID
$aff_id = "xxxxxxxxx"; // アフィリエイト_ID(※アフィリエイトIDは末尾990~999以外リクエストできない。)
// DMM Webサービスに利用登録した後に、DMMアフィリエイトのページに行き、サイト情報で確認できる。
$timestamp = urlencode(gmdate("Y-m-d H:i:s", mktime()+9*60*60)); // タイムスタンプの作成

//————————————————————–//
// リクエストURLを作成する。ソートやキーワード等も指定可能
//————————————————————–//
$request_url = ‘http://affiliate-api.dmm.com/?api_id=’.$api_id.’&affiliate_id=’.$aff_id.’&operation=ItemList&timestamp=’.$timestamp.’&site=DMM.co.jp&version=1.00&site=DMM.com’;
// 必要に応じてfile_get_contentsで取得した情報の文字コードを変更する。
$content = mb_convert_encoding(file_get_contents($request_url), "UTF-8", "EUC-JP");

//————————————————————–//
// 取得した値を配列に格納する
//————————————————————–//
// 商品情報の配列
$item_array = array();
// 結果件数
$count = 0;

// XMLをパースして構造体(values)に入れる
$parser = xml_parser_create(‘UTF-8′);
xml_parse_into_struct($parser,$content,$values);
xml_parser_free($parser);

// 連想配列から値を取得
if($values){
$item_temp = null;
$tmp_keyword = 0;
$tmp_series = 0;
$tmp_maker = 0;
$tmp_director = 0;
$tmp_label = 0;
foreach ($values as $xml_data) {
if(isset($xml_data['tag'])){
// タグ名のよって分岐
switch ($xml_data['tag']) {
case ‘RESULT_COUNT’:
if(isset($xml_data['value'])){
$count = $xml_data['value'];
}
break;
case ‘ITEM’:
if($xml_data['type'] == ‘open’){
$item_temp = array();
}else if($xml_data['type'] == ‘close’){
array_push($item_array,$item_temp);
$item_temp = null;
}
break;
default:
if(is_array($item_temp)){
if(isset($xml_data['value'])){

if($xml_data['tag'] == ‘SERVICE_NAME’){
$item_temp[$xml_data['tag']] = $xml_data['value'];
} else if($xml_data['tag'] == ‘FLOOR_NAME’){
$item_temp[$xml_data['tag']] = $xml_data['value'];
} else if($xml_data['tag'] == ‘CATEGORY_NAME’){
$item_temp[$xml_data['tag']] = $xml_data['value'];
} else if($xml_data['tag'] == ‘CONTENT_ID’){
$item_temp[$xml_data['tag']] = $xml_data['value'];
} else if($xml_data['tag'] == ‘PRODUCT_ID’){
$item_temp[$xml_data['tag']] = $xml_data['value'];
} else if($xml_data['tag'] == ‘TITLE’){
$item_temp[$xml_data['tag']] = $xml_data['value'];
} else if($xml_data['tag'] == ‘URL’){
$item_temp[$xml_data['tag']] = $xml_data['value'];
} else if($xml_data['tag'] == ‘AFFILIATEURL’){
$item_temp[$xml_data['tag']] = $xml_data['value'];
} else if($xml_data['tag'] == ‘LIST’){
$item_temp[$xml_data['tag']] = $xml_data['value'];
} else if($xml_data['tag'] == ‘SMALL’){
$item_temp[$xml_data['tag']] = $xml_data['value'];
} else if($xml_data['tag'] == ‘LARGE’){
$item_temp[$xml_data['tag']] = $xml_data['value'];
} else if($xml_data['tag'] == ‘IMAGE’ && $xml_data['level'] == ’7′){
$item_temp['SAMPLE_S'][] = $xml_data['value'];
} else if($xml_data['tag'] == ‘PRICE’){
$item_temp[$xml_data['tag']] = $xml_data['value'];
} else if($xml_data['tag'] == ‘DATE’){
$item_temp[$xml_data['tag']] = $xml_data['value'];
} else if($xml_data['tag'] == ‘NAME’ && $xml_data['type'] == ‘complete’){
if($tmp_keyword == 1){
$item_temp['KEYWORD'][] = $xml_data['value'];
}
if($tmp_series == 1){
$item_temp['SERIES'][] = $xml_data['value'];
}
if($tmp_maker == 1){
$item_temp['MAKER_NAME'][] = $xml_data['value'];
}
if($tmp_director == 1){
$item_temp['DIRECTOR_NAME'][] = $xml_data['value'];
}
if($tmp_label == 1){
$item_temp['LABEL_NAME'][] = $xml_data['value'];
}
} else if($xml_data['tag'] == ‘ID’ && $xml_data['type'] == ‘complete’){
if($tmp_keyword == 1){
$item_temp['KEYWORD_ID'][] = $xml_data['value'];
}
if($tmp_series == 1){
$item_temp['SERIES_ID'][] = $xml_data['value'];
}
if($tmp_maker == 1){
$item_temp['MAKER_ID'][] = $xml_data['value'];
}
if($tmp_director == 1){
$item_temp['DIRECTOR_ID'][] = $xml_data['value'];
}
if($tmp_label == 1){
$item_temp['LABEL_ID'][] = $xml_data['value'];
}
} else if($xml_data['tag'] == ‘KEYWORD’ && $xml_data['type'] == ‘open’){
$tmp_keyword = 1;
} else if($xml_data['tag'] == ‘SERIES’ && $xml_data['type'] == ‘open’){
$tmp_series = 1;
} else if($xml_data['tag'] == ‘MAKER’ && $xml_data['type'] == ‘open’){
$tmp_maker = 1;
} else if($xml_data['tag'] == ‘DIRECTOR’ && $xml_data['type'] == ‘open’){
$tmp_director = 1;
} else if($xml_data['tag'] == ‘LABEL’ && $xml_data['type'] == ‘open’){
$tmp_label = 1;
}

} else {
if($xml_data['tag'] == ‘KEYWORD’ && $xml_data['type'] == ‘close’){
$tmp_keyword = 0;
} else if($xml_data['tag'] == ‘SERIES’ && $xml_data['type'] == ‘close’){
$tmp_series = 0;
} else if($xml_data['tag'] == ‘MAKER’ && $xml_data['type'] == ‘close’){
$tmp_maker = 0;
} else if($xml_data['tag'] == ‘DIRECTOR’ && $xml_data['type'] == ‘close’){
$tmp_director = 0;
} else if($xml_data['tag'] == ‘LABEL’ && $xml_data['type'] == ‘close’){
$tmp_label = 0;
}
}
}
break;
}
}
}
}

?>
[/php]

私の環境に合わせて作った取得の処理ですが、取得するタグの名前を変更するだけですべてのリクエストに対応できると思います。
もっとうまく作れたとは思いますが、急いでいれたのでこれで十分です!

アフィリエイトURLがそのまま返ってくるので非常に便利でデータベースも必要なくなったので、かなり使えます!
積極的にAPI等を使えば、日頃のアフィリエイトが楽しく楽になると思いますよ!