2017-03-22 11:24:38 +08:00
|
|
|
|
#include <iostream>
|
2017-03-22 13:57:49 +08:00
|
|
|
|
#include <fstream>
|
|
|
|
|
#include <sstream>
|
2017-03-22 13:08:30 +08:00
|
|
|
|
#include <string>
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
#include <vector>
|
2017-03-22 13:57:49 +08:00
|
|
|
|
#include <queue>
|
2017-03-22 13:08:30 +08:00
|
|
|
|
#include <thread>
|
|
|
|
|
|
|
|
|
|
#include <cstdio>
|
|
|
|
|
#include <cstdlib>
|
|
|
|
|
#include <cstring>
|
|
|
|
|
|
2017-03-22 16:48:01 +08:00
|
|
|
|
#include <cpplib/cpplib#time>
|
2017-03-29 17:54:44 +08:00
|
|
|
|
#include <conio.h>
|
2017-03-22 11:24:38 +08:00
|
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
2017-03-29 15:52:04 +08:00
|
|
|
|
int parseValue(string Filename,double& val,double& val2)
|
2017-03-22 13:57:49 +08:00
|
|
|
|
{
|
|
|
|
|
printf("Filename : %s\n",Filename.c_str());
|
|
|
|
|
|
|
|
|
|
ifstream ifs(Filename);
|
|
|
|
|
string temp,s;
|
|
|
|
|
while(getline(ifs,temp)) s.append(temp);
|
|
|
|
|
|
|
|
|
|
printf("%s\n",s.c_str());
|
|
|
|
|
|
|
|
|
|
string target="amt";
|
|
|
|
|
string::size_type ans=s.find(target);
|
2017-03-29 15:52:04 +08:00
|
|
|
|
printf("Found value 1 in ... %u\n",ans);
|
2017-03-22 13:57:49 +08:00
|
|
|
|
if(ans==string::npos)
|
|
|
|
|
{
|
|
|
|
|
return -2;
|
|
|
|
|
}
|
2017-03-29 15:52:04 +08:00
|
|
|
|
|
2017-03-22 13:57:49 +08:00
|
|
|
|
istringstream istr(s.substr(ans+7));
|
|
|
|
|
double a=-1;
|
|
|
|
|
istr>>a;
|
2017-03-29 15:52:04 +08:00
|
|
|
|
|
|
|
|
|
ans=s.find(target,ans+target.size());
|
|
|
|
|
printf("Found value 2 in ... %u\n",ans);
|
|
|
|
|
if(ans==string::npos)
|
|
|
|
|
{
|
|
|
|
|
return -3;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
istr.str(s.substr(ans+7));
|
|
|
|
|
double b=-1;
|
|
|
|
|
istr>>b;
|
|
|
|
|
|
|
|
|
|
val=a;
|
|
|
|
|
val2=b;
|
|
|
|
|
return 0;
|
2017-03-22 13:57:49 +08:00
|
|
|
|
}
|
|
|
|
|
|
2017-03-29 15:52:04 +08:00
|
|
|
|
struct cashinfo
|
|
|
|
|
{
|
|
|
|
|
cashinfo(bool Status=false,double Current=0,double TransForming=0):status(Status),current(Current),transforming(TransForming){}
|
|
|
|
|
bool status;
|
|
|
|
|
double current;
|
|
|
|
|
double transforming;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
cashinfo LocalParse(int id)
|
2017-03-22 13:57:49 +08:00
|
|
|
|
{
|
|
|
|
|
char buff[1024];
|
|
|
|
|
sprintf(buff,"data/%d.txt",id);
|
|
|
|
|
string Filename(buff);
|
2017-03-29 15:52:04 +08:00
|
|
|
|
cashinfo info;
|
|
|
|
|
info.status=(parseValue(Filename,info.current,info.transforming)==0);
|
|
|
|
|
return info;
|
2017-03-22 13:57:49 +08:00
|
|
|
|
}
|
|
|
|
|
|
2017-03-22 13:08:30 +08:00
|
|
|
|
void prepareCookie()
|
|
|
|
|
{
|
2017-03-22 14:17:42 +08:00
|
|
|
|
system(R"(curl -s "life.ccb.com/tran/WCCMainPlatV5?CCB_IBSVersion=V5&SERVLET_NAME=WCCMainPlatV5&TXCODE=100119&USERID=&SKEY=" --user-agent "Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1" -c temp/cookie1.txt > temp/step1.txt)");
|
2017-03-22 13:08:30 +08:00
|
|
|
|
}
|
|
|
|
|
|
2017-03-22 13:57:49 +08:00
|
|
|
|
bool _fetched_cookie=false;
|
|
|
|
|
|
|
|
|
|
void BeginNetwork()
|
|
|
|
|
{
|
|
|
|
|
if(!_fetched_cookie)
|
|
|
|
|
{
|
|
|
|
|
prepareCookie();
|
|
|
|
|
_fetched_cookie=true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-03-22 13:08:30 +08:00
|
|
|
|
void RunCommand(string stuNumber,string outputFilename)
|
|
|
|
|
{
|
2017-03-22 14:17:42 +08:00
|
|
|
|
string cmd=R"(curl -s "life.ccb.com/tran/WCCMainPlatV5?CCB_IBSVersion=V5&SERVLET_NAME=WCCMainPlatV5&isAjaxRequest=true&TXCODE=JF1103&OPUN_COD=370200&MERCHANT=#STUCODE#100010&COMM=#STUCODE#&BANK_COD=370000&BIll_CODE=100010&PAY_TYPE=11&BILL_FLAG=0&BIll_MERCHANT=600007&BANK_NAME=%E5%B1%B1%E4%B8%9C%E7%9C%81&OPUN_NAME=%E9%9D%92%E5%B2%9B%E5%B8%82&MERCHANT_NAME=%E9%9D%92%E5%B2%9B%E7%A7%91%E6%8A%80%E5%A4%A7%E5%AD%A6%E6%A0%A1%E5%9B%AD%E5%8D%A1%E5%85%85%E5%80%BC&BILL_TYPE=2&BRAN_NO=371000000&BILL_ITEM=01013&BILL_NAME=IC%E5%8D%A1%E3%80%81%E8%81%94%E5%90%8D%E5%8D%A1%E5%85%85%E5%80%BC&RE1CON=&RE2CON=" --user-agent "Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1" -b "temp/cookie1.txt" > )" ;
|
2017-03-22 13:08:30 +08:00
|
|
|
|
|
|
|
|
|
string target="#STUCODE#";
|
|
|
|
|
|
|
|
|
|
while( cmd.find(target)!= string::npos )
|
|
|
|
|
{
|
|
|
|
|
cmd=cmd.replace(cmd.find(target),target.size(),stuNumber);
|
|
|
|
|
}
|
|
|
|
|
|
2017-03-22 13:57:49 +08:00
|
|
|
|
cmd.append(outputFilename);
|
2017-03-22 13:08:30 +08:00
|
|
|
|
|
|
|
|
|
system(cmd.c_str());
|
|
|
|
|
}
|
|
|
|
|
|
2017-03-22 13:57:49 +08:00
|
|
|
|
void RemoteQuery(string PreCode,int ID)
|
|
|
|
|
{
|
|
|
|
|
char buff[1024];
|
|
|
|
|
sprintf(buff,"%s%02d",PreCode.c_str(),ID);
|
|
|
|
|
string stuCode(buff);
|
|
|
|
|
sprintf(buff,"data/%d.txt",ID);
|
|
|
|
|
string Filename(buff);
|
|
|
|
|
|
|
|
|
|
printf("ִ<EFBFBD>в<EFBFBD>ѯ.. StuID=%s\n",stuCode.c_str());
|
|
|
|
|
RunCommand(stuCode,Filename);
|
|
|
|
|
|
2017-03-22 14:17:42 +08:00
|
|
|
|
/// Delay 1~4 seconds
|
|
|
|
|
this_thread::sleep_for(chrono::seconds(rand()%3+1));
|
2017-03-22 13:57:49 +08:00
|
|
|
|
}
|
|
|
|
|
|
2017-03-29 17:54:44 +08:00
|
|
|
|
/*****************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>***************/
|
2017-03-30 16:57:57 +08:00
|
|
|
|
char _head_str[16]{"15080801"};
|
2017-03-29 18:44:31 +08:00
|
|
|
|
const char* HEAD_STR = _head_str;
|
2017-03-29 15:52:04 +08:00
|
|
|
|
|
2017-03-29 17:54:44 +08:00
|
|
|
|
int _num = 40;
|
|
|
|
|
const int& NUM=_num;
|
2017-03-29 15:52:04 +08:00
|
|
|
|
|
2017-03-29 17:54:44 +08:00
|
|
|
|
int _beginnum=0;
|
|
|
|
|
const int& BEGIN_NUM = _beginnum;
|
|
|
|
|
bool _begin_after_singlemode = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void _ClearKbhit()
|
|
|
|
|
{
|
|
|
|
|
while(kbhit()) getch();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int ParseCommand(string Command)
|
|
|
|
|
{
|
|
|
|
|
istringstream istr(Command);
|
|
|
|
|
string cmd;
|
|
|
|
|
istr>>cmd;
|
|
|
|
|
|
|
|
|
|
if(cmd=="help")
|
|
|
|
|
{
|
|
|
|
|
printf("=====SingleMode <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>=====\n");
|
|
|
|
|
printf("===<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===\n");
|
|
|
|
|
printf("help <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>\n");
|
|
|
|
|
printf("query StudentID <20><>ѯij<D1AF><C4B3>ID<49><44>Ӧ<EFBFBD>ļ<EFBFBD>¼\n");
|
|
|
|
|
printf("===<3D><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>===\n");
|
|
|
|
|
printf("sethead HEAD_STR <20><EFBFBD>HeadStr,<2C><>ǰֵ<C7B0><D6B5>%s(<28><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>)\n",HEAD_STR);
|
|
|
|
|
printf("setbegin BeginVal <20><EFBFBD>ID<49><44>ʼ<EFBFBD><CABC>,<2C><>ǰֵ<C7B0><D6B5>%d(<28><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>)\n",BEGIN_NUM);
|
|
|
|
|
printf("setend EndVal <20><EFBFBD>ID<49>յ<EFBFBD>,<2C><>ǰֵ<C7B0><D6B5>%d(<28><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>)\n",NUM);
|
|
|
|
|
printf("updatecookie <20><><EFBFBD>»<EFBFBD>ȡcookie(<28><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>)\n");
|
|
|
|
|
printf("===<3D>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>===\n");
|
|
|
|
|
printf("enterauto <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ģʽ(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>ǰģʽ)\n");
|
|
|
|
|
printf("exit <20>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>ģʽ\n");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
else if(cmd=="enterauto")
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ģʽ!<21><><EFBFBD>ٴ<EFBFBD>ȷ<EFBFBD>ϵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>enterautoyes\n");
|
|
|
|
|
printf("<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: HEAD_STR=%s BeginVal=%d EndVal=%d\n",HEAD_STR,BEGIN_NUM,NUM);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
else if(cmd=="updatecookie")
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD>»<EFBFBD>ȡCookie<EFBFBD><EFBFBD>...\n");
|
|
|
|
|
prepareCookie();
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD>»<EFBFBD>ȡCookie<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
else if(cmd=="sethead")
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>HEAD_STR\n");
|
|
|
|
|
string headstr;
|
|
|
|
|
if(istr>>headstr)
|
|
|
|
|
{
|
|
|
|
|
if(headstr.size()!=8)
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD>HEAD_STR<EFBFBD><EFBFBD><EFBFBD>Ȳ<EFBFBD><EFBFBD><EFBFBD>ȷ\n");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>HEAD_STR<EFBFBD><EFBFBD>...\n");
|
|
|
|
|
memset(_head_str,0,16);
|
|
|
|
|
strcpy(_head_str,headstr.c_str());
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.\n");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD>ȡHEAD_STRʧ<EFBFBD><EFBFBD>.\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
else if(cmd=="setbegin")
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>\n");
|
|
|
|
|
int val;
|
|
|
|
|
if(istr>>val)
|
|
|
|
|
{
|
|
|
|
|
if(val<0)
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD><EFBFBD><EFBFBD>ΪID<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>\n");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD><EFBFBD><EFBFBD>...\n");
|
|
|
|
|
_beginnum=val;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD>ȡID<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
else if(cmd=="setend")
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<EFBFBD>յ<EFBFBD>(<28><>).\n");
|
|
|
|
|
int val;
|
|
|
|
|
if(istr>>val)
|
|
|
|
|
{
|
|
|
|
|
if(val<0||val<=BEGIN_NUM)
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ID<EFBFBD>յ<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ.\n");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<EFBFBD>յ<EFBFBD>...\n");
|
|
|
|
|
_num=val;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD>ȡID<EFBFBD>յ<EFBFBD>ʧ<EFBFBD><EFBFBD>\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
else if(cmd=="enterautoyes")
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ...\n");
|
|
|
|
|
_begin_after_singlemode=true;
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
else if(cmd=="exit")
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ.\n");
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
else if(cmd=="query")
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯģʽ\n");
|
|
|
|
|
string id;
|
|
|
|
|
if(istr>>id)
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD>ѯID=%s<>ļ<EFBFBD>¼\n",id.c_str());
|
|
|
|
|
if(id.size()!=10)
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.\n");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
int val;
|
|
|
|
|
sscanf(id.c_str()+8,"%d",&val);
|
|
|
|
|
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...\n");
|
|
|
|
|
BeginNetwork();
|
|
|
|
|
printf("ִ<EFBFBD>в<EFBFBD>ѯǰ...\n");
|
|
|
|
|
RemoteQuery(id.substr(0,8),val);
|
|
|
|
|
printf("ִ<EFBFBD>в<EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.\n");
|
|
|
|
|
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD>ǰ...\n");
|
|
|
|
|
cashinfo info=LocalParse(val);
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.\n");
|
|
|
|
|
printf("[%s] <20><><EFBFBD><EFBFBD>:%.2f <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%.2f\n",info.status?"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>":"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>",info.current,info.transforming);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD>ȡIDʧ<EFBFBD><EFBFBD>.\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if(cmd.size()) printf("δ֪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.\n");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void SingleModeMain()
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD>ѽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ.\n");
|
|
|
|
|
_ClearKbhit();
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD>\n");
|
|
|
|
|
while(1)
|
|
|
|
|
{
|
|
|
|
|
printf("SingleMode> ");
|
|
|
|
|
fflush(stdout);
|
|
|
|
|
|
|
|
|
|
string command;
|
|
|
|
|
getline(cin,command);
|
|
|
|
|
if(ParseCommand(command)<0) break;
|
|
|
|
|
}
|
|
|
|
|
printf("<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ...\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool EnterSingleMode()
|
|
|
|
|
{
|
2017-03-29 18:00:58 +08:00
|
|
|
|
int lastval=-1;
|
2017-03-29 17:54:44 +08:00
|
|
|
|
int interval=50;/// ms
|
|
|
|
|
int looptime=3000/interval;
|
|
|
|
|
|
|
|
|
|
for(int i=0;i<looptime;i++)
|
|
|
|
|
{
|
2017-03-29 18:00:58 +08:00
|
|
|
|
if((looptime-i)*interval/1000!=lastval)
|
|
|
|
|
{
|
|
|
|
|
lastval=(looptime-i)*interval/1000;
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κΰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. %d<><64><EFBFBD><EFBFBD><F3BDABBD><EFBFBD><EFBFBD>Զ<EFBFBD>ģʽ.\n",lastval);
|
|
|
|
|
}
|
2017-03-29 17:54:44 +08:00
|
|
|
|
if(kbhit())
|
|
|
|
|
{
|
|
|
|
|
SingleModeMain();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
this_thread::sleep_for(chrono::milliseconds(interval));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2017-03-22 13:57:49 +08:00
|
|
|
|
|
2017-03-30 16:57:57 +08:00
|
|
|
|
bool _out_file_targeted=false;
|
|
|
|
|
char _out_file_name[1024];
|
|
|
|
|
|
|
|
|
|
int main(int argc,char* argv[])
|
2017-03-22 11:24:38 +08:00
|
|
|
|
{
|
2017-03-30 16:57:57 +08:00
|
|
|
|
/// <20><><EFBFBD><EFBFBD>argc==5,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ģʽ.
|
|
|
|
|
if(argc!=5)
|
|
|
|
|
{
|
|
|
|
|
if(EnterSingleMode())
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD>Ѵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD>˳<EFBFBD>.\n");
|
|
|
|
|
if(!_begin_after_singlemode) return 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(argc==4)
|
2017-03-29 17:54:44 +08:00
|
|
|
|
{
|
2017-03-30 16:57:57 +08:00
|
|
|
|
strncpy(_head_str,argv[1],8);
|
|
|
|
|
sscanf(argv[2],"%d",&_beginnum);
|
|
|
|
|
sscanf(argv[3],"%d",&_num);
|
|
|
|
|
_out_file_targeted=true;
|
|
|
|
|
strcpy(_out_file_name,argv[4]);
|
2017-03-29 17:54:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>Զ<EFBFBD>ģʽ.\n");
|
|
|
|
|
printf("Target: Fetch %s01 to %s%02d...\n",HEAD_STR,HEAD_STR,NUM);
|
|
|
|
|
|
|
|
|
|
if(strlen(HEAD_STR)!=10-2)
|
|
|
|
|
{
|
|
|
|
|
printf("ѧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD>Զ<EFBFBD>ģʽ.\n");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2017-03-22 13:08:30 +08:00
|
|
|
|
printf("<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...\n");
|
|
|
|
|
srand(time(NULL));
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>..\n");
|
|
|
|
|
system("mkdir temp");
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>...\n");
|
|
|
|
|
system("mkdir data");
|
2017-03-29 18:27:20 +08:00
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>...\n");
|
|
|
|
|
system("mkdir result");
|
2017-03-22 13:57:49 +08:00
|
|
|
|
|
2017-03-22 13:08:30 +08:00
|
|
|
|
printf("<EFBFBD><EFBFBD>Cookies<EFBFBD>ļ<EFBFBD>...\n");
|
2017-03-22 13:57:49 +08:00
|
|
|
|
BeginNetwork();
|
2017-03-22 13:08:30 +08:00
|
|
|
|
|
|
|
|
|
printf("<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ѯ...\n");
|
2017-03-29 17:54:44 +08:00
|
|
|
|
for(int i=BEGIN_NUM;i<NUM;i++)
|
2017-03-22 13:57:49 +08:00
|
|
|
|
{
|
|
|
|
|
RemoteQuery(HEAD_STR,i+1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
printf("<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>...\n");
|
2017-03-29 15:52:04 +08:00
|
|
|
|
vector<cashinfo> vec;
|
2017-03-22 14:17:42 +08:00
|
|
|
|
queue<pair<int,int>> needrefetch;
|
2017-03-22 13:57:49 +08:00
|
|
|
|
|
|
|
|
|
for(int i=0;i<NUM;i++)
|
2017-03-22 13:08:30 +08:00
|
|
|
|
{
|
2017-03-22 13:57:49 +08:00
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> %d of %d\n",i+1,NUM);
|
2017-03-29 15:52:04 +08:00
|
|
|
|
cashinfo val=LocalParse(i+1);
|
|
|
|
|
if(!val.status)
|
2017-03-22 13:57:49 +08:00
|
|
|
|
{
|
2017-03-22 14:17:42 +08:00
|
|
|
|
needrefetch.push(make_pair(i+1,0));
|
2017-03-22 13:57:49 +08:00
|
|
|
|
}
|
|
|
|
|
vec.push_back(val);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>»<EFBFBD>ȡ...\n");
|
|
|
|
|
if(!needrefetch.empty())
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD>%u<><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>»<EFBFBD>ȡ...\n",needrefetch.size());
|
|
|
|
|
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>»<EFBFBD>ȡ...\n");
|
2017-03-22 13:08:30 +08:00
|
|
|
|
|
2017-03-22 13:57:49 +08:00
|
|
|
|
BeginNetwork();
|
|
|
|
|
while(!needrefetch.empty())
|
|
|
|
|
{
|
2017-03-22 14:17:42 +08:00
|
|
|
|
pair<int,int> pack=needrefetch.front();
|
2017-03-22 13:57:49 +08:00
|
|
|
|
needrefetch.pop();
|
2017-03-22 14:17:42 +08:00
|
|
|
|
int id=pack.first;
|
2017-03-22 13:57:49 +08:00
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD>»<EFBFBD>ȡID: %d\n",id);
|
|
|
|
|
RemoteQuery(HEAD_STR,id);
|
2017-03-29 15:52:04 +08:00
|
|
|
|
cashinfo val=LocalParse(id);
|
|
|
|
|
if(!val.status)
|
2017-03-22 13:57:49 +08:00
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD>»<EFBFBD>ȡID: %d ʧ<><CAA7>.\n",id);
|
2017-03-22 14:17:42 +08:00
|
|
|
|
|
|
|
|
|
if(pack.second<3)
|
|
|
|
|
{
|
|
|
|
|
needrefetch.push(make_pair(id,pack.second+1));
|
|
|
|
|
}
|
2017-03-29 19:39:48 +08:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD>»<EFBFBD>ȡʧ<EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD>,ֹͣ<CDA3><D6B9>ȡID: %d.\n",id);
|
|
|
|
|
}
|
|
|
|
|
|
2017-03-22 13:57:49 +08:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD>»<EFBFBD>ȡID: %d <20>ɹ<EFBFBD>.\n",id);
|
|
|
|
|
vec.at(id-1)=val;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.\n");
|
|
|
|
|
|
|
|
|
|
string fname;
|
2017-03-30 16:57:57 +08:00
|
|
|
|
if(_out_file_targeted)
|
|
|
|
|
{
|
|
|
|
|
s_time now=whattime();
|
|
|
|
|
char gpbuff[1024];
|
|
|
|
|
sprintf(gpbuff,"-%04d%02d%02d-%02d%02d%02d",now.year,now.mon,now.day,now.hour,now.min,now.sec);
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ʱ<>佫<EFBFBD><E4BDAB><EFBFBD>Զ<EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>β,<2C><><EFBFBD><D7BA>Ϊtxt\n");
|
|
|
|
|
getline(cin,fname);
|
|
|
|
|
fname=string("result/")+fname;
|
|
|
|
|
fname.append(gpbuff);
|
|
|
|
|
fname.append(".txt");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fname=string(_out_file_name);
|
|
|
|
|
}
|
|
|
|
|
|
2017-03-22 13:57:49 +08:00
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><EFBFBD>浽 %s\n",fname.c_str());
|
2017-03-22 13:08:30 +08:00
|
|
|
|
|
2017-03-22 13:57:49 +08:00
|
|
|
|
ofstream ofs(fname);
|
|
|
|
|
for(size_t i=0;i<vec.size();i++)
|
|
|
|
|
{
|
2017-03-29 15:52:04 +08:00
|
|
|
|
if(vec.at(i).status) ofs<<i+1<<" "<<vec.at(i).current<<" "<<vec.at(i).transforming<<endl;
|
2017-03-29 17:54:44 +08:00
|
|
|
|
else ofs<<i+1+BEGIN_NUM<<" -1 -1"<<endl;
|
2017-03-22 13:08:30 +08:00
|
|
|
|
}
|
2017-03-22 13:57:49 +08:00
|
|
|
|
ofs.flush();
|
|
|
|
|
|
|
|
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>.\n");
|
2017-03-22 13:08:30 +08:00
|
|
|
|
|
2017-03-22 11:24:38 +08:00
|
|
|
|
return 0;
|
|
|
|
|
}
|