2010年06月17日

キャンペーン情報が取得できるね

リンクシェアでセール&クーポンサーチ Webサービス(名前長い、、、)がリリースされた模様。

リンクシェア・ジャパン、新機能セール&クーポンサーチ Webサービス」本日開始
セール&クーポンサーチ Webサービスとは

まだ仕様書は読んでないけど、キャンペーンとかセールとかに特化してリンクとれたらうれしいな、と思っていたのでこれは便利そう。
やはり自分でWebサービスを処理してリンクを作りたいので、若干癪なんですが、クーポンフィーダーなるものが一緒にリリースされていたので、さっそく使ってみるテスト。
アプリを使うために利用申請が必要という事だったので、結構時間がかかるかなと思いましたが、申請後さほど時間かからず使えるようになりました。
やったね♪


フルバナー型で取得してみた。
うん、とりあえずいい感じで配信されてくるね。
もっと提携関係増やせば、配信情報が充実するかな。

あとで仕様書を読んでみよう。

2010年06月09日

リンクシェアのBentoBoxアプリを使うためのアプリ?

リンクシェアのBentoBoxプロジェクトに参加しているのですが、いろいろ面白いアプリが集まっている中、 その利用には、基本的にWebサービス用のトークンとか、サイトコードどちらかが必要になってるようです。

Webサービス用のトークンは管理画面から取得できるんで、さほど難しくないのですが、 サイトコードを取得するのに結構苦労してたり、どこがサイトコードなん?というのがあったり。

そこで、リンクシェアのリンクコードをいれたら、そこからサイトコード部を識別して返すような仕組みを作ってみました。
作ったといっても、JavaScript数十行ですけど。。。

リンクシェア サイトコード判別ツール

仕組みとしては、最初は正規表現を使ってマッチングしようとしてたのですけど、 私自身があまり正規表現を使ったコーディング経験が少なく、 本当にこのパターンで全てをマッチングできるのか?みたいなところで不安だったので、 結局は文字列検索をベースにした仕組みにしてみました。

・サイトコードは「?id=xxxxx」の形式でセットされている
・サイトコードは現状11ケタである

って事を利用して、「?id=」という文字列の出現位置をチェック、
その位置を元に「?id=xxxxxx」の×部分を11ケタ取り出す。

ただ、これだとたまたま「?id=」という文字列の並びがあった場合に誤検出してしまうので、 チキンな私は、サイトコードの後の文字が「&」になってるか、というところをチェックするようにしてみました。
さすがに「?id=11ケタ&」という並びになってたら、ほぼサイトコードである事が濃厚ということで。

絶対に誤検出しないかといわれると絶対ではないですし、責任はもてませんので、自己責任で利用してください。

リンクシェア サイトコード判別ツール

2010年03月24日

イージーリンク@リンクシェア

リンクシェアにてイージーリンク機能がリリースされた〜という事で、さっそく貼ってみるテスト
何がでるかな、何がでるかな♪
メンテナンスフリーは楽チンですね。



posted by Might at 18:15| Comment(0) | TrackBack(0) | その他

2009年11月16日

BentoBox掲載!

今回リンクシェアでBentoBoxという開発コミュニティが始まって、 めでたくそこのアプリとして、これまで少しづつ作ってきたLinkMakerが掲載となりました!

http://www.bento-box.jp/

その過程で、アプリの名前を正式にEasy LinkMakerとしてみました。

コミュニティもできたので、さっそく書き込んできたりして。

最近なかなか記事更新できてないのですが、 せっかくこういったテッキーなところにフォーカスあたるサービスがスタートしたってことで またアプリ作成意欲が少しずつ増加中です。

現在、マーチャンダイザーを活用した検索サイトを作成中ですので、 またリンクシェアのクロスオーバーサーチだけに関わらず、 マーチャンダイザーにもフォーカス当てながら紹介&開発していけたらなと思っています。

#放置してたら入りまくってたアダルト系のトラックバック消さなくちゃ、、、
posted by Might at 14:22| Comment(0) | TrackBack(3) |  [応用]LinkMaker ver1.0

2009年07月03日

LinkShare LinkMakerすこし改修

先日リンクシェアのクロスオーバーサーチを使ったLinkShare LinkMakerをPHP5に対応させるために、ソースコードを少し改修したのですが、 さらにリンクコードのコピーが正常に動かなくなっていることに気づいていました。

IEではクリップボードを操作するインタフェースがあるのでそれを使っていたのですが、 それ以外のブラウザの場合Flashを間に噛ましながらクリップボードへアクセスしていました。

ただ、ちょっと原因不明ですがうまいこと動いていなかったので、textarea使って、普通にコピペできるように修正してみました。

あと少し不具合があるのと、リンクシェアのクロスオーバーサーチが少しバージョンアップしたようなので、また少し時間をみて改修する予定。
現在、マーチャンダイザーを使ったプログラムも少しずつ準備中です。

LinkShare LinkMaker

2009年05月17日

マーチャンダイザーとDB連携サンプル

前回リンクシェアのマーチャンダイザーファイルをパースするところまで書いたので、今回はそれをDBへ取り込むところを書いてみようと思います。

ただ、結構件数が多い場合があるので、2回目以降取り込む時の更新/削除処理が重くなりそう。
なので、一度テーブルをトランケートしてから一括取り込みをするようなコンセプトでいきます。
これだと一瞬テーブルに何もデータがない瞬間ができるのですが、処理的には軽くシンプルになりますね。

また一括取り込み処理も1行1行INSERT文発行でとりこむのではなく、MySQLにあるテキストファイル一括取り込み用のインタフェースを利用することで、さらに高速化してみようと思います。

[今回の処理方針]
1.対象テーブルのトランケート
2.一括インポート
3.INDEXの再構成

テーブルから一瞬でもデータがなくなることを防ぎたいという場合は、もうひとつ一括取り込み用で、同じスキーマのテーブルを準備しておいて、

・テンポラリテーブルの方に一括取り込み
・処理が正常に終わったら正規のテーブルのテーブル名をリネーム
・テンポラリテーブルのテーブル名を正規テーブル名にリネーム
・これまで正規テーブルだった方を次回テンポラリテーブルとして利用するためにトランケート

のようなロジックでもありなのかなと。


というわけで、リンクシェアのマーチャンダイザー形式になっているものを一部カラム順等を並べ替えて、改めて一括取り込みできるように整形たファイルを、今回の方針に従って取り込むコードを書いてみました。


DBへ接続、対象テーブルをトランケート、一括取り込み、アナライズを順番にやっているだけなので、特別なことはないです。
ただ、これは内部用の処理であることと、引数として渡されるファイル名も悪意をもって改ざんされない事を前提としています。
そういった事が想定される場合には、DBに対しての不用意なコマンド実行を許してしまうことになるので、そういった場合は入力パラメータを十分検査するなどセキュリティ対策を十分に考慮するようにしてください。

これで、リンクシェアのマーチャンダイザーをデータベースに一括取り込みできるところまで完成したので、引き続いてこのデータベースをWEB上から検索できるようにしていきたいと思います。
posted by Might at 09:50| Comment(0) | TrackBack(0) | マーチャンダイザー

2009年04月10日

マーチャンダイザーファイルパースプログラム

すっかり間があいてしまっていますが、決してやめたわけではなく、時間をみつけてぼちぼちやっていってます。

というわけで、リンクシェアのマーチャンダイザーに関する取り組み、商品データ検索を作るということで、今回はマーチャンダイザーファイルを読み込んでいく処理を考えてみたいと思います。

リンクシェアのマーチャンダイザーファイルは文字コードUTF-8で、各カラムは半角パイプ「|」文字で区切られているファイルです。
(詳細はリンクシェアサイトから仕様書をダウンロードして見てみてください)

最近リンクシェアのホームページがリニューアルされ、「使いこなそう」のコーナーに、クロスオーバーサーチとともにマーチャンダイザーも紹介されています。


ということで、マーチャンダイザーファイルを読み込んでいくプログラムですが、今回はPerlで書いてみたいと思います。
といっても、パイプ区切りのテキストファイルを読むだけですので、それほど難しくはありません。
リンクシェアのマーチャンダイザーファイル形式では、ヘッダ行、データ行、トレーラ行があって、実際の商品データが入っているのがデータ行です。

今回はファイルをオープンして、データ行だけを読んでいく処理を書いてみました。
このプログラムはただ単に各カラムの値を変数に読み込んでるだけで、特に特別な動きはないのですが、ここまでのプログラムがあれば、自分の処理したいファイルフォーマットにコンバートするなど、自由にやれると思います。

次回は、マーチャンダイザーファイルを読み込んで、それをデータベース(MySQL)にインポートするプログラムまで進めたいと思います。
posted by Might at 17:56| Comment(0) | TrackBack(0) | マーチャンダイザー

2008年09月15日

マーチャンダイザーサンプル(テーブル作成)

リンクシェアのマーチャンダイザーデータをDBに取り込むので、その放り込むテーブルを作成します。
基本的には仕様書そのままに、ECサイトを識別するIDフィールドを追加。

さらに最終的にはクロスオーバーサーチのサンプルで作ったように、Web上に検索窓を設けて、フリーワードで検索させたく、 その時に複数のフィールドに対してlike条件でマッチングをかけたときのパフォーマンス悪化を考え、 それらをひとつにまとめてセットしておく「search_keys」というフィールドを準備してみました。

検索キーワードや商品説明、商品名といった情報は、全てこのフィールドにいれてしまって、 全文検索はこのフィールドだけに対して条件指定できるような設計にしてみます。

そんなわけで、今回作成したスキーマはこんな感じになりました。
(利用DBはMySQL4です)

マーチャンダイザーデータスキーマ
posted by Might at 11:48| Comment(2) | TrackBack(0) | マーチャンダイザー

2008年08月31日

マーチャンダイザーとDB連携

リンクシェアのマーチャンダイザーを使ったサンプル作成引き続きです。

前回はダウンロード処理のサンプルを書いてみたのですが、一番需要のありそうな、以下のような処理を作っていきたいと思います。
ダウンロードはすでにできているので、その後の展開、パースといったところからですね。

1.ダウンロード
2.展開
3.パースしながらDBに取り込み

ただ、使っているサーバのディスク容量が潤沢ではないので、全ECを対象にして作ることができません。
商品数少なめなマーチャントを選んでサンプルを書いていってみたいと思います。

言語はPerl5.8,データベースはMySQLを利用していきます。
posted by Might at 09:22| Comment(0) | TrackBack(0) | マーチャンダイザー

2008年08月28日

マーチャンダイザー サンプル(全件ダウンロード)

リンクシェアのマーチャンダイザーサービスにアクセスし、商品リンクをダウンロードしてみたいと思います。
ただ、普通にFTPクライアントでアクセスしてダウンロードしても面白くないので、プログラムを書いてみます。

プログラムを書くうえで、マーチャンダイザーの仕様を把握しておく必要があるのですが、さほど難しくはありません。
ポイントとしては以下の通り。

・ダウンロードファイルは直接配置されているわけではない
・ダウンロードファイル名を特定するためのゼロバイトファイルが配置されているだけ
・配置されているファイル名の末尾4文字を除去したものがダウンロードファイル名となる。
・ファイル名がわかったら、GETコマンドで取得する。
・ダウンロードされるファイルがgz圧縮されたバイナリファイルになっているので、処理する前には展開する必要がある。

というところでしょうか。
対象ECサイトは、ファイル名にECサイトを識別するIDが含まれているし、ファイル中のヘッダにも記載があるので、特定のECサイトのデータのみを取りたい人は、まずはファイル名で識別すればよいと思います。

というわけで、実際のソースコードを書いていくわけですが、今回はFTPアクセスが必要であり、そこをソケットレベルでプログラミングするのはあまりに非効率なので、便利なライブラリを利用させて頂こうと思います。
言語はPerl、FTPへのアクセスは「Net::FTP」ライブラリを利用しました。

その時点で取得可能なマーチャンダイザーファイルを全件ダウンロードするサンプルコードです。

ダウンロード後、別途gunzipコマンド等で展開すれば、あとはCSVファイルを処理するようなプログラムコードのイメージで処理していくことができます。

何かこんなサンプルが欲しいとかいうリクエストがあれば、すぐに対応できるかわかりませんが、お気軽にどうぞ。
posted by Might at 18:15| Comment(0) | TrackBack(0) | マーチャンダイザー