Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/OIerDb-ng/OIer

A database for OIers
https://github.com/OIerDb-ng/OIer

noi oier py-csv

Last synced: 8 days ago
JSON representation

A database for OIers

Lists

README

        



OIerDb

OIerDb is a database for Chinese OI participants.


OIerDb 是中国信息学竞赛选手的一个数据库.

> A next generation OIerDb is now available at [OIerDb-ng/OIerDb](https://github.com/OIerDb-ng/OIerDb).

> 新版 OIerDb 现已推出,请前往 [OIerDb-ng/OIerDb](https://github.com/OIerDb-ng/OIerDb) 查看。

### 如何订正数据

[请点我了解数据修复](https://github.com/nocrizwang/OIer/wiki/如何订正数据)

### The following data are the unlicensed data gathered and formatted by fjzzq2002 from noi.cn. These data are modified and completed.
- CTSC 2010-2017
- APIO 2010-2017
- NOI 2010-2017
- NOI D类 2014-2017
- WC 2015-2017
- NOIP 2013-2017

### The rest of the data are directly from noi.cn, including:

- CTSC 2018-2019
- APIO 2018-2019
- NOI 2009 / 2018-2019
- NOI type D 2010-2013 / 2018-2019
- WC 2018-2019
- NOIP 2010-2012 (not complete) / 2018

### 这些数据是在开源项目中,由fjzzq2002整理的,并进行了部分完善
- CTSC 2010-2017
- APIO 2010-2017
- NOI 2010-2017
- NOI D类 2014-2017
- WC 2015-2017
- NOIP 2013-2017

### 其余数据来源于NOI官网,包括

- CTSC 2018-2019
- APIO 2018-2019
- NOI 2009 / 2018-2019
- NOI 非ABC类选手 2010-2013 / 2018-2019
- WC 2018-2019
- NOIP 2010-2012 (提高组一等奖) / 2018

将来会及时更新新数据,也可能会添加缺失数据。
## 捐赠记录

|日期 |金额 |备注 |
| -----------: | -----------: | -----------: |
|2019-03-07 |20.00元 |杭心语 北京大学 |
|2019-03-09 |20.00元 |无 |
|2019-03-10 |10.00元 |无 |
|2019-03-14 |6.66元 |无 |
|2019-03-15 |10.00元 |小伙子加油啊 |
|2019-03-16 |5.00元 |Level -1 |
|2019-03-18 |10.00元 |无 |
|2019-03-18 |6.00元 |无 |
|2019-03-18 |9.99元 |白雪粉粉何所似 |
|2019-03-21 |30.00元 |无 |
|2019-03-22 |10.00元 |捐赠给OIerDb,并Orz |
|2019-03-23 |17.00元 |无 |
|2019-03-24 |10.00元 |资瓷oierdb! |
|2019-03-24 |100.00元 |oierdb捐助 |
|2019-03-25 |6.00元 |备注能留的也太少了⑧ |
|2019-03-25 |5.00元 |无 |
|2019-03-28 |10.00元 |无 |
|2019-03-29 |30.00元 |enor2017 |
|2019-03-30 |5.00元 |无 |
|2019-03-30 |23.33元 |Orz 无限仰慕作者 |
|2019-04-02 |15.00元 |无 |
|2019-04-02 |200.00元 |西安铁一中教练aqx |
|2019-07-25 |10.00元 |无 |
|2019-07-30 |10.00元 |无 |
|2019-07-31 |3.50元 |@imikeliu 捐 |
|2019-08-02 |20.00元 |oierdb |
|2019-08-15 |10.00元 |无 |
|2019-08-16 |10.00元 |无 |
|2019-08-18 |5.00元 |无 |
|2019-08-30 |1000.00元 |洛谷捐助 |
|2019-09-06 |50.00元 |gbakkk5951 |
|2019-09-25 |2.33元 |无 |
|2019-09-25 |2.33元 |Github.com/panda2134 |
|2019-09-26 |10.00元 |无 |
|2019-10-01 |0.10元 |无 |
|2019-10-12 |5.00元 |无 |
|2019-10-28 |20.00元 |无 |
|2019-11-01 |8.00元 |无 |
|2019-11-10 |20.00元 |Andrew82 |
|2019-11-13 |10.00元 |滋瓷之坤哥哥QwQ |
|2019-11-29 |20.00元 |无 |
|2019-12-07 |11.11元 |无 |
|2019-12-07 |1.28元 |无 |
|2019-12-11 |66.00元 |发个红包,加油! |
|2019-12-14 |10.00元 |无 |
|2019-12-21 |10.00元 |无 |
|2019-12-21 |1.00元 |无 |
|2019-12-23 |10.24元 |无 |
|2019-12-23 |20.20元 |wzk2020出线冲冲冲! |
|2020-01-19 |9.99元 |卑微果壳 |
|2020-01-30 |5.00元 |无 |
|2020-02-16 |1.00元 |无 |
|2020-12-02 |10.00元 |Fighting~~~ |
|2020-12-02 |5.00元 |无 |
|2020-12-10 |100.00元 |yloi |
|2020-12-16 |10.00元 |无 |
|2021-01-25 |1.00元 |加油 |
|2021-01-28 |5.00元 |无 |
|2021-02-19 |100.00元 |无 |
|2021-02-22 |20.21元 |无 |
|2021-02-22 |99.82元 |来自蔡德仁的凝视 |
|2021-02-22 |100.00元 |skyline |
|2021-02-24 |10.22元 |For OIer Amethyst |
|2021-02-25 |200.00元 |无 |
|2021-02-25 |1.00元 |无 |
|2021-03-06 |2.00元 |无 |
|2021-03-14 |5.00元 |来自退役选手的感谢 |
|2021-04-06 |6.66元 |才注意到能捐款 |
|2021-04-10 |10.00元 |无 |
|2021-04-13 |9.99元 |希望OIerDb能够长久 |
|2021-05-10 |50.00元 |长沙 |
|2021-05-23 |100.00元 |无 |
|2021-06-01 |10.00元 |无 |
|2021-06-03 |200.00元 |杨博洋 计蒜客 |
|2021-06-07 |15.00元 |祝oierdb更好! |
|2021-06-16 |200.00元 |无 |
|2021-06-28 |33.00元 |33DAI |
|2021-07-19 |50.00元 |a999999捐款50 |
|2021-07-22 |10.00元 |OierBBS |
|2021-08-05 |666.00元 |左季初(压岁钱)捐款 |
## 搭建指南

这个项目是"OIerDb",但其实可以方便地改装成为任何一个学科竞赛获奖的数据库。项目由如下几部分组成:

### 合并及数据预处理

#### 原始数据文件

##### data.txt

data.txt中是所有的获奖记录,实则为csv格式,每一行格式如下:

`比赛名称,奖项,姓名,年级,学校,分数,省份,性别,`

下面是一个例子

`NOI2018,金牌,杨骏昭,高一,南京外国语学校,522,江苏,男,`

需要注意的是,如果其中有一项缺省,逗号的数目不能减少,且每行最后还有一个逗号。

##### school_oped.txt

school_oped.txt中是表示学校合并信息的文件,同时记录有学校所属的省份。每一行格式如下:

`省份,地市,学校名称1,学校名称2,(更多学校名称,结尾无逗号)`

下面是一个例子

`江苏,苏州市,江苏省苏州中学,江苏省苏州中学校,苏州中学`

需要注意,每一个在`data.txt`中出现的学校名称都应当在这个文件中出现。
在`getter.py`中提供了一个基于百度地图api的从学校名称找定位的函数,通过这个函数可以初步地获得学校所在省份和地市,并合并一下定位相同的学校。这个效果并不充分,合并更多学校很大程度上基于人工判断,如果有人希望部署这个系统至其他位置,可参考本项目中`school_oped.txt`中做出的合并。

#### 合并及数据处理脚本

两个脚本均是`python3`脚本,并需要`pypinyin`才能够正常运行。

##### new_merger.py

new_merger.py 是最重要的数据合并器。

new_merger.py 从 `data.txt` 和 `school_oped.txt` 读入数据,并输出csv格式到`result.txt`中。

##### school_analyzer.py

school_analyzer.py 是学校获奖记录统计及排名器。

new_merger.py 从 `data.txt` 和 `school_oped.txt` 读入数据,并输出csv格式到`OI_school.txt`中。

这个脚本将每个学校的获奖记录统计,并计算分数。分数由一个函数f(排名,比赛类型,比赛年份)得出

f(排名,比赛类型,比赛年份) = 0.8 ^ (今年年份-比赛年份) * g(排名*400/总参赛人数) * 比赛权重

g(x)在x = 0-60时为 100-40上的线性函数,x在60-250上为 36 - 7.5 上的线性函数,x在250-400上为7.5-0上的线性函数。

`权重 = {"NOI":1,"NOID类":0.75,"CTSC":0.6,"WC":0.5,"APIO":0.4,"NOIP提高":0.1,"NOIP普及":0.04}`

如果您有兴趣修改这个评分函数(或参数),请对比说明您的函数(或参数)的优越性。毕竟现在应用的也是一念之间的产物。

### 在线部署

[作者的部署](http://bytew.net/OIer)

作者的部署使用了`MySQL`,但实际上您使用什么数据库都可以(尽管这里只提供了php格式的查询MySQL数据库并返回的代码)。在更新/新添加数据时,先运行数据预处理的脚本,而后将生成的csv格式数据导入到数据库中,就结束了。

#### search.php 和 school.php

根据查询查表,而后返回 json 格式的数据。您需要更改php中的数据库信息以适应自己的设置。具体实现可能不是很漂亮。

欢迎您来作出贡献,提出意见和建议,或者自己搭一个玩玩。