-
Notifications
You must be signed in to change notification settings - Fork 0
/
jubegraphAutoUpdate_upload.php
166 lines (132 loc) · 7.47 KB
/
jubegraphAutoUpdate_upload.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<?php
/****************
jubegraphAutoUpdate.php
コナミのe-amusement gateにログインして,jubeatのプレイデータを取得した後,jubegraphに自動アップデートするスクリプト(saucer対応)
Date: 2012/6/4
Author: はん@highemerly
Required: php5.3.3 later, pear(HTTP_Client)
実行方法:第一引数にライバルIDを指定して実行
メモ:
・最初のdefineだけ変更すれば,どのユーザでも使えるように設定されています
・musicページは4ページに固定してあるので,適当に変更する必要があります
・特にデバッグ時コナミサーバにアクセスする回数を減らすため,htmlデータは一旦ファイルとして保存します.そのためフォルダ内の書き込み権限が必要です.
*****************/
require_once "HTTP/Client.php";
date_default_timezone_set("Asia/Tokyo");
//パラメタ設定
define('EAGATE_ID','*******');
define('EAGATE_PASS','********');
//ライバルIDの読み込みn設定
if ($argc == 2){
$jubegraphFid = $argv[1];
}
else{
die('Error: 実行引数が不正です.管理者に連絡してください.');
}
//URL設定
$eagateLoginURL = "https://p.eagate.573.jp/gate/p/login.html";
$eagatePlayerURL = "http://p.eagate.573.jp/game/jubeat/saucer/p/playdata/index.html";
$eagateMusicURLBase = "http://p.eagate.573.jp/game/jubeat/saucer/p/playdata/music.html?page=";
$jubegraphTopURL = "http://jubegraph.dyndns.org/jubeat_saucer/";
$jubegraphLoginURL = "http://jubegraph.dyndns.org/jubeat_saucer/registFile.cgi";
$jubegraphSubmitURL = "http://jubegraph.dyndns.org/jubeat_saucer/registData.cgi";
//ここから本体
$client =& new HTTP_Client();
echo "Access to e-AMUSEMENT gate Login Page...\n";
$client->get($eagateLoginURL); //ログインページにアクセス
$eagateLoginArray = array("KID" => EAGATE_ID, "pass" => EAGATE_PASS, "OTP" => "", "submit" => mb_convert_encoding("規約に同意してログイン","shift-jis","auto"));
echo "Try to Login...\n";
$client->post($eagateLoginURL,$eagateLoginArray); //ログイン(post)
//$eagateLoginResult = $client->currentResponse();
//$eagateLoginResult['body'] = mb_convert_encoding($eagateLoginResult['body'],"UTF-8","auto");
//echo $eagateLoginResult['body'];
echo "Login done.\n";
//ページ読み込み
echo "Access to Player Page...\n";
$client->get($eagatePlayerURL); //プレイヤページ(get)
$eagatePlayerData = $client->currentResponse(); //プレイヤページ
if (mb_strpos($eagatePlayerData['body'],"ただいま大変混み合っております。申し訳ございませんがしばらくたってから再度お試しください。") === false){
$fp = fopen($jubegraphFid."top.html", "w");
fwrite($fp, $eagatePlayerData['body']);//注意: 他人のページでもうまくいかせるためのアレだったけど,結局あきらめた
fclose($fp);
}
else{
die("Error: ただいま大変混み合っております。申し訳ございませんがしばらくたってから再度お試しください。");
}
for($i=1;$i<=5;$i++){
$eagateMusicURL = $eagateMusicURLBase.$i;
echo "Access to Music Page ".$i."...\n";
$client->get($eagateMusicURL);
$eagateMusicData = $client->currentResponse();
$filename = $jubegraphFid."m".$i.".html";
if (mb_strpos($eagateMusicData['body'],"ただいま大変混み合っております。申し訳ございませんがしばらくたってから再度お試しください。") === false){
$fp = fopen($filename, "w");
fwrite($fp, $eagateMusicData['body']);
fclose($fp);
}
else{
die("Error: ただいま大変混み合っております。申し訳ございませんがしばらくたってから再度お試しください。");
}
}//for loop
echo "Success (e-AMUSEMENT gate).\n";
//****ここからjubegraph****
echo "Access to jubegraph TOP Page...\n";
$client->get($jubegraphTopURL); //ログインページにアクセス
$jubegraphFile = array(
array('playerData', $jubegraphFid."top.html", "text/html"),
array('musicData1', $jubegraphFid."m1.html", "text/html"),
array('musicData2', $jubegraphFid."m2.html", "text/html"),
array('musicData3', $jubegraphFid."m3.html", "text/html"),
array('musicData4', $jubegraphFid."m4.html", "text/html"),
array('musicData5', $jubegraphFid."m5.html", "text/html")
);
echo "Try to submit to jubegraph...\n";
//jubegraphにsubmit
$client->post($jubegraphLoginURL,"submit","",$jubegraphFile); //jubegraphにhtmlファイルをアップロード(post)
$jubegraphCheckData = $client->currentResponse();
$jubegraphCheckData['body'] = mb_convert_encoding($jubegraphCheckData['body'],"UTF-8","auto");
//jubegraphからの出力をチェックして,データが正しいかを確認する
if (mb_strpos($jubegraphCheckData['body'], "取得できていない情報があります") === false
&& mb_strpos($jubegraphCheckData['body'], "曲データがありません") === false
&& mb_strpos($jubegraphCheckData['body'], "前回登録時とプレイTUNE数が同じです") === false
&& mb_strpos($jubegraphCheckData['body'], "最後の登録から10分は新たにデータを登録できません") === false
&& mb_strpos($jubegraphCheckData['body'], "データがなにかおかしいです") === false){
echo "Success (First Submit to jubegraph).\n";
//jubegraphのsubmitボタンを押すために,hidden属性のパラメタを取得する
// $pattern = "/.*<input type=\"hidden\" name=\"fid\" value=\"([0-9]+)\">.*/s";
// $jubegraphFid = preg_replace($pattern,"$1",$jubegraphCheckData['body']);
$pattern = "/.*<input type=\"hidden\" name=\"time\" value=\"([0-9_]+)\">.*/s";
$jubegraphTime = preg_replace($pattern,"$1",$jubegraphCheckData['body']);
// echo $jubegraphFid.",".$jubegraphTime."\n";
$jubegraphSubmitArray = array(array("rid" => $jubegraphFid, "time" => $jubegraphTime), "submit");
$client->post($jubegraphSubmitURL,$jubegraphSubmitArray); //submitボタンを押す
$jubegraphSubmitData = $client->currentResponse();
$jubegraphSubmitData['body'] = mb_convert_encoding($jubegraphSubmitData['body'],"UTF-8","auto");
// echo $jubegraphSubmitData['body'];
echo "Success (Final Submit to jubegraph)\n";
echo $jubegraphTime."更新 http://jubegraph.dyndns.org/jubeat_saucer/score.cgi?rid=".$jubegraphFid."\n";
}
else{
//エラー処理
if (!(mb_strpos($jubegraphCheckData['body'], "前回登録時とプレイTUNE数が同じです") === false)){
$errorMessage = '前回登録時とプレイTUNE数が同じっぽいので,ゲーセンに行ってください.';
}
else if (!(mb_strpos($jubegraphCheckData['body'], "取得できていない情報があります") === false)){
$errorMessage = "取得できていない情報があります.たぶんe-amusement gateが重いです.";
}
else if (!(mb_strpos($jubegraphCheckData['body'], "曲データがありません") === false)){
$errorMessage = '曲データがありません.たぶんe-amusement gateが重いです.';
}
else if (!(mb_strpos($jubegraphCheckData['body'], "最後の登録から10分は新たにデータを登録できません") === false)){
$errorMessage = '最後の登録から10分は新たにデータを登録できません.これはjubegraphの仕様です.';
}
else if (!(mb_strpos($jubegraphCheckData['body'], "データがなにかおかしいです") === false)){
$errorMessage = 'なにかがおかしいです。不明なエラーです。';
}
else{
$errorMessage = '不明なエラーです.管理者に連絡してください.';
}
// echo "Error: ".$errorMessage;
die("Error: ".$errorMessage);
}
?>