#!/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="\n"}else{$utan=''} if($agent ne $agentold){ $output=$output."$utan"; $tot=$DLcount[$k]; }else{ $output=$output."\n"; $tot=$tot+$DLcount[$k]; } } $output=$output."\n"; $output=$output."\n"; $output=$output."
$tot
$agent$name$DLcount[$k]-
$name$DLcount[$k]$tot
*合計$data$data
\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="\n"}else{$utan=''} if($agent ne $agentold){ $output=$output."$utan"; $tot=$DLcount[$k]; }else{ $output=$output."\n"; $tot=$tot+$DLcount[$k]; } } $output=$output."\n"; $output=$output."\n"; $output=$output."
$tot
$agent$name$DLcount[$k]-
$name$DLcount[$k]$tot
*合計$data$data
\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__