ヨメレバ代替AmazonAPIを使わない商品リンク自動生成シリーズのBOOK版「あまよめ」を作ってみた

 

はじめての自作にチャレンジしたカエレバ代替AmazonAPIを使わない自動生成商品リンクサービス「あまりん」を作成しましたが、本には対応していませんでした。
まだいろいろと不具合がありますが、なんとか使えるレベルになってきました。

本専用の商品リンク自動生成

はじめての自作サービス「あまりん」のBOOK版です。ヨメレバ風と思ってください。

事の経緯は、「あまりん」を作り始めた記事に書いた通り。

AmazonAPIを使おうとしても、実績がないと使えないということで、ならばAmazonAPIを使わずに自動生成できないかと思って作り始めました。

Amazonの本は、他の商品の数字と英字の組み合わせコードと違って、独自の10桁の数字のみで作られたコードになっています。
URLやhtmlのコードも違っていて、「あまりん」では取得できないものが多かったので、本専用ということで作りました。

使い方は、前回の「あまりんVer.2.0」の記事に書いたものと同じです。

あまよめ

ブックマークレット用のjavascriptと本体のPHPです。
本専用ですが、Kindleには対応していません。

ブックマークレット

javascript:(function(){var img=window.getSelection().toString();var link;$link=img.replace(/<a href="(.+)" target.*/,'$1');var nakami;$nakami=img.replace(/.*ASIN=([0-9A-Z]+)\&Format=.*/,'$1');var isbn;$isbn=document.getElementsByClassName(/.*ISBN\s([0-9]+)\).*/,'$1');var taito;$taito=prompt('Title',document.title.replace(/(.+)(:|\s\|)\s(.*)\s\|(.*)\s\|\s(通販|Kindleストア) \| Amazon/,'$1'));var mkinfo = document.getElementById('bylineInfo');var maker;$maker=prompt('Product',document.title.replace(/(.+)(:|\s\|)\s(.*)\s\|(.*)\s\|\s(通販|Kindleストア) \| Amazon/,'$3'));var kw;$kw=prompt('Keywords',document.getElementsByName('keywords').item(0).content);window.open('https://weblog10.com/amayome.php?link='+encodeURIComponent($link)+'&asin='+$nakami+'&isbn='+$isbn+'&title='+$taito+'&maker='+$maker+'&kw='+$kw)})();
Javascript内のURLを、ご自身がPHPファイルを設置したURLへ書き換えて使用してください。
このまま使用すると、私のアフィリエイトIDでリンクが生成されます。

あまよめ(amayome.php)

サーバに置くPHPです。

<?php
// WordPress用の関数をここでも使いたいから読み込む
require_once( dirname( __FILE__ ) . '/wp-load.php' );
$image_url = $_GET["img"];
$page_url = rawurldecode($_GET["link"]);
$getasin = $_GET["asin"];
$getisbn = $_GET["isbn"];
$gettitle = $_GET["title"];
$getmaker = $_GET["maker"];
$getkw = $_GET["kw"];

//ISBN10をJAN(ISBN13)へ変換して変数へ格納する関数を定義
function calcisbn13($data){
  //配列へ入れる
  $isbn_array = str_split($data);
  //チェックデジット計算
  $cd_13 = (9*1+7*3+8*1+$isbn_array[0]*3+$isbn_array[1]*1+$isbn_array[2]*3+$isbn_array[3]*1+$isbn_array[4]*3+$isbn_array[5]*1+$isbn_array[6]*3+$isbn_array[7]*1+$isbn_array[8]*3) % 10;
  $cd_13 = 10-$cd_13;

  if($cd_13==10){
    $cd_13 = 0;
  }

  $isbn13 = '978'.$isbn_array[0].$isbn_array[1].$isbn_array[2].$isbn_array[3].$isbn_array[4].$isbn_array[5].$isbn_array[6].$isbn_array[7].$isbn_array[8].$cd_13;

  return $isbn13;
}


//ISBN13を取得
if (preg_match('/^[0-9]{10}$/', $getasin)) {
  $isbn13 = calcisbn13($getasin);
}elseif (preg_match('/^[0-9]{10}$/', $getisbn)) {
  $isbn13 = calcisbn13($getisbn);
}

// XXXXXXXXの箇所にアソシエイトタグを指定
  //AmazonアソシエイトID
  $Amazon_associate_tag = 'XXXXXXXX';

  //Yahoo!バリューコマースSID
  $sid = 'XXXXXXXX';
  //Yahoo!バリューコマースPID
  $pid = 'XXXXXXXX';

//楽天APIリクエストURLのパラメータを配列で指定
$params = array(
  //取得フォーマットを指定
  'format' => 'xml',
  //商品ID(ISBN)を指定
  'isbnjan' => $isbn13,
  //XXXXXXXXの箇所に楽天アフィリエイトIDを指定
  'affiliateId' => 'XXXXXXXX',
  //XXXXXXXXの箇所に楽天アプリIDを指定
  'applicationId' => 'XXXXXXXX'
);

// パラメータの配列を結合
$parameter = '';
foreach ($params as $key => $value) {
    $parameter .= $key . '=' . rawurlencode($value) . '&';
}
// パラメータに不要な最後の文字列&amp;を削除
$parameter = rtrim($parameter, '&');

// エンドポイントのホスト、パスをそれぞれ変数に格納
$host_path = 'app.rakuten.co.jp/services/api/BooksTotal/Search/20170404';

// リクエストURLを作成
$request_url = 'https://' . $host_path . '?' . $parameter;

$result = file_get_contents($request_url,false,stream_context_create());


// XML形式の商品データをオブジェクトに変換
$xml = simplexml_load_string($result);

// 使用する商品データを取得して変数に格納
$rakuten_url = $xml->Items->Item->affiliateUrl;

// 使用する商品データを取得して変数に格納
$ad_url = 'https://ir-jp.amazon-adsystem.com/e/ir?t='.$Amazon_associate_tag.'&language=ja_JP&l=li2&o=9&a='.$getasin;
$image_url = '//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN='.$getasin.'&Format=_SL160_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag='.$Amazon_associate_tag.'&language=ja_JP';


// 各種アフィリエイトのキーワード検索用URLをそれぞれの変数に入れる
$amazon_url = 'https://www.amazon.co.jp/exec/obidos/ASIN/'.$getasin.'/'.$Amazon_associate_tag;
$yahoo_url = 'https://ck.jp.ap.valuecommerce.com/servlet/referral?sid='.$sid.'&amp;pid='.$pid.'&amp;vc_url=http%3A%2F%2Fsearch.shopping.yahoo.co.jp%2Fsearch%3Fp%3D'.$getkw;
?>
<html>
<head>
    <title>あまよめ</title>
</head>
<body>
  <h1>あまよめ</h1>
WEBLOGでカエレバと同じようにリンクを作るためだけに作ったページ
<h2>使い方</h2>
まずは、このブックマークレットをブラウザに保存する。<br>
<!-- これがブックマークレットの本体。URL部分はphpファイルを置いたパスに変更する必要がある。 -->
<a href="javascript%3A%28+function%28%29%7B+var+img%3Dwindow.getSelection%28%29.toString%28%29%3B+var+link%3B+%24link%3Dimg.replace%28%2F%3Ca+href%3D%22%28.%2B%29%22+target.%2A%2F%2C%27%241%27%29%3B+var+nakami%3B+%24nakami%3Dlocation.pathname.replace%28%2F.%2A%5C%2F%28ASIN%7Cdp%7Cproduct%7Caw%5C%2Fd%29%5C%2F%28%5B0-9A-Z%5D%2B%29%5C%2F.%2A%2F%2C%27%242%27%29%3B+var+taito%3B+%24taito%3Dprompt%28%27Title%27%2Cdocument.title.replace%28%2F%5EAmazon.%2A%5Cs%28%3A%7C%5C%7C%29%5Cs%28.%2B%29%28%3A%7C%5Cs%5C%7C%29%5Cs.%2A%24%2F%2C%27%242%27%29%29%3B+var+mkinfo+%3D+document.getElementById%28%27bylineInfo%27%29%3B+var+maker%3B+%24maker%3Dprompt%28%27Product%27%2Cmkinfo.textContent%29%3B+var+kw%3B+%24kw%3Dprompt%28%27Keywords%27%2Cdocument.getElementsByName%28%27keywords%27%29.item%280%29.content%29%3B+window.open%28%27https%3A%2F%2Fweblog10.com%2Famalin.php%3Flink%3D%27%2BencodeURIComponent%28%24link%29%2B%27%26asin%3D%27%2B%24nakami%2B%27%26title%3D%27%2B%24taito%2B%27%26maker%3D%27%2B%24maker%2B%27%26kw%3D%27%2B%24kw%29+%7D+%29%28%29%3B">あまりんブックマークレット</a><br>
<a href="javascript%3A%28function%28%29%7Bvar+img%3Dwindow.getSelection%28%29.toString%28%29%3Bvar+link%3B%24link%3Dimg.replace%28%2F%3Ca+href%3D%22%28.%2B%29%22+target.%2A%2F%2C%27%241%27%29%3Bvar+nakami%3B%24nakami%3Dimg.replace%28%2F.%2AASIN%3D%28%5B0-9A-Z%5D%2B%29%5C%26Format%3D.%2A%2F%2C%27%241%27%29%3Bvar+isbn%3B%24isbn%3Ddocument.getElementsByClassName%28%2F.%2AISBN%5Cs%28%5B0-9%5D%2B%29%5C%29.%2A%2F%2C%27%241%27%29%3Bvar+isbn13%3B%24isbn13%3Ddocument.getElementsByTagName%28%2F.%2AISBN-13%3A%3Cb%3E978-%28%5B0-9%5D%2B%29%3C%5C%2F.%2A%2F%2C%27%241%27%29%3Bvar+taito%3B%24taito%3Dprompt%28%27Title%27%2Cdocument.title.replace%28%2F%28.%2B%29%28%3A%7C%5Cs%5C%7C%29%5Cs%28.%2A%29%5Cs%5C%7C%28.%2A%29%5Cs%5C%7C%5Cs%28%E9%80%9A%E8%B2%A9%7CKindle%E3%82%B9%E3%83%88%E3%82%A2%29+%5C%7C+Amazon%2F%2C%27%241%27%29%29%3Bvar+mkinfo+%3D+document.getElementById%28%27bylineInfo%27%29%3Bvar+maker%3B%24maker%3Dprompt%28%27Product%27%2Cdocument.title.replace%28%2F%28.%2B%29%28%3A%7C%5Cs%5C%7C%29%5Cs%28.%2A%29%5Cs%5C%7C%28.%2A%29%5Cs%5C%7C%5Cs%28%E9%80%9A%E8%B2%A9%7CKindle%E3%82%B9%E3%83%88%E3%82%A2%29+%5C%7C+Amazon%2F%2C%27%243%27%29%29%3Bvar+kw%3B%24kw%3Dprompt%28%27Keywords%27%2Cdocument.getElementsByName%28%27keywords%27%29.item%280%29.content%29%3Bwindow.open%28%27https%3A%2F%2Fweblog10.com%2Famayome.php%3Flink%3D%27%2BencodeURIComponent%28%24link%29%2B%27%26asin%3D%27%2B%24nakami%2B%27%26isbn%3D%27%2B%24isbn%2B%27%26isbn13%3D%27%2B%24isbn13%2B%27%26title%3D%27%2B%24taito%2B%27%26maker%3D%27%2B%24maker%2B%27%26kw%3D%27%2B%24kw%29%7D%29%28%29%3B">あまよめブックマークレット</a><br>
あとは、Amazonの商品ページで、楽天とYahoo!の検索キーワードにするワードを選択した状態でブックマークレットを実行する。<br>

<div class="cstmreba">
<div class="kaerebalink-box">
<div class="kaerebalink-image"><a href="<?php echo esc_url($page_url); ?>" target="_blank" ><img border="0" src="<?php echo esc_url($image_url); ?>" /></a><img src="<?php echo esc_url($ad_url); ?>" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></div>
<div class="kaerebalink-info">
<div class="kaerebalink-name"><a href="<?php echo esc_url($page_url); ?>" target="_blank" ><?php echo esc_html($gettitle); ?></a></p>
<div class="kaerebalink-powered-date">posted with <a href="https://weblog10.com/amalin.php" rel="nofollow" target="_blank">あまよめ</a></div>
</div>
<div class="kaerebalink-detail"><?php echo esc_html($getmaker); ?></div>
<div class="kaerebalink-link1">
<div class="shoplinkamazon"><a href="<?php echo esc_html($amazon_url); ?>" target="_blank" >Amazon</a></div>
<div class="shoplinkrakuten"><a href="<?php echo esc_html($rakuten_url); ?>" target="_blank" >楽天ブックス</a></div>
<div class="shoplinkyahoo"><a href="<?php echo esc_html($yahoo_url); ?>" target="_blank">Yahooショッピング</a></div>
</div>
</div>
<div class="booklink-footer"></div>
</div>
</div>
<textarea onclick="this.select()">
<div class="cstmreba">
<div class="kaerebalink-box">
<div class="kaerebalink-image"><a href="<?php echo esc_url($page_url); ?>" target="_blank" ><img src="<?php echo esc_url($image_url); ?>" style="border: none;" /></a><img src="<?php echo esc_url($ad_url); ?>" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></div>
<div class="kaerebalink-info">
<div class="kaerebalink-name"><a href="<?php echo esc_url($page_url); ?>" target="_blank" ><?php echo esc_html($gettitle); ?></a></p>
<div class="kaerebalink-powered-date">posted with <a href="https://weblog10.com/amalin.php" rel="nofollow" target="_blank">あまよめ</a></div>
</div>
<div class="kaerebalink-detail"><?php echo esc_html($getmaker); ?></div>
<div class="kaerebalink-link1">
<div class="shoplinkamazon"><a href="<?php echo esc_html($amazon_url); ?>" target="_blank" >Amazon</a></div>
<div class="shoplinkrakuten"><a href="<?php echo esc_html($rakuten_url); ?>" target="_blank" >楽天ブックス</a></div>
<div class="shoplinkyahoo"><a href="<?php echo esc_html($yahoo_url); ?>" target="_blank">Yahooショッピング</a></div>
</div>
</div>
<div class="booklink-footer"></div>
</div>
</div></textarea>
</body>
</html>

「XXXXXXXX」の4箇所を、それぞれのアソシエイトタグに書き換えて使ってください。
ブックマークレットのコードは、設置URLをご自分のPHPファイルを置いたURLへ変更してください。

まとめ

コード書いてる方からみると、あまりにも拙いと思います。いろいろツッコミどころ満載だと思うので、是非コメントからでもツッコんでください。勉強させていただきます。

今回は楽天ブックスの検索ボタン用のリンクで、楽天APIを使ってみました。正直とても大変でした。
取得方法から出力まで逐一調べまくって、なんとか動くようになりました。

コードを書く時間って、大半は調べ物の時間ですね。

Amazonでお得に買う方法

ネット通販の代表格Amazon。Amazonプライム会員に登録すると送料無料の他にも様々な特典がついてきます。

そんなAmazonでの買い物を、さらにお得にするなら、Amazonギフト券への購入チャージをおすすめします。

 

現金でチャージするたびに、チャージ額 × 最大2.5%分のポイントがもらえます。

Amazonプライム会員の方なら是非活用して、更にお得に利用しましょう。

CHARGE NOW

コンビニ・ATM・ネットバンクが対象

1円単位で購入可能

スポンサーリンク

フォローする