【アフィ】リンクシェアのマーチャンダイザーとか

開発ざれごとlinkshare,マーチャンダイザー

sc20111219135009

2日前に申請して、メールが来たと思ったら、「件名ねぇぞコラァ」という内容の返答が・・・。

えぇ・・ちゃんと確認したのにぃ。。(´・ω・`)

と、リンク先を見たら、申請が承認されているようでした。

問合せフォームと、マーチャンダイザー申請フォームが一緒だからなんでしょうねぇ。めっちゃ紛らわしい。

sc20111219141312

実際にアクセスしてみると、ファイルサイズがことごとくゼロ??です。

DB更新とかしばらく掛かるんだろうか。

追記:

・・・と思ったら、ダウンロードする手順があるようだ。普通にDLすると、ファイルサイズがゼロのまんまの状態。FFFTPなら、コマンドの「ファイル名を指定してダウンロード」で、いちいちファイル名を書かないとダメなようです(←ファイル名を適当ではダメ)

sc20111219191418ログを見ると、Perlプログラムが走ってるようで、ちゃんと確認されているようです。うわっ、自動化するつもりだったんだが、・・できんのか?

追記:公開Perlスクリプトで出来るようです

しかし、アクセスする度にファイルが増えまくってるんだけど、内部では色々動作しているようですね。

メールにも書かれてましたが、1ヶ月以上アクセスが無いと、自動的に解除されるようです。

sc20111219193201

ちなみにCSVフォーマットは公開されて無いのですが、ざっとみたところ、ヘッダ行と最後に1行づつ追加されてます。HDR(ヘッダ)とTRL(戻りレコード数)

各項目も、入って無いところばかりですが、おおかた、決まった場所に入っているように思えます。他にカテゴリが入ったTXTがあるのですが、あまり利用価値が無さそう・・です。UTF8(BOM無し)、パイプ(|)区切です。(写真ではLibreOfficeで読み込んだもの)

sc20111219194749

フォーマットは公開されていないので、唯一公開されているPerlスクリプトを解析してながら追っていくしかないでしょうね。

http://linkshare.okweb3.jp/EokpControl?&tid=87603&event=FE0006

追記:と思ったら公開されてました。

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

このスクリプトは、ダウンロードからHTML生成までを行うサンプルですが、Windowsではそのままでは動きません。(手持ちのCentOSでは、すんなり動作しました)

どうしても動かしたいなら、48行をコメントし、172行のGUNZIP行をコメントします。一旦実行して、ダウンロードだけします。あと、ダウンロードされたファイルを、手動で解凍してあげます。

そしたら、49行をコメントして、実行するとHTMLページが生成されてます。(Linuxコマンドが使えないので、こんな手順踏みます)

ただ、(いまどき)EUCファイルで生成されますので、ブラウザによってはエンコード指定してあげないと見れません。JCODEを必須としている点を見るだけでも、かなり古いコードなんですねぇ。

このスクリプトを頂くなら、DL部分だけを残して、DL後のTXTを、お好きな言語でいじる感じでしょうね。自分はこんな感じにしました。Perl触ったの久しぶり(;^ω^)

#!/usr/bin/perl -U
#
use strict;
use Net::FTP;

# LinkShare Merchandiser Server
my $FTP_HOST     = "aftp.linksynergy.com";
# Merchandiser Userid
my $FTP_USERID   = "******ユーザーID";
# Merchandiser Password
my $FTP_PASSWORD = "******パスワード";
# MerchandiserData dir 環境にあわせて書き換えてください
my $DOWNLOAD_DIR = "./";
# gunzip command path
my $GUNZIP       = "/bin/gunzip";
my $FTP_MODE = 1; # 1:passive mode 0:active mode
{
  &clearDirectory();
  &getMerchandiserDataByMID(""); ←MID指定/これだと全部ダウンロードです
  exit;
}

# ————————————————————————————-
# 各出力ディレクトリのクリア
# ————————————————————————————-
sub clearDirectory {
  system("/bin/rm -rf $DOWNLOAD_DIR/*.txt"); # ダウンロードディレクトリの掃除
}

# ——————————————————–
# 特定ECサイトのマーチャンダイザーファイルを取得、展開する
#  引数:ECサイト識別ID
# ——————————————————–
sub getMerchandiserDataByMID {

  my $mid  = shift @_;
  my $time = ";

  my $ftp = Net::FTP->new($FTP_HOST, Debug => 1, Passive => $FTP_MODE);
  $ftp->login($FTP_USERID,$FTP_PASSWORD);
  my $dirname  = $ftp->pwd();
  my $fileList = $ftp->ls();

  foreach my $value ( @$fileList ){
    if($value =~ /txt.gz.lmp/) {
      if($value =~ /^$mid/) {
        my $downloadFileName = substr($value, 0, -4);
        $ftp->binary();
        $time = localtime(time);
        print "***** MID:$mid Download start [$time] …. ";
        $ftp->get($downloadFileName, "$DOWNLOAD_DIR/$downloadFileName");
        $time = localtime(time);
        print " end [$time] [filename:$downloadFileName] *****n";
        print "   gunzip process start …. ";
        system("$GUNZIP -f $DOWNLOAD_DIR/$downloadFileName");
        print " endn";
      }
    }
  }
  $ftp->quit;
}

sc20111219195210

213行あたりで一目ですね。

8/9行は、商品説明文(9はより詳細文)、但し、空欄の可能性があり。

価格は14番目となるようですが、13番目は 割引後価格になるようです(空欄の場合が多い)・・が、12番目がamountの場合との事。これが、%表記になる場合もあるようです。ただ、そんなデータ見たことないんだけど。

アフィリエイトは各社いろいろありますが、リンクシェアが一番WebAPI等外部サービスを提供してくれてます。マーチャンダイザーとかその極みです。DBをまるごと提供してくれてるんですよ。

ただし、リンクシェアは最も審査が厳しいので、手軽に・・なんて気持ちだと断られます。だからもって、有名な企業が名を連ねてる訳です。

しかし、マーチャンダイザーを提供していても、情報が無いところが多いようです。うーむ。いまのところニッセンが一番大きいしデータ整理されてる印象(約40MB、小概要文は携帯向けにも使えそうな形式)、提供先によっては間違った項目にデータ入ってたり、データが綺麗に収まってる(価格系は全項目)サンワダイレクトとか。

いずれも、カテゴリが文字列そのままなので、自前でID化するにも、途中で変更とかされそうで怖いですねぇ。マーチャンダイザー全体で共通プログラムにするよりも個別対応した方がよさそうな気がしてきます。

さて、どんな調理を施そうか・・(・∀・)

リンクシェア

開発ざれごとlinkshare,マーチャンダイザー

Posted by nabe