原理更新
This commit is contained in:
parent
3918b75874
commit
a65b58c3d3
@ -1,21 +1,20 @@
|
|||||||
<?php
|
<?php
|
||||||
header("Content-type:application/json;charset=utf-8");
|
header("Content-type:application/json;charset=utf-8");
|
||||||
$stream_opts = [
|
|
||||||
"ssl" => [
|
|
||||||
"verify_peer"=>false,
|
|
||||||
"verify_peer_name"=>false,
|
|
||||||
]
|
|
||||||
];
|
|
||||||
$error = null;
|
$error = null;
|
||||||
if($_GET['donor'] == null){
|
if($_GET['donor'] == null){
|
||||||
if($_GET['team'] == '*'){
|
if($_GET['team'] == '*' or $_GET['team'] == ''){
|
||||||
echo @file_get_contents("http://reverse.ghink.net/fah.php?team=*",false, stream_context_create($stream_opts));
|
echo @file_get_contents("database/teams/total/index.json");
|
||||||
}else{
|
}else{
|
||||||
echo @file_get_contents("http://reverse.ghink.net/fah.php?team=".$_GET['team'],false, stream_context_create($stream_opts));
|
if(file_exists("database/teams/each/".$_GET['team'].".json")){
|
||||||
|
echo @file_get_contents("database/teams/each/".$_GET['team'].".json");
|
||||||
|
}else{
|
||||||
|
header('HTTP/1.1 404 Not Found');
|
||||||
|
header('status: 404 Not Found');
|
||||||
|
echo '{"error":"404"}';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
if($_GET['team'] == null){
|
if($_GET['team'] != null){
|
||||||
}else{
|
|
||||||
header('HTTP/1.1 400 Bad Request');
|
header('HTTP/1.1 400 Bad Request');
|
||||||
header('status: 400 Bad Request');
|
header('status: 400 Bad Request');
|
||||||
echo '{"error":"400"}';
|
echo '{"error":"400"}';
|
||||||
@ -23,13 +22,18 @@ if($_GET['donor'] == null){
|
|||||||
}
|
}
|
||||||
if($_GET['team'] == null){
|
if($_GET['team'] == null){
|
||||||
if($_GET['donor'] == '*'){
|
if($_GET['donor'] == '*'){
|
||||||
echo @file_get_contents("http://reverse.ghink.net/fah.php?donor=*",false, stream_context_create($stream_opts));
|
echo @file_get_contents("database/donors/total/index.json");
|
||||||
}else{
|
}else{
|
||||||
echo @file_get_contents("http://reverse.ghink.net/fah.php?donor=".$_GET['donor'],false, stream_context_create($stream_opts));
|
if(file_exists("database/donors/each/".$_GET['team'].".json")){
|
||||||
|
echo @file_get_contents("database/donors/each/".$_GET['team'].".json");
|
||||||
|
}else{
|
||||||
|
header('HTTP/1.1 404 Not Found');
|
||||||
|
header('status: 404 Not Found');
|
||||||
|
echo '{"error":"404"}';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
if($_GET['donor'] == null){
|
if($_GET['donor'] != null){
|
||||||
}else{
|
|
||||||
header('HTTP/1.1 400 Bad Request');
|
header('HTTP/1.1 400 Bad Request');
|
||||||
header('status: 400 Bad Request');
|
header('status: 400 Bad Request');
|
||||||
echo '{"error":"400"}';
|
echo '{"error":"400"}';
|
||||||
|
89
fah/json/reptile.py
Normal file
89
fah/json/reptile.py
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
import requests,time,os,json,bz2,threading,sys
|
||||||
|
proxies = {
|
||||||
|
"http": "127.0.0.1:4780"
|
||||||
|
}
|
||||||
|
dirlist=["database/donors/total","database/donors/each","database/teams/total","database/teams/each","database/teams/monthly","database/os"]
|
||||||
|
dataset={"donor":"","team":"","teamMonthly":"","os":""}
|
||||||
|
def mkdirs(path):
|
||||||
|
try:
|
||||||
|
os.makedirs(path)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
def getList():
|
||||||
|
global listdonor
|
||||||
|
global listteam
|
||||||
|
donorlist=requests.get("https://apps.foldingathome.org/daily_user_summary.txt.bz2",proxies=proxies).content
|
||||||
|
donorlist=bz2.decompress(donorlist).decode()
|
||||||
|
with open("database/donors/total/list.txt","w+",encoding='utf-8') as obj:
|
||||||
|
obj.write(donorlist)
|
||||||
|
s1=donorlist.split("\n")
|
||||||
|
listdonor=[]
|
||||||
|
for obj in s1:
|
||||||
|
listdonor.append(obj.split("\t")[0])
|
||||||
|
del listdonor[0],listdonor[1]
|
||||||
|
teamlist=requests.get("https://apps.foldingathome.org/daily_team_summary.txt.bz2",proxies=proxies).content
|
||||||
|
teamlist=bz2.decompress(teamlist).decode()
|
||||||
|
with open("database/teams/total/list.txt","w+",encoding='utf-8') as obj:
|
||||||
|
obj.write(teamlist)
|
||||||
|
s1=teamlist.split("\n")
|
||||||
|
listteam=[]
|
||||||
|
for obj in s1:
|
||||||
|
listteam.append(obj.split("\t")[0])
|
||||||
|
del listteam[0],listteam[1]
|
||||||
|
def getIndex():
|
||||||
|
dataset['donor']=requests.get("https://stats.foldingathome.org/api/donors",proxies=proxies).text
|
||||||
|
dataset['team']=requests.get("https://stats.foldingathome.org/api/teams",proxies=proxies).text
|
||||||
|
dataset['teamMonthly']=requests.get("https://stats.foldingathome.org/api/teams-monthly",proxies=proxies).text
|
||||||
|
dataset['os']=requests.get("https://stats.foldingathome.org/api/os",proxies=proxies).text
|
||||||
|
with open("database/donors/total/index.json","w+") as obj:
|
||||||
|
obj.write(dataset['donor'])
|
||||||
|
with open("database/teams/total/index.json","w+") as obj:
|
||||||
|
obj.write(dataset['team'])
|
||||||
|
with open("database/teams/monthly/index.json","w+") as obj:
|
||||||
|
obj.write(dataset['teamMonthly'])
|
||||||
|
with open("database/os/index.json","w+") as obj:
|
||||||
|
obj.write(dataset['os'])
|
||||||
|
def getDetail():
|
||||||
|
for obj in listteam:
|
||||||
|
info=requests.get("https://stats.foldingathome.org/api/team/"+obj,proxies=proxies).text
|
||||||
|
with open("database/teams/each/"+obj+".json","w+") as fobj:
|
||||||
|
fobj.write(info)
|
||||||
|
for obj in listdonor:
|
||||||
|
info=requests.get("https://stats.foldingathome.org/api/donor/"+obj,proxies=proxies).text
|
||||||
|
with open("database/donors/each/"+obj+".json","w+") as fobj:
|
||||||
|
fobj.write(info)
|
||||||
|
def getDetailLoop():
|
||||||
|
while(True):
|
||||||
|
getList()
|
||||||
|
getDetail()
|
||||||
|
time.sleep(24*60*60)
|
||||||
|
def getIndexLoop():
|
||||||
|
while(True):
|
||||||
|
time.sleep(10*60)
|
||||||
|
getIndex()
|
||||||
|
def getListLoop():
|
||||||
|
while(True):
|
||||||
|
time.sleep(30*60)
|
||||||
|
getList()
|
||||||
|
def main():
|
||||||
|
for obj in dirlist:
|
||||||
|
mkdirs(obj)
|
||||||
|
getIndex()
|
||||||
|
getList()
|
||||||
|
threading.Thread(target=getDetailLoop,args=()).start()
|
||||||
|
threading.Thread(target=getIndexLoop,args=()).start()
|
||||||
|
threading.Thread(target=getListLoop,args=()).start()
|
||||||
|
while(True):
|
||||||
|
inp=input(">")
|
||||||
|
if(inp=="exit"):
|
||||||
|
sys.exit(0)
|
||||||
|
elif(inp=="getDetail"):
|
||||||
|
threading.Thread(target=getDetail,args=()).start()
|
||||||
|
elif(inp=="getIndex"):
|
||||||
|
threading.Thread(target=getIndex,args=()).start()
|
||||||
|
elif(inp=="getList"):
|
||||||
|
threading.Thread(target=getList,args=()).start()
|
||||||
|
else:
|
||||||
|
print("Unknown command.")
|
||||||
|
main()
|
||||||
|
|
Reference in New Issue
Block a user