#!/usr/local/bin/perl #-------------------------------------------------------- # 更新プログラムのデータから Yahoo!商品検索をたたき出す # 拡張子 .txt じゃないとYahooに無視されるから .txt # .htaccess もご一緒に #------------------------ # Options ExecCGI # AddType text/html cgi # AddHandler cgi-script cgi txt #------------------------ # # http://feed.psearch.yahoo.co.jp/ 参照してね # # このプログラムはperl 5.8.1以上じゃないと動かないと思う # Jcode のjfold が要求してくるからです #--------------------------------------------------------- use lib qw(../module); use warnings; use strict; use Jcode; use CGI::Carp qw(fatalsToBrowser); # debug use Data::Dumper; use Config::General; use JOA::Database; require '../lib/csv.pl'; # グローバル変数 my %config = new Config::General('config.cgi')->getall(); my $database = JOA::Database->connect(dbpath => $config{DATDIR}); my %categorylist = (); foreach my $hash (&excelcsv::ReadExcelCsvHeader($config{CATEGORYDATA})) { $categorylist{$hash->{CID}} = $hash; } my @titlist; my @YSKENSAKULIST = ('id','title','url','price','desc','image','path','no','jan','isbn'); my %YSKENSAKU_LIMITLENGTH = ( 'title' => 80-3, # -3 するのはあとでコンマコンマコンマ入れるためっす 'path' => 80-3, 'desc' => 512-3, ); my $zettaipath = 'http://'.$ENV{SERVER_NAME}.$ENV{SCRIPT_NAME}; $zettaipath =~ s|/[^/]*$|/|; my $out; $out = join "\t", @YSKENSAKULIST; $out .= "\n"; # ・txtDATAディレクトリを読み、全ハッシュリスト抽出 foreach (values %categorylist) { # 追加書き込み my $category = $_->{CID}; my $category_name = $_->{YSHOP} || $_->{NAME}; # 中身のファイル全開き my @datalist = $database->fetchAllHash( "SELECT * FROM ".$config{EDITTABLE}{NAME}. " WHERE category = ".JOA::Database->quote($config{category})." ORDER BY sortnum DESC" ); foreach my $datahash (@datalist) { # 金額が定義されていて、下書きでないものを登録 next if (($datahash->{price}!~/^\d+$/ && $datahash->{price1}!~/^\d+$/) || $datahash->{draft}); $datahash->{id} = $datahash->{filename} = $_; $datahash->{title} = $datahash->{title}; $datahash->{price} = $datahash->{price} || $datahash->{price1}; $datahash->{url} = $zettaipath.&DATDIR.&HTMLDATDIR.$category.'/'.$datahash->{filename}.'.html'; 1 while($datahash->{url} =~ s{/[^/]*/\.\./}{/}); $datahash->{image} = $zettaipath.&DATDIR.&IMGDATDIR.$category.'/'.$datahash->{filename}.'_1_2.jpg'; 1 while($datahash->{image} =~ s{/[^/]*/\.\./}{/}); $datahash->{path} = $category_name; $datahash->{desc} = $datahash->{comment}; $datahash->{desc} =~ tr/\r\n//d; $datahash->{desc} =~ s/ / /g; $datahash->{no} = ''; $datahash->{jan} = ''; $datahash->{isbn} = ''; # タブ除去 map {tr/\t//d} @$datahash{@YSKENSAKULIST}; # タグ除去 map {s/\<[^>]+\>//g} @$datahash{@YSKENSAKULIST}; # 文字数オーバー時の調整 while ( my ($key,$len) = each %YSKENSAKU_LIMITLENGTH ) { next if (length $datahash->{$key} < $len); ($datahash->{$key}) = Jcode->new($datahash->{$key},'sjis')->jfold($len); $datahash->{$key} .= '...'; } # Writing $out .= join "\t",map{$datahash->{$_}}@YSKENSAKULIST; $out .= "\n"; } } # Dump it! print "Content-type: text/plain\n\n"; print $out;