vjudge自动登录+创建比赛

import requests
import time
import json
import urllib3
from urllib3.exceptions import InsecureRequestWarning
urllib3.disable_warnings(InsecureRequestWarning)
session = requests.session()


def create_contest(title,problems,beginTime,length,cid=0):
    # print(title,problems,beginTime,length)
    url = 'https://cn.vjudge.net/user/login'
    data={
        'username':'****',
        'password':'******'
    }
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36",
    }
    session.post(url,headers = headers , data=data,verify=False)

    url = 'https://cn.vjudge.net/user/checkLogInStatus'
    session.post(url,headers=headers)
    url = 'https://cn.vjudge.net/contest/create'
    session.get(url,headers=headers)

    url = 'https://cn.vjudge.net/problem/findProblemSimple'

    failres = []
    for problem in problems:
        for oj, problemId in problem.items():
            data = {
                'oj': oj.upper(),
                'problemId': problemId
            }
            res = session.post(url, headers=headers, data=data)

            if 'null' in res.text:
                failres.append(1)
            else:failres.append(0)

    if 1 in failres:
        return None
    # print(problems)
    temp = []
    try:
        for problem in problems:
            tmp = {}
            for oj,problemId in problem.items():
                data = {
                    'oj':oj.upper(),
                    'problemId':problemId
                }
                res = session.post(url, headers=headers, data=data)
                content = eval(res.text)

                tmp['oj'] = oj.upper()
                tmp['probNum'] = problemId
                tmp['pid'] = content[0]
                tmp['alias'] = ""
                tmp['weight'] = "1"
                temp.append(tmp)
    except:
        print("!!!!!!!!!!!!")
        return None
    # print(temp)
    header ={
        "Origin": "https://cn.vjudge.net",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
        "Content-Type": "application/json",
        "Referer": "https://vjudge.net/contest",
        'x-requested-with': 'XMLHttpRequest',
        'Host': 'vjudge.net',
    }
    #18000000/3600/1000
    d = {"type":0,"contestId":cid,"openness":0,"beginTime":beginTime,"length":length,"timeMachine":1,"problems":temp,"groups":{},"sumTime":1,"penalty":"1200","partialScore":0,"showPeers":0,"description":{"format":"MD","content":""},"password":"","title":"%s"%(title),"announcement":""}
    url = 'https://cn.vjudge.net/contest/edit'
    res = session.post(url,headers=header,data=json.dumps(d))
    res.encoding='utf8'
    text = (res.text)
    if 'error' in text:
        return text
    return eval(text)['contestId']
'''
200
[{"contestId":234140}]
'''
if __name__ == '__main__':
    pass

 

你可能感兴趣的:(python)