|
#!/usr/local/bin/ruby
# 内部キャラクタセットを変更したい場合は、上記の ruby に引数を -Ke のように追加する
# 正しく設定されたかどうかは、print $KCODE で確認
#http://doc.okkez.net/static/187/method/Kernel/v/KCODE.html
print "Content-type: text/html; Charset=euc-jp\n\n"
# **********************************************************
# 環境設定
# **********************************************************
$stderr = $stdout
require "cgi"
cgi = CGI.new
require 'uri'
ENV['GEM_HOME']="/home/lightbox/gems"
$LOAD_PATH.push('/home/lightbox/lib')
require 'rubygems'
require 'mechanize'
# グローバル変数( オブジェクト )
$agent = WWW::Mechanize.new
$agent.open_timeout = 600
$agent.read_timeout = 600
# **********************************************************
# DB よりカウンタを取得
# **********************************************************
page = $agent.get("http://winofsql.jp/ruby/countup.php")
$cnt = (page.body).to_i
$cnt_t = 5
print "更新カウンタ対象値 : " + $cnt.to_s + " | グループカウンタ : " + ($cnt % $cnt_t).to_s + "<br>\n"
# **********************************************************
# ログイン関数
# agent は引数渡し
# **********************************************************
def seesaaLogin(agent)
page = agent.get("https://ssl.seesaa.jp/www/pages/welcome/login/input")
form = page.forms.first
form["member__email"] = ""
form["member__password"] = ""
form.submit
end
def niftyLogin(agent)
page = agent.get("https://login.nifty.com/service/login")
form = page.forms.first
form["username"] = ''
form["password"] = ''
page = form.submit
end
def sakuraLogin(agent)
# page = agent.get("http://winofsql.jp/ruby/sakura_blog.htm")
# shift_jis ページなのに meta で EUC-JP になっているので解析できずに
# オブジェクトを取得できていない
page = agent.get("https://secure.sakura.ad.jp/rscontrol/")
form = page.forms.first
form["domain"] = ''
form["password"] = ''
page = form.submit
#fp = open("./log_01.txt", "w")
#fp.puts(page.body)
#fp.close
page = agent.get('https://secure.sakura.ad.jp/rscontrol/rs/blog')
end
# **********************************************************
# Seesaa 処理関数
# $agent はグローバル変数
# **********************************************************
def seesaaAction(blog_id,blog_nm,opt)
# ブログ選択
page = $agent.get($seesaa_select_blog + blog_id)
# アクセス解析デフォルトページ( ページ別 )
page = $agent.get($seesaa_access_default)
# 合計の 訪問者数 と ページビュー を取得する正規表現( m は "." が改行にマッチ )
/log\-total\-text.+log\-total\-num">.+?>(.+?)<.+log\-total\-num">.+?>(.+?)</m =~ page.body
# Ruby 側確認用表示
$ucnt = $1
$vcnt = $2
if opt == '1' then
# 実際のアクセス数の計算用
page = $agent.get($seesaa_access_os)
# SHIFT_JIS で不明の先頭コードである \x95 を処理
/log\-total\-num">(.+?)<.+?\x95.+?align="right".+?nbsp;(.+?)</m =~ page.body
$realcnt = ($1.to_i-$2.to_i).to_s
else
$realcnt = 0.to_s
end
print blog_nm + " " + $ucnt + "/" + $vcnt + "<br>\n"
print "realaccess : " + $realcnt + "<br>\n"
# DB 更新用 php 呼び出し
$agent.get($seesaa_dbupdate+blog_id+'&ucnt='+$ucnt+'&vcnt='+$vcnt+'&realcnt='+$realcnt)
end
# **********************************************************
# Seesaa 定数
# **********************************************************
$seesaa_select_blog = "http://blog.seesaa.jp/pages/my/blog/home/?blog_id="
$seesaa_access_default = "http://blog.seesaa.jp/pages/my/blog/access_log/report/index?log_type=file"
$seesaa_access_os = "http://blog.seesaa.jp/pages/my/blog/access_log/report/index?log_type=os"
$seesaa_dbupdate = "http://.../seesaa_create_log.php?blog_id="
# デバッグ用
#exit
# **********************************************************
# グループ( 1 )
# **********************************************************
if ($cnt % $cnt_t) == 0 then
# ログイン
seesaaLogin($agent)
seesaaAction('9999999','logical error','1')
seesaaAction('9999999','ARGUS','0')
end
# **********************************************************
# グループ( 2 )
# **********************************************************
if ($cnt % $cnt_t) == 1 then
# ログイン
seesaaLogin($agent)
seesaaAction('9999999','カスタムパレットツール','1')
seesaaAction('9999999','画狼','1')
end
# **********************************************************
# グループ( 3 )
# **********************************************************
if ($cnt % $cnt_t) == 2 then
# ログイン
seesaaLogin($agent)
seesaaAction('9999999','琴線に触れる','1')
seesaaAction('9999999','アプリケーション作成','1')
end
# **********************************************************
# グループ( 4 )
# **********************************************************
if ($cnt % $cnt_t) == 3 then
niftyLogin($agent)
# アクセス解析ページへアクセス
page = $agent.get('http://app.cocolog-nifty.com/t/app/control/stats')
page = $agent.get('http://app.cocolog-nifty.com/t/app/control/stats?nwsThough=1')
/class="tt" align="right">(\d+?)<\/td>.+class="tt" align="right">(\d+?)<\/td>/m =~ page.body
access_num = ($1).to_s
visit_num = ($2).to_s
if access_num != '' then
print access_num + "," + visit_num + "<br>\n"
else
print "集計データがありません<br>\n"
end
$agent.get('http://.../seesaa_create_log.php?blog_id=600886&ucnt='+visit_num+'&vcnt='+access_num+'&title='+URI.escape('ココログ'))
sakuraLogin($agent)
# 対象ブログのページ
page = $agent.get('http://blog.sakura.ne.jp/pages/my/blog/home/?blog_id=13678')
page = $agent.get('http://blog.sakura.ne.jp/pages/my/blog/access_log/report/index?log_type=file&id=13678')
/log\-total\-text.+log\-total\-num">.+?>(.+?)<.+log\-total\-num">.+?>(.+?)</m =~ page.body
print "ARGUS(さくら) " + $1 + "/" + $2 + "\n"
$agent.get('http://.../seesaa_create_log.php?blog_id=13678&ucnt='+$1+'&vcnt='+$2+'&title='+URI.escape('ARGUS(さくら)'))
end
# **********************************************************
# グループ( 5 )
# **********************************************************
if ($cnt % $cnt_t) == 4 then
sakuraLogin($agent)
# 対象ブログのページ
page = $agent.get('http://blog.sakura.ne.jp/pages/my/blog/home/?blog_id=7364')
page = $agent.get('http://blog.sakura.ne.jp/pages/my/blog/access_log/report/index?log_type=file&id=7364')
/log\-total\-text.+log\-total\-num">.+?>(.+?)<.+log\-total\-num">.+?>(.+?)</m =~ page.body
print "SQLの窓(さくら) " + $1 + "/" + $2 + "<br>\n"
$agent.get('http://.../seesaa_create_log.php?blog_id=7364&ucnt='+$1+'&vcnt='+$2+'&title='+URI.escape('SQLの窓(さくら)'))
end
=begin
print "</pre>"
print "最新アクセスリスト一覧"
=end
print "<br>\nOK"
|
|
<?php
header( "Content-Type: text/html; Charset=euc-jp" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );
foreach( $_GET as $Key => $Value ) {
$_POST[$Key] = $_GET[$Key];
}
foreach( $_POST as $Key => $Value ) {
$_POST[$Key] = str_replace("\\\\", "\\", $Value );
$_POST[$Key] = str_replace("\\'", "'", $_POST[$Key] );
$_POST[$Key] = str_replace("\\\"", "\"", $_POST[$Key] );
}
mb_language( "ja" );
mb_internal_encoding("EUC-JP");
$Server = '';
$DbName = '';
$User = '';
$Password = '';
// 接続解除
$Connect = @mysql_connect( $Server, $User, $Password );
if ( !$Connect ) {
print "接続エラーです";
exit();
}
// DB選択
mysql_select_db( $DbName, $Connect );
// クエリ
$query = "update `カウンタ表示` set `カウンタ` = `カウンタ` + 1";
$query .= " where ページ = '_cron'";
mysql_query($query, $Connect);
$query = "select `カウンタ` from `カウンタ表示`";
$query .= " where ページ = '_cron'";
$result = mysql_query($query, $Connect);
$row = mysql_fetch_row($result);
print $row[0];
if ( ($row[0]+0) > 1000 ) {
$query = "update `カウンタ表示` set `カウンタ` = 0";
$query .= " where ページ = '_cron'";
mysql_query($query, $Connect);
}
// メモリを開放ですが、通常は必要ありません
mysql_free_result($result);
// 接続解除
mysql_close($Connect);
?>
|
|
<?php
// ***********************************************
// 環境設定
// ***********************************************
header( "Content-Type: text/html; Charset=euc-jp" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );
foreach( $_GET as $Key => $Value ) {
$_POST[$Key] = $_GET[$Key];
}
foreach( $_POST as $Key => $Value ) {
$_POST[$Key] = str_replace("\\\\", "\\", $Value );
$_POST[$Key] = str_replace("\\'", "'", $_POST[$Key] );
$_POST[$Key] = str_replace("\\\"", "\"", $_POST[$Key] );
}
mb_language( "ja" );
mb_internal_encoding("EUC-JP");
$Server = '';
$DbName = '';
$User = '';
$Password = '';
// ***********************************************
// 接続
// ***********************************************
$Connect = @mysql_connect( $Server, $User, $Password );
if ( !$Connect ) {
print "接続エラーです";
exit();
}
// ***********************************************
// DB選択
// ***********************************************
mysql_select_db( $DbName, $Connect );
// ***********************************************
// seesaa_log のフォーマット
// blog_id
// ucnt
// vcnt
// rcnt
// title varchar(255)
// upd datetime
// p_ucnt
// p_vcnt
// p_rcnt
// b_ucnt
// b_vcnt
// b_rcnt
// ***********************************************
// *************************************************************
// 前回の更新と今回で日付が変わっていたら、テーブル全体の
// 前回の値を b_ へ更新する
//
// blog_id = 0 は前回の更新したタイムスタンプ用 なので
// 最初は手動で作成して、その日の日付を設定しておく
// *************************************************************
$query = "select * from seesaa_log where blog_id = 0";
$result = mysql_query($query, $Connect);
$row = mysql_fetch_array($result);
$dt = substr( $row['upd'], 0, 10 );
$dt = str_replace( "-", "", $dt );
//file_put_contents( "_seesaa_log".".log", $dt );
if ( $dt < date("Ymd") ) {
$query = "update `seesaa_log` ";
$query .= "set b_ucnt = ucnt, b_vcnt = vcnt,b_rcnt = rcnt, upd = NOW()";
mysql_query($query, $Connect);
}
// *************************************************************
// 今回の更新と、一つ前( p_ ) の更新
// *************************************************************
$query = "update `seesaa_log` ";
$query .= "set p_ucnt = ucnt, p_vcnt = vcnt,p_rcnt = rcnt";
// タイトルを設定しているのは、Seesaa 以外なので、realcnt を 0 にする
if ( $_POST['title'] != '' ) {
$query .= " ,title = '{$_POST['title']}'";
$_POST['realcnt'] = "0";
}
$query .= ",ucnt = {$_POST['ucnt']}, vcnt = {$_POST['vcnt']}, rcnt = {$_POST['realcnt']},upd = NOW()";
$query .= " where blog_id = {$_POST['blog_id']}";
mysql_query($query, $Connect);
// 更新対象行が無い場合は、新規に作成する
if ( mysql_affected_rows($Connect) == 0 ) {
if ( $_POST['title'] != '' ) {
$query = "insert into `seesaa_log` (blog_id,ucnt,vcnt,rcnt,title,upd) ";
$query .= "values({$_POST['blog_id']},{$_POST['ucnt']},{$_POST['vcnt']},0,'{$_POST['title']}',NOW())";
}
else {
$query = "insert into `seesaa_log` (blog_id,ucnt,vcnt,rcnt,upd) ";
$query .= "insert into `values({$_POST['blog_id']},{$_POST['ucnt']},{$_POST['vcnt']},{$_POST['realcnt']},NOW())";
}
mysql_query($query, $Connect);
}
// 接続解除
mysql_close($Connect);
?>
OK
|
|