#ACM 刷题数查询——专为ACMers打造
等待完善
1.HDOJ
2.POJ
3.NOJ
4.LightOJ
5.SGU
6.URAL
7.Acdream
8.BZOJ
9.FZU OJ
10.ZOJ
11.CodeForces
1.由于LightOJ和NOJ没有提供直接通过用户名查询用户信息(尽管可以通过用户ID,但是我们无从得知)的接口,所以对于这两个
OJ,采用的方法是每隔一定时间将数据爬取到本地数据库,每当需要查询,直接从本地数据库查询即可;其他OJ均是实时查询。
2.暂时只支持查询一个账号,未来将会支持更多的账号,届时将会才用多进程/线程的方式提高效率。
3.core程序可以脱离WEB端直接运行,即直接运行run.py即可(当然需要带上一个用户名)。
4.config文件里是需要用的一些配置,包括了正则表达式、各个OJ用到的URL,还有数据库配置等。
5.如果你把程序clone到本地,那么需要先补充数据库的配置并且确保你本地已经有了mysql数据库,然后需要创建对应数据库并且新建2个表count_lightoj、count_noj,表结构如下
> id int not null primary key auto_increment,
> username varchar(250) not null,
> ac_number int not null
然后首先运行spide_to_db这个程序,耗时大约10分钟,注意获取Lightoj你必须输入一个lightoj的账号 。
6.程序运行需要一定的时间,目前看来大约需要40s。
7.整个程序基于python3。
8.由于网络原因,程序运行过程中难免会出现数据获取失败的情况,另外由于LightOJ和NOJ采取的策略,你获取的数据不一定百分百正确。
9.LightOJ需要登录才可查看信息,程序中已经提供一个公开的使用账号。
10.Codeforces计算AC题数时,将组队比赛中所AC的题也都算上了,但是同一道题AC多次只计算一次,因此结果应该有少许偏差。
1.程序运行时间主要花费在IO等待,所以对于单个用户的查询,可以采用多线程。
2.多个账号查询时,采用多进程。
1.定时更新LightOJ和NOJ的数据,可以设置为1天1次。
2.最大并发数取决于CPU核数。