import requests
import json
import threading
import time

postHeaders_model = {
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'Origin': 'file://',
    'Authorization': 'USERID ',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-HK,zh;q=0.9,en-US;q=0.8,en;q=0.7',
    'Connection': 'keep-alive',
    'Host': '',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'User-Agent': 'Mozilla/5.0 (Linux; Android 9; SM-N9500 Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/75.0.3770.101 Mobile Safari/537.36 Html5Plus/1.0',
    'X-Requested-With': 'io.dcloud.H5813571B'
}
balanceUrl = ''
postUrl = ''
loginUrl = ''
gameTime = 5 #minutes

threadState = {} #设置线程状态
class myThread(threading.Thread):
    def __init__(self, phone, pwd):
        threading.Thread.__init__(self)
        self.phone = phone
        self.pwd = pwd
    def run(self):
        print ("开始线程:" + self.phone)
        threadState[self.ident] = True
        try:
            vv_start(self.ident, self.phone, self.pwd)
        except:
            time.sleep(60) # 如果出错休息一分钟继续
            self.run()
        print ("结束线程:" + self.phone)
    def stop(self):
        threadState[self.ident] = False
        while self.isAlive():
            time.sleep(0.001)
        return 'stopped'
    def restart(self):
        if self.stop() == 'stopped' :
            self.run()

def vv_login(phone,pwd,loginheaders,s):
    logindata = { 'Phone':phone,'Password':pwd }
    return json.loads(s.post(loginUrl,logindata,loginheaders).text)['data']
    
def vv_start(tid,phone,pwd):
    ID = {'Id': 1}
    s = requests.Session()
    times = 0
    postHeaders[phone] = dict(postHeaders_model)
    
    postHeaders[phone]['Authorization'] = 'USERID ' + vv_login(phone,pwd,postHeaders_model,s)
    res = json.loads(s.post(postUrl,data=ID,headers=postHeaders[phone]).text)
    
    while res and threadState[tid]:
        strPhone = phone[0:3] + '****' + phone[7:11]
        if res['status'] == 1 or res['status'] == 10003 :
            times += 1
            time.sleep(gameTime * 60 * 0.05)
            vv_balance = json.loads(s.post(balanceUrl,headers = {
                'Host': '',
                'Connection': 'keep-alive',
                'Content-Length': '0',
                'Accept': 'application/json, text/javascript, */*; q=0.01',
                'Origin': 'file://',
                'User-Agent': 'Mozilla/5.0 (Linux; Android 9; SM-N9500 Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/75.0.3770.101 Mobile Safari/537.36 Html5Plus/1.0',
                'Authorization': postHeaders[phone]['Authorization'],
                'Accept-Encoding': 'gzip, deflate',
                'Accept-Language': 'zh-HK,zh;q=0.9,en-US;q=0.8,en;q=0.7',
                'X-Requested-With': 'io.dcloud.H5813571B',
            }).text)['data'][0]['Money']
            
            showMoney(phone,vv_balance)
            print('[' + strPhone + ']' + res['message'] + '(' + str(times) + ') ')
            time.sleep(gameTime * 60 * (1 - 0.05))
        else :
            print('[' + strPhone + ']' + res['message'] + '正在重新登录...')
            postHeaders[phone]['Authorization'] = 'USERID ' + vv_login(phone,pwd,postHeaders_model,s)
            
        res = json.loads(s.post(postUrl,data=ID,headers=postHeaders[phone]).text)

def showMoney(p,m):
    if moneys[p] == m:
        return
    sum = 0
    moneys[p] = m
    for m in moneys:
        sum += moneys[m]
    print('-' * 25 + "当前总额为:" + str(sum) + ' SVVC' + '-' * 25)

postHeaders = {}
members = [
]

moneys = {}
for m in members:
    moneys[m[0]] = 0
    myThread(m[0],m[1]).start()
    time.sleep(5)