はじめての自作にチャレンジしているカエレバ代替AmazonAPIを使わない自動生成商品リンクサービス「あまりん」を更新しました。
いろいろと不具合がありましたが、なんとか使えるレベルにこぎつけました。
もくじ
取得方法を変更
はじめての自作サービス、安易なネーミングですが「あまりん」と名付けました。そのままです。
事の経緯は、前回の記事に書いた通り。
AmazonAPIを使おうとしても、実績がないと使えないんですね。
ということで、先人たちの知恵と努力を惜しみ無く使わせていただいて、「Amazonの商品ページから必要な情報をゲットして、カエレバと同等の表示」を目指していましたが、情報の取得方法に問題があり、上手く機能していませんでした。
今回のバージョンアップで、取得方法を以下のように変更しました。
取得情報 | 変更前 | 変更後 |
---|---|---|
画像 | ASINから取得 | アマゾンアソシエイトバーの「画像」をクリックして、表示されるリンクURLを取得 |
タイトル | Titleタグから取得 | Titleタグからプロンプト表示似て取得 |
画像・タイトルリンクURL | ASINから取得 | アマゾンアソシエイトバーの「画像」リンクから取得 |
検索用キーワード | BylinInfoタグから取得 | Keywordタグから取得 |
使い方
1.アマゾンアソシエイトバーの「画像」をクリックする。
画像リンクURLが選択状態で表示されるので、ブックマークレットをクリック。
2.タイトルの取得
タイトルのプロンプトが表示されるので、変更が必要であれば編集しOKをクリック。
3.製造元
製造元のプロンプトが表示されるので、変更が必要であれば編集しOKをクリック。
4.検索用キーワード
検索用キーワードのプロンプトが表示されるので、変更が必要であれば編集。
編集完了、問題なければOKをクリック。
5.あまりんのページ
「あまりん」のページが立ち上がるので、生成されたリンクをコピペ。
あまりんVer.2.0
ブックマークレット用のjavascriptと本体のPHPです。
ブックマークレット
大きく変更を加えています。
javascript:(function(){var img=window.getSelection().toString();var link;$link=img.replace(/<a href="(.+)" target.*/,'$1');var nakami;$nakami=location.pathname.replace(/.*\/(ASIN|dp|product|aw\/d)\/([0-9A-Z]+)\/.*/,'$2');var taito;$taito=prompt('Title',document.title.replace(/^Amazon.*\s(:|\|)\s(.+)(:|\s\|)\s.*$/,'$2'));var mkinfo = document.getElementById('bylineInfo');var maker;$maker=prompt('Product',mkinfo.textContent);var kw;$kw=prompt('Keywords',document.getElementsByName('keywords').item(0).content);window.open('https://weblog10.com/amalin.php?link='+encodeURIComponent($link)+'&asin='+$nakami+'&title='+$taito+'&maker='+$maker+'&kw='+$kw)})();
Javascript内のURLを、ご自身がPHPファイルを設置したURLへ書き換えて使用してください。
このまま使用すると、私のアフィリエイトIDでリンクが生成されます。
あまりん(amalin.php)
PHPの方は、取得した情報に合わせての変更です。基本構造は以前のままです。
<?php // WordPress用の関数をここでも使いたいから読み込む require_once( dirname( __FILE__ ) . '/wp-load.php' ); $page_url = rawurldecode($_GET["link"]); $getasin = $_GET["asin"]; $gettitle = $_GET["title"]; $getmaker = $_GET["maker"]; $getkw = $_GET["kw"]; // XXXXXXXXの箇所にアソシエイトタグを指定 //AmazonアソシエイトID $Amazon_associate_tag = 'XXXXXXXX'; //楽天アフィリエイトID $rakuten_affiliate_id = 'XXXXXXXX'; //Yahoo!バリューコマースSID $sid = 'XXXXXXXX'; //Yahoo!バリューコマースPID $pid = 'XXXXXXXX'; // 使用する商品データを取得して変数に格納 $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/gp/search?keywords='.$getkw.'&tag='.$Amazon_associate_tag; $rakuten_url = 'https://hb.afl.rakuten.co.jp/hgc/'.$rakuten_affiliate_id.'/?pc=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F'.$getkw.'%2F-%2Ff.1-p.1-s.1-sf.0-st.A-v.2%3Fx%3D0%26scid%3Daf_ich_link_urltxt%26m%3Dhttp%3A%2F%2Fm.rakuten.co.jp%2F'; $yahoo_url = 'https://ck.jp.ap.valuecommerce.com/servlet/referral?sid='.$sid.'&pid='.$pid.'&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:(function(){var img=window.getSelection().toString();var link;$link=img.replace(/<a href="(.+)" target.*/,'$1');var nakami;$nakami=location.pathname.replace(/.*\/(ASIN|dp|product|aw\/d)\/([0-9A-Z]+)\/.*/,'$2');var taito;$taito=prompt('Title',document.title.replace(/^Amazon.*\s(:|\|)\s(.+)(:|\s\|)\s.*$/,'$2'));var mkinfo = document.getElementById('bylineInfo');var maker;$maker=prompt('Product',mkinfo.textContent);var kw;$kw=prompt('Keywords',document.getElementsByName('keywords').item(0).content);window.open('https://weblog10.com/amalin.php?link='+encodeURIComponent($link)+'&asin='+$nakami+'&title='+$taito+'&maker='+$maker+'&kw='+$kw)})();">あまりんブックマークレット</a><br> <a href="javascript:(function(){var img=window.getSelection().toString();var link;$link=img.replace(/<a href="(.+)" target.*/,'$1');var nakami;$nakami=location.pathname.replace(/.*\/(ASIN|dp|product|aw\/d)\/([0-9A-Z]+)\/.*/,'$2');var taito;$taito=prompt('Title',document.title.replace(/^Amazon.*\s(:|\|)\s(.+)(:|\s\|)\s.*$/,'$2'));var mkinfo = document.getElementById('bylineInfo');var maker;$maker=prompt('Product',mkinfo.textContent);var kw;$kw=prompt('Keywords',document.getElementsByName('keywords').item(0).content);window.open('https://weblog10.com/amalin.php?link='+encodeURIComponent($link)+'&asin='+$nakami+'&title='+$taito+'&maker='+$maker+'&kw='+$kw)})();">あまよめブックマークレット</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へ変更してください。
「あまよめ」は、現時点は未完成ですので、「あまりん」と同じものが入っています。
今後、製作予定です。
まとめ
普通にコード書いてる方からみると、あまりにも拙いと思います。お恥ずかしい限りです。
入門書をいくら読んでも全く作れる気がしませんでしたが、実際に実例を見ながら動くものを作ってみるというのが自分にはあっているようです。
今回一番苦労したのが、Javascriptで取得したリンクURLをPHPへ渡す方法でした。
そのまま渡すと、&以下が消えてしまいます。
GETで取得すると配列化してしまうのが原因だったのですが、そこにたどり着くのにかなり時間がかかってしまいました。
原因が判明して、ではどう対処しようか、配列化しないで一括で送る方法でもまた悩みました。
わかってしまえばすぐに解決できるのですが、そこにたどり着くまでが大変ですね。
世の中のプログラマーは、つくづく凄い人達だと実感しました。
コメント
[…] weblog10.com […]
[…] weblog10.com […]
[…] weblog10.com […]