创新实训5.28 代码转交&实时评测

原创 2017年05月28日 13:50:36

借助urllib做了代码提交到原OJ,并通过上次写的judger.py去实时评测。然后。。没了。。真的没了。。。目前的题目获取、提交和评测都仅仅支持HDU,后面继续做其他OJ的支持。因为开始写代码的时候尽可能的降低了耦合度,所以其他OJ的支持只需要在problem_spider.py status_spider.py submit.py里新建对应的类和方法即可,对原代码的改动极少。

下面是submiter.py


# coding:utf-8
from base64 import b64decode
import requests,re,time
import urllib.request  
import urllib.parse  
import http.cookiejar 
from scrapy.http import FormRequest

LANGUAGE = {
        'G++' : '0',
        'GCC' : '1',
        'C++' : '2',
        'C' : '3',
        'Pascal' : '4',
        'Java' : '5',
        'C#' : '6',
        'Python' : '7',
    }
class HduSubmiter:
    loginURL = 'http://acm.hdu.edu.cn/userloginex.php?action=login'
    submitURL = 'http://acm.hdu.edu.cn/submit.php?action=submit'

    mapLang = {
        '0' : '0',
        '1' : '1',
        '2' : '2',
        '3' : '3',
        '4' : '4',
        '5' : '5',
        '6' : '6'
    }
    def __init__(self,Prob,User,Code,Lang):
        self.Prob = str(Prob)
        self.User = str(User)
        self.Code = str(Code)
        self.Lang = str(Lang)
        cj = http.cookiejar.CookieJar()  
        cookie_support = urllib.request.HTTPCookieProcessor(cj)  
        opener = urllib.request.build_opener(cookie_support, urllib.request.HTTPHandler)  
        urllib.request.install_opener(opener)
        #print("Prob:%s,User:%s,Lang:%s\nCode:%s\n"%(Prob,User,Lang,Code))

    def login(self):
        postDict={
            'username': self.User,
            'userpass': "2017shixun"+self.User,
            'login': 'Sign+In',
            }
        postData = urllib.parse.urlencode(postDict).encode()
        request = urllib.request.Request(self.loginURL, postData)
        response = urllib.request.urlopen(request)
        text = response.read()
        text = text.decode('gb2312')
        #print("after login -> ",response.url)
        return not re.search(r'No such user or wrong password.', text)


    def submit(self):
        postDict={
            'problemid': self.Prob,
            'language': self.mapLang[self.Lang],
            'usercode': b64decode(self.Code),
            'check': '0'
            }
        postData = urllib.parse.urlencode(postDict).encode()
        request = urllib.request.Request(self.submitURL, postData)
        response = urllib.request.urlopen(request)
        #print("after submit ->",response.url)
    
    def submit2OJ(self):
        if self.login():
            print("login success")
            try:
            	self.submit()
            except:
            	print("submit fail")
            	return False
            print("submit success")
            return True
        else:
            print("login fail")
            return False




版权声明:本文为博主原创文章,未经博主允许不得转载。

TensorFlow实战10:ResNet实现及时间测评

1.ResNet简介ResNet(Residual Neural Network)是由微软研究院的Kaiming He等4名华人提出的,一般我们把ResNet称作是残差网。在ILSVRC 2015的比...
  • Felaim
  • Felaim
  • 2017年04月08日 20:08
  • 7878

TensorFlow——训练自己的数据(五)模型评估

模型的评估主要有几个指标:平均准确率、识别的时间、loss下降变化等。Tensorflow提供了一个log可视化的工具tensroboard。要看到log就必须在训练时用summary去记录想要显示的...
  • xinyu3307
  • xinyu3307
  • 2017年07月12日 12:48
  • 1271

Tensorflow实战8:VGGNet实现及时间测评

1.VGGNet简介 嘿嘿嘿,小伙伴肯定有一个问题,VGGNet这个名字是怎么来的?是牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司研究员一起...
  • Felaim
  • Felaim
  • 2017年04月05日 18:40
  • 1307

2017年中国直销银行评测与创新分析报告

2017年中国直销银行评测与创新分析报告
  • shuytu
  • shuytu
  • 2017年12月26日 22:25
  • 58

免费的实时数据库,我们该选谁?----BerkeleyDB与SQLite评测对比

免费的实时数据库,我们该选谁?----BerkeleyDB与SQLite评测对比 2013-02-18 16:40 858人阅读 评论(0) 收藏 举报  分类:   实时...
  • lltaoyy
  • lltaoyy
  • 2016年07月07日 11:16
  • 1155

转 实时数据管理 eXtremeDB内存数据库评测

原址如下: http://tech.it168.com/a2012/1030/1415/000001415603_all.shtml 【IT168 专稿】eXtremeDB是一款高速内存实时数据库...
  • edwzhang
  • edwzhang
  • 2012年10月31日 15:09
  • 680

TiDB / TiSpark 在易果集团实时数仓中的创新实践

项目背景目前企业大多数的数据分析场景的解决方案底层都是围绕 Hadoop 大数据生态展开的,常见的如 HDFS + Hive + Spark + Presto + Kylin,在易果集团,我们初期也是...
  • TiDB_PingCAP
  • TiDB_PingCAP
  • 2017年12月21日 10:57
  • 141

【ATF】钱正平:大规模实时计算及其在阿里的应用与创新

2016 ATF阿里技术论坛中,阿里云高级专家钱正平深入分享了在大规模实时计算及其在阿里的应用与创新经验。在他看来,用户需求是真正驱动分布式计算领域发展和变化的核心因素。除了一些比较有特色的技术点之外...
  • Mini_Monster
  • Mini_Monster
  • 2016年04月16日 23:30
  • 1489

适时创新与实时问题

在2013年最后一天的上班路上发了一篇《建立产品经理的情报中心》,收到很多同事和朋友的反馈,感谢各位。我想,有必要写一篇续篇,以使“情报中心”的思想更完整,更易落地,何时发?我想2014第一天上班路上...
  • yigm22
  • yigm22
  • 2014年01月02日 13:38
  • 383

(个人)AR电子书系统创新实训第一周(1)

宣传册设计讲求一种整体感,对设计者而言,尤其需要具备一种把握力。从宣传册的开本、字体选择到目录和版式的变化,从图片的排列到色彩的设定,从材质的挑选到印刷工艺的求新,都需要做整体的考虑和规划,然后合理调...
  • w1967486422
  • w1967486422
  • 2017年05月14日 13:24
  • 139
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:创新实训5.28 代码转交&实时评测
举报原因:
原因补充:

(最多只允许输入30个字)