Skip to content

XY0797/nowcoder-balloon-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

牛客比赛气球发放系统

项目介绍

这是一个前后端分离的项目,前端使用Vue3,后端使用Python fastapi,数据库使用SQL lite。

利用牛客举办现场赛时,本系统可以自动分配气球派发任务给现场工作人员。

后端会实时爬取牛客网比赛的提交信息,根据设置的参赛名单,将过题的提交信息存储在数据库中。

前端登录账户后,可以接气球派发任务,并且手滑可撤回;3分钟没有完成派发任务,任务会被系统自动收回,供其它工作人员领取。

启动后端(服务端)后,访问http://localhost:5173/,即可访问前端页面。

现场赛时,端口映射出去,即可被手机访问。

使用

1. 获取服务端

从Release下载

直接在Release页面下载服务端

从源码构建

  1. 创建Python虚拟环境(可选,但推荐)
  2. 激活环境后,安装依赖:pip install fastapi sqlalchemy pytest aiosqlite python-jose uvicorn python-multipart pyinstaller
  3. 确保电脑有node.js环境
  4. 进入本项目,运行打包.bat
  5. release目录下就是构建的服务端

2. 初始化

  1. 运行数据库初始化.exe,设置好管理员账户的用户名和密码
  2. 运行main.exe,启动服务端

也可以自定义配置,下面的完整的配置示例:

[server]
debug_mode = false
bind_host = 0.0.0.0
bind_port = 5173

[jwt]
secret_key = xxxxxxxxxxxxxxxxxxxxxxxx
algorithm = HS256
access_token_expire_minutes = 1440

3. 使用

大致流程:初始化数据库->填配置->添加参赛人员->创建工作人员账户->启动系统->封榜后停止系统

  1. 不修改配置的情况下,访问http://localhost:5173/,即可访问前端页面
  2. 登录后进入管理员面板,填写系统配置
    • 比赛ID:对于比赛链接https://ac.nowcoder.com/acm/contest/10000,后面的10000就是比赛ID。

    • 比赛开始时间:比赛开始时间,格式为YYYY-MM-DD HH:MM:SS,例如2025-01-01 00:00:00

    • 比赛结束时间:比赛结束时间,格式为YYYY-MM-DD HH:MM:SS,一般是填写封榜的时间,因为封榜后不发气球。

    • 看榜时间间隔:爬取牛客网提交信息的时间间隔,单位为秒,例如300表示5分钟

    • 任务超时时间:接一个任务后,如果超时这个时间会被系统强制收回供其他人接,单位为分钟,例如5表示5分钟

    • Cookies:

      登录牛客竞赛后,打开F12后刷新页面

      找到名称为比赛ID的项目,请求URL应该是https://ac.nowcoder.com/acm/contest/xxxxx的形式

      复制请求标头中的Cookies,确保复制完整不漏

      注意:Cookies有时效性,每次重新登录账号或者隔了几天都要重新获取

  3. 点击提交,使服务器应用配置
  4. 参赛人员管理中,添加参赛人员。可在Excel表格中编辑名单,复制粘贴到浏览器就是制表符分隔的数据。一定要注意格式,列不要搞错了! 导出的名单可直接粘贴到Excel表格中。
  5. 账户管理中,为工作人员创建账户
  6. 比赛开始后,点击系统配置启动系统,爬虫就会开始运行并且自动爬取。
  7. 封榜后,等待3分钟,确保封榜前的提交信息已经爬取完毕,然后点击系统配置停止系统

如果要做其它现场赛,把nowcoder_balloon_system.db文件删除然后重新初始化数据库即可

许可证

本程序遵循 GPL-3.0-only许可证。

本程序仅供学习研究使用,严禁用于商业用途!

注意:由于GPL协议的强约束性,如果您将本项目的代码用于您的商业项目,会导致您商业项目的所有代码被迫全部以相同协议开源

本项目许可证的具体内容详见项目根目录下的LICENSE文件

您也可访问GNU的网站获取更多有关GPL许可证以及自由软件运动的相关信息

联系方式

在github的issues页面发布您发现的BUG以及您的宝贵建议

如果您要联系我或询问问题,请发送邮件到我的邮箱:[email protected]

About

牛客比赛气球发放系统

Resources

License

Stars

Watchers

Forks

Packages

No packages published