2008年08月22日

ValueCommerceの解析ルーチン

 バリューコマース・ウェブサービスで取得したXMLの解析サブルーチンです。例によってまた正規表現です。

 ソースは追記を見ていただくとして簡単な解説。
 XMLを受けたら、エラーが発生していないかチェックして、ひたすらハッシュに格納します。
 全部終わったら、ハッシュへのリファレンスを返します。

 アマゾンではハッシュのキーにASINを使っていましたが、バリューコマースではマーチャント,サブショップ,商品名を::でつないだものをキーにしています。
 そのせいで、Dumpの結果が非常に汚いものになっていますが、こうした理由は別エントリで。



サーブルーチンのコード:

# VC解析ルーチン(正規表現)
sub XML_Ana_VC{
my $xml = $_[0];

#エラーコードが含まれていないかチェック
return() unless($xml =~ /<vc:status>OK<\/vc:status>/);

#ハッシュ名を定義
my %list;
# @Itemに格納
my @Item = ($xml =~ /<item>(.+?)<\/item>/gcs);

my $k = 0;
#ひたすらノードの中身を代入代入
foreach(@Item){
#キーを作成(Merc::subShop::Goods)
my $i = join('::',((/<vc:merchantName>(.+?)<\/vc:merchantName>/)[0],(/<vc:subStoreId>(.+?)<\/vc:subStoreId>/)[0],(/<title>(.+?)<\/title>/)[0]));


#ソート順
$list{$i}{'SortBy'} = $k;
#productCodeを取得
$list{$i}{'PrCode'} = (/<vc:productCode>(.+?)<\/vc:productCode>/)[0];
#タイトルを取得
$list{$i}{'Title'} = (/<title>(.+?)<\/title>/)[0];
#詳細URLを取得
$list{$i}{'URL'} = (/<link>(.+?)<\/link>/)[0];
#概要を取得
$list{$i}{'Description'} = (/<description>(.+?)<\/description>/m)[0];
#表示カウント用イメージタグ
$list{$i}{'VC_Count_Tag'} = (/<vc:pvImg>.*?(<img.+?>).*<\/vc:pvImg>/)[0];
#マーチャント名
$list{$i}{'Merchant'} = (/<vc:merchantName>(.+?)<\/vc:merchantName>/)[0];
#JANコード
$list{$i}{'JAN'} = (/<vc:janCode>(.+?)<\/vc:janCode>/)[0];
#業界コード
$list{$i}{'markCode'} = (/<vc:markCode>(.+?)<\/vc:markCode>/)[0];
#プロダクトコード
$list{$i}{'productCode'} = (/<vc:productCode>(.+?)<\/vc:productCode>/)[0];
#製品型番
$list{$i}{'modelCode'} = (/<vc:modelCode>(.+?)<\/vc:modelCode>/)[0];
#サブストアID(Yahooショッピング限定)
$list{$i}{'subStoreID'} = (/<vc:subStoreId>(.+?)<\/vc:subStoreId>/)[0];
#サブストア名(Yahooショッピング限定)
$list{$i}{'subStoreName'} = (/<vc:subStoreName>(.+?)<\/vc:subStoreName>/)[0];
#成人指定
/<vc:adult>(.+?)<\/vc:adult>/;
if($1 eq "n"){
$list{$i}{'adult'} = 0;
}else{
$list{$i}{'adult'} = 1;
}
#発売日
$list{$i}{'Release'} = (/<vc:startdate>(.+?)<\/vc:startdate>/)[0];
#カテゴリー
$list{$i}{'Category'} = (/<vc:category>(.+?)<\/vc:category>/)[0];
#イメージ(小)
($list{$i}{'Image'}{'Small'}{'URL'},$list{$i}{'Image'}{'Small'}{'Height'},$list{$i}{'Image'}{'Small'}{'Width'}) = (/<vc:image class=\"small\" url=\"(.*?)\" height=\"(.*?)\" width=\"(.*?)\" \/>/)[0..2];
#イメージ(大)
($list{$i}{'Image'}{'Large'}{'URL'},$list{$i}{'Image'}{'Large'}{'Height'},$list{$i}{'Image'}{'Large'}{'Width'}) = (/<vc:image class=\"large\" url=\"(.*?)\" height=\"(.*?)\" width=\"(.*?)\" \/>/)[0..2];
#イメージ(フリー)
($list{$i}{'Image'}{'FreeSize'}{'URL'},$list{$i}{'Image'}{'FreeSize'}{'Height'},$list{$i}{'Image'}{'FreeSize'}{'Width'}) = (/<vc:image class=\"free\" url=\"(.*?)\" height=\"(.*?)\" width=\"(.*?)\" \/>/)[0..2];
#価格
$list{$i}{'Price'} = (/<vc:price>(.+?)<\/vc:price>/)[0];
#報酬金額
$list{$i}{'com_Value'} = (/<vc:commissionValue>(.+?)<\/vc:commissionValue>/)[0];
#報酬率
$list{$i}{'com_Percent'} = (/<vc:commissionPercent>(.+?)<\/vc:commissionPercent>/)[0];
#報酬修正
$list{$i}{'com_Fix'} = (/<vc:commissionFixed>(.+?)<\/vc:commissionFixed>/)[0];
#経度
$list{$i}{'geo_Keido'} = (/<vc:latitude>(.+?)<\/vc:latitude>/)[0];
#緯度
$list{$i}{'geo_Ido'} = (/<vc:longitude>(.+?)<\/vc:longitude>/)[0];
$k++;
}
return(\%list);
}



Dump結果(えらく長いので途中を略した。あと、一部値をマスクした)

$VAR1 = {
'Yahoo!ショッピング(ヤフー ショッピング)::store-homeshop::がくっぽいど + CUBASE STUDIO4 【MIDI/DAW/DTM】【送料無料】' => {
'geo_Ido' => undef,
'com_Value' => '1428',
'modelCode' => undef,
'subStoreName' => 'ホームショッピング',
'subStoreID' => 'store-homeshop',
'Title' => 'がくっぽいど + CUBASE STUDIO4 【MIDI/DAW/DTM】【送料無料】',
'Release' => '20080822',
'JAN' => undef,
'PrCode' => 'store-homeshop_S1502-YAG-0007',
'adult' => 0,
'URL' => 'http://ck.jp.ap.valuecommerce.com/servlet/referral?vs=#######&vp=#########&vc_url=http%3A%2F%2Frd.store.yahoo.co.jp%2Fhomeshop%2Fs1502-yag-0007.html',
'Merchant' => 'Yahoo!ショッピング(ヤフー ショッピング)',
'geo_Keido' => undef,
'Price' => '75000',
'SortBy' => 45,
'Image' => {
'Small' => {
'URL' => 'http://a248.e.akamai.net/f/248/37952/7d/image.shopping.yahoo.co.jp/i/c/homeshop_s1502-yag-0007',
'Height' => '76',
'Width' => '76'
},
'FreeSize' => {
'URL' => '',
'Height' => '',
'Width' => ''
},
'Large' => {
'URL' => 'http://a248.e.akamai.net/f/248/37952/7d/image.shopping.yahoo.co.jp/i/g/homeshop_s1502-yag-0007',
'Height' => '146',
'Width' => '146'
}
},
'markCode' => undef,
'productCode' => 'store-homeshop_S1502-YAG-0007',
'com_Fix' => '0',
'VC_Count_Tag' => '<img src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?vs=#######&vp=#########" height="1" width="1" Border="0">',
'com_Percent' => '2',
'Description' => '★VOCALOID2(ボーカロイド)★★がくっぽいど★★Steinberg スタインバーグ★★CUBASE STUDIO4★【DTMお得セット!!】【送料無料】',
'Category' => 'toysgameshobbies,instruments,midigear'
},
'Yahoo!ショッピング(ヤフー ショッピング)::store-joshin::クリプトン・フューチャー・メディア [期間限定特別価格]VOCALOID2 鏡音リン・レン act2 ボーカロイド' => {
'geo_Ido' => undef,
'com_Value' => '268',
'modelCode' => undef,
'subStoreName' => 'Joshin web',
'subStoreID' => 'store-joshin',
'Title' => 'クリプトン・フューチャー・メディア [期間限定特別価格]VOCALOID2 鏡音リン・レン act2 ボーカロイド',
'Release' => '20080822',
'JAN' => '4511820073830',
'PrCode' => 'store-joshin_4511820073830-43-7878',
'adult' => 0,
'URL' => 'http://ck.jp.ap.valuecommerce.com/servlet/referral?vs=#######&vp=#########&vc_url=http%3A%2F%2Frd.store.yahoo.co.jp%2Fjoshin%2F4511820073830-43-7878.html',
'Merchant' => 'Yahoo!ショッピング(ヤフー ショッピング)',
'geo_Keido' => undef,
'Price' => '14100',
'SortBy' => 15,
'Image' => {
'Small' => {
'URL' => 'http://a248.e.akamai.net/f/248/37952/7d/image.shopping.yahoo.co.jp/i/c/joshin_4511820073830-43-7878',
'Height' => '76',
'Width' => '76'
},
'FreeSize' => {
'URL' => '',
'Height' => '',
'Width' => ''
},
'Large' => {
'URL' => 'http://a248.e.akamai.net/f/248/37952/7d/image.shopping.yahoo.co.jp/i/g/joshin_4511820073830-43-7878',
'Height' => '146',
'Width' => '146'
}
},
'markCode' => undef,
'productCode' => 'store-joshin_4511820073830-43-7878',
'com_Fix' => '0',
'VC_Count_Tag' => '<img src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?vs=#######&vp=#########" height="1" width="1" Border="0">',
'com_Percent' => '2',
'Description' => '在庫状況:在庫僅少/パワフル&ソウルフル!超フレッシュなツイン・ボーカル。アップデート版。',
'Category' => 'computers,soft,multimedia'
},
'Yahoo!ショッピング(ヤフー ショッピング)::store-luxu::★VOCALOID2 鏡音リン豪華7点フルセット' => {
'geo_Ido' => undef,
'com_Value' => '281',
'modelCode' => undef,
'subStoreName' => 'CosWorld',
'subStoreID' => 'store-luxu',
'Title' => '★VOCALOID2 鏡音リン豪華7点フルセット',
'Release' => '20080822',
'JAN' => undef,
'PrCode' => 'store-luxu_cs106',
'adult' => 0,
'URL' => 'http://ck.jp.ap.valuecommerce.com/servlet/referral?vs=#######&vp=#########&vc_url=http%3A%2F%2Frd.store.yahoo.co.jp%2Fluxu%2Fcs106.html',
'Merchant' => 'Yahoo!ショッピング(ヤフー ショッピング)',
'geo_Keido' => undef,
'Price' => '14800',
'SortBy' => 20,
'Image' => {
'Small' => {
'URL' => 'http://a248.e.akamai.net/f/248/37952/7d/image.shopping.yahoo.co.jp/i/c/luxu_cs106',
'Height' => '76',
'Width' => '76'
},
'FreeSize' => {
'URL' => '',
'Height' => '',
'Width' => ''
},
'Large' => {
'URL' => 'http://a248.e.akamai.net/f/248/37952/7d/image.shopping.yahoo.co.jp/i/g/luxu_cs106',
'Height' => '146',
'Width' => '146'
}
},
'markCode' => undef,
'productCode' => 'store-luxu_cs106',
'com_Fix' => '0',
'VC_Count_Tag' => '<img src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?vs=#######&vp=#########" height="1" width="1" Border="0">',
'com_Percent' => '2',
'Description' => '★商品内容★セーラー服、リボン、付け袖2本、レッグウォーマー2本、パンツ、ベルト、髪飾りの7点セットとなります。(音符部分は刺繍です)★生地詳細★ポリ混紡生地を使用しております大人気のボーカロイド 鏡音リンです♪細部にまでこだわった一着です★CosWorldご紹介★アニメ系のコス衣装はとても高いと思いませんか?「CosWorldが激安、高品質で出来る理由」1・海外の大手縫製工場で製作していますので、通常の1/3の超低価格で購入可能。2・現地で厳しい訓練を受けた服飾技術スタッフが、一着一着ていねいに製作しています。価格は大変リーズナブルではありますがクオリティー、納期の早さに絶対の自信があります!他社と比べてください!',
'Category' => 'toysgameshobbies,hobbies,costumeplayclothes'
},
'Yahoo!ショッピング(ヤフー ショッピング)::store-7andy::はじめての初音ミク ボーカロイド2オフィシャルガイドブック [本]' => {
'geo_Ido' => undef,
'com_Value' => '50',
'modelCode' => undef,
'subStoreName' => 'セブンアンドワイ ヤフー店',
'subStoreID' => 'store-7andy',
'Title' => 'はじめての初音ミク ボーカロイド2オフィシャルガイドブック [本]',
'Release' => '20080822',
'JAN' => '9784636828177',
'PrCode' => 'store-7andy_32035374',
'adult' => 0,
'URL' => 'http://ck.jp.ap.valuecommerce.com/servlet/referral?vs=#######&vp=#########&vc_url=http%3A%2F%2Frd.store.yahoo.co.jp%2F7andy%2F32035374.html',
'Merchant' => 'Yahoo!ショッピング(ヤフー ショッピング)',
'geo_Keido' => undef,
'Price' => '2625',
'SortBy' => 9,
'Image' => {
'Small' => {
'URL' => 'http://a248.e.akamai.net/f/248/37952/7d/image.shopping.yahoo.co.jp/i/c/7andy_32035374',
'Height' => '76',
'Width' => '76'
},
'FreeSize' => {
'URL' => '',
'Height' => '',
'Width' => ''
},
'Large' => {
'URL' => 'http://a248.e.akamai.net/f/248/37952/7d/image.shopping.yahoo.co.jp/i/g/7andy_32035374',
'Height' => '146',
'Width' => '146'
}
},
'markCode' => undef,
'productCode' => 'store-7andy_32035374',
'com_Fix' => '0',
'VC_Count_Tag' => '<img src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?vs=#######&vp=#########" height="1" width="1" Border="0">',
'com_Percent' => '2',
'Description' => '【セブン-イレブンで24時間受取りOK・送料0円!】 出版社名:ヤマハミュージックメディア 発売所名:ヤマハミュージックメディア(発売) シリーズ名:キャラクター・ボーカロイドシリーズ 発行年月:2008年04月 関連キーワード:ハジメテ ノ ハツネ ミク ボーカロイド ツー オフィシャル ガイドブック キャラクター ボーカロイドシリーズ はじめて の はつね みく ぼーかろいど つー おふぃしゃる がいどぶっく きゃらくたー ぼーかろいどしりーず、 ヤマハミユージツクメデイ 8528 やまはみゆーじつくめでい 8528 キミも今日からプロデュサー!ヴォーカロイドとDTMを使って初音ミクを上手に歌わせよう。 DTMをやったことない人も、ゲーム感覚でメロディーと歌詞をパソコンで入力すると、バーチャルアイドル「初音ミク」が歌ってくれる。そのままじゃ、「ちょっと?どこかおかしい?」そんな人は、この本を読んでもっと上手く「ミク」が歌えるコツ!を学んでね。まずは、体験版で「ミク」に歌わせてみよう。ミク用の楽譜つきなので、レッツトライ!DTMが使える人は、カラオケデータに合わせてミクを歌わせてみよう! 第1',
'Category' => 'books-jp,music'
},
'Yahoo!ショッピング(ヤフー ショッピング)::store-first-jp::【予約】 ねんどろいど ボーカロイド 鏡音レン キャラクター・ボーカル・シリーズ02 完成品フィギュア' => {
'geo_Ido' => undef,
'com_Value' => '57',
'modelCode' => undef,
'subStoreName' => 'ミリタリーショップ FIRST',
'subStoreID' => 'store-first-jp',
'Title' => '【予約】 ねんどろいど ボーカロイド 鏡音レン キャラクター・ボーカル・シリーズ02 完成品フィギュア',
'Release' => '20080822',
'JAN' => undef,
'PrCode' => 'store-first-jp_2101GSC00072',
'adult' => 0,
'URL' => 'http://ck.jp.ap.valuecommerce.com/servlet/referral?vs=#######&vp=#########&vc_url=http%3A%2F%2Frd.store.yahoo.co.jp%2Ffirst-jp%2F2101gsc00072.html',
'Merchant' => 'Yahoo!ショッピング(ヤフー ショッピング)',
'geo_Keido' => undef,
'Price' => '3000',
'SortBy' => 12,
'Image' => {
'Small' => {
'URL' => 'http://a248.e.akamai.net/f/248/37952/7d/image.shopping.yahoo.co.jp/i/c/first-jp_2101gsc00072',
'Height' => '76',
'Width' => '76'
},
'FreeSize' => {
'URL' => '',
'Height' => '',
'Width' => ''
},
'Large' => {
'URL' => 'http://a248.e.akamai.net/f/248/37952/7d/image.shopping.yahoo.co.jp/i/g/first-jp_2101gsc00072',
'Height' => '146',
'Width' => '146'
}
},
'markCode' => undef,
'productCode' => 'store-first-jp_2101GSC00072',
'com_Fix' => '0',
'VC_Count_Tag' => '<img src="http://ad.jp.ap.valuecommerce.com/servlet/gifbanner?vs=#######&vp=#########" height="1" width="1" Border="0">',
'com_Percent' => '2',
'Description' => '【10月発売予定新商品 予約受付中】大好評の「ねんどろいど初音ミク」に続き、『キャラクター・ボーカル・シリーズ』より、超フレッシュなツインボーカル「鏡音リン・レン」がねんどろいどになりました!キーボードを持って元気に登場するのは「鏡音レン」!CGMサイト「ピアプロ」とのコラボ企画として、一般公募したアイデアの中から選ばれた表情や、ねんどろいどシリーズ初となる「のっぺら顔&表情シール」など、豊富な顔パーツが付属。さらに、リンとレンでは顔パーツに互換性あり!楽しみ方は無限大。ポーズの幅が広がる手足の付け替えパーツもついて、遊びの幅がグッと広がるアイテムになりました! (C)Crypton Future Media,Inc. ALL RIGHTS RESERVEDノンスケールABS&amp;PVC 塗装済み可動フィギュア※入荷数に限りがありますので、商品がご用意できない場合もございます。ご了承下さい。※平成20年10月発売予定美少女フィギュア・完成品フィギュア20080604f',
'Category' => 'toysgameshobbies,toys,figurines'
}
};


posted by 鯖缶 at 21:12 | Comment(0) | TrackBack(0) | ただいま開発中 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。