#!/usr/local/bin/perl
# ************** scm4_count.cgi V1.1(2004/09/28)*************
# シンプル着メロサイトメーカー4
# Copyright (c) とまて
#
# 配布元URL:『シンプル着メロサイトメーカー4のページ』
# http://www3.kcn.ne.jp/~tomate/o_gate/scm4.html
# 『とまての実験室』http://www3.kcn.ne.jp/~tomate/ 内
#############################################################
# ファイル名関連
$me="scm4_count.cgi"; # このCGIのファイル名(ファイル名を変えたときはここも書き換えます)
$dlcnt_file_head="DL_"; # ダウンロードカウンタファイル名の頭(scm4.cgiと整合性を取る必要が有ります)
#############################################################
$counter_wildcard=$dlcnt_file_head.'*.txt'; # 月毎カウンタファイルのワイルドカード
@data=();
# 日付のセット
($sec , $min , $hour, $mday, $mon, $year ,$wday) = localtime();
$output=sprintf("今日の日付:%04d/%02d/%02d %02d:%02d:%02d",$year + 1900, $mon + 1, $mday,$hour,$min,$sec);
# 月毎カウンタファイルの検索
@counterfiles=<${counter_wildcard}>;
$counterfiles=@counterfiles; # カウンタファイルの数
for($i=0;$i<$counterfiles;$i++){
@kyokumei=();
$kyokumei=0;
@DLcount=();
$Dlcount=0;
&fileinput($counterfiles[$i],'data');
$data=@data;
# 曲名ごとにカウントする
for($j=0;$j<$data;$j++){
@dmy=split("\t",$data[$j]);
$name=substr($dmy[1],0,rindex($dmy[1],'.'));
if(index($dmy[2],"DoCoMo")>=0) {$agent_file="1_DoCoMo\t".$name;}
elsif(index($dmy[2],"J-PHON")>=0) {$agent_file="3_Vodafone\t".$name;}
elsif(index($dmy[2],"UP.Browser")>=0){$agent_file="4_EzWeb\t".$name;}
elsif(index($dmy[1],'.mld')>=0) {$agent_file="2_PC(mld)\t".$name;}
else {$agent_file="5_PC(mmf)\t".$name;}
$kishutu=0;
for($k=0;$k<$kyokumei;$k++){
if($agent_file eq $kyokumei[$k]){
$DLcount[$k]++;
$kishutu=1;
break;
}
}
if($kishutu == 0){
$kyokumei++;
$kyokumei[$kyokumei-1]=$agent_file;
$DLcount[$kyokumei-1]=1;
}
}
# 並び替え(キャリア+曲名順)
for($k=0;$k<$kyokumei;$k++){
for($j=0;$j<=$k;$j++){
if($kyokumei[$k] lt $kyokumei[$j]){
$dmy1=$kyokumei[$j];
$dmy2=$DLcount[$j];
$kyokumei[$j]=$kyokumei[$k];
$DLcount[$j]=$DLcount[$k];
$kyokumei[$k]=$dmy1;
$DLcount[$k]=$dmy2;
}
}
}
# 現ファイルのカウントデータを出力データに追加する
$output=$output."
".substr($counterfiles[$i],3,4)."年".substr($counterfiles[$i],8,2)."月度集計結果
\n";
$output=$output."";
$output=$output."[機種別]\n";
$output=$output."";
($agent,$name)=split("\t",$kyokumei[$k]);
for($k=0;$k<$kyokumei;$k++){
$agentold=$agent;
($agent,$name)=split("\t",$kyokumei[$k]);
if($k>0){$utan="$tot | \n"}else{$utan=''}
if($agent ne $agentold){
$output=$output."$utan$agent | $name | $DLcount[$k] | ";
$tot=$DLcount[$k];
}else{
$output=$output."- | \n〃 | $name | $DLcount[$k] | ";
$tot=$tot+$DLcount[$k];
}
}
$output=$output."$tot | \n";
$output=$output."* | 合計 | $data | $data | \n";
$output=$output." \n |
\n\n\n";
#=========================================================================
# 曲名+キャリアに直す
for($k=0;$k<$kyokumei;$k++){
($agent,$name)=split("\t",$kyokumei[$k]);
$kyokumei[$k]=$name."\t".$agent;
}
# 並び替え(曲名+キャリア順)
for($k=0;$k<$kyokumei;$k++){
for($j=0;$j<=$k;$j++){
if($kyokumei[$k] lt $kyokumei[$j]){
$dmy1=$kyokumei[$j];
$dmy2=$DLcount[$j];
$kyokumei[$j]=$kyokumei[$k];
$DLcount[$j]=$DLcount[$k];
$kyokumei[$k]=$dmy1;
$DLcount[$k]=$dmy2;
}
}
}
# 現ファイルのカウントデータを出力データに追加する
$output=$output."\n";
$output=$output."[曲別]\n";
$output=$output."";
($agent,$name)=split("\t",$kyokumei[$k]);
for($k=0;$k<$kyokumei;$k++){
$agentold=$agent;
($agent,$name)=split("\t",$kyokumei[$k]);
if($k>0){$utan="$tot | \n"}else{$utan=''}
if($agent ne $agentold){
$output=$output."$utan$agent | $name | $DLcount[$k] | ";
$tot=$DLcount[$k];
}else{
$output=$output."- | \n〃 | $name | $DLcount[$k] | ";
$tot=$tot+$DLcount[$k];
}
}
$output=$output."$tot | \n";
$output=$output."* | 合計 | $data | $data | \n";
$output=$output." \n |
\n\n\n";
}
&page;
exit();
#===================↓ここからサブルーチン=============================
sub page{
# 画面表示
print <<"HIA1";
Content-type: text/html\n\n
ダウンロードカウンタ集計結果
フォルダ内のダウンロードカウントファイルについての集計結果
不用になったダウンロードカウントファイルは適宜削除して下さい。月毎に増えます。
$output
HIA1
}
#=================================================================
# ファイル入力サブルーチン__ &fileinput(入力ファイル名,変数名)
# ※サブルーチンを呼ぶ前に、@変数名=();など、配列をあらかじめ作っておく必要があります。
sub fileinput{
local $err=0;
local $filename=$_[0];
local $hensuumei=$_[1];
local $cntend;
local $i;
if ( !open (FILE_IO, $filename) ){
$err=1;
}
else{
@$hensuumei = ;
close(FILE_IO);
}
$cntend=@$hensuumei-1;
for ($i=0;$i<=$cntend;$i++){
$$hensuumei[$i]=~s/\r//g;
$$hensuumei[$i]=~s/\n//g;
}
return($err);
}
__END__