Skip to content

RedForestLonvor/PU-SignUpBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PU-SignUpBot


What's new

  1. 增加邮件通知功能pu口袋校园的移动端广告太多了,查看报名是否成功时一不小心就点到,故开发此功能
  2. 增加自动获取活动id的功能。可以自定义筛选条件,快速简洁地获得满足用户筛选需求的所有活动,无需手动复制id
  3. 优化用户存储逻辑,实现每个用户可以根据自己的activity_ids报名。
  4. 优化报名策略:
    • 报名前先与服务器时间同步。
    • 持续监控活动信息,可以在一定程度上避免因活动时间变更而无法及时报名的问题。⚠️注意:此功能可以在config里配置,间隔时间越短越准确,同样封号或封ip的可能性也更大,非必要不建议更改
    • 报名时采用三段式策略,每个快速线程发送5个报名请求。第一轮快速启动5个线程;第二轮每0.4秒启动一个一个线程,总计启动15个;第三轮每0。8秒启动一个线程,总计45个。
    • 如果60秒内该活动为报名成功,说明活动人数已满,报名失败,结束该报名线程

⚠️ 使用前要知道的事 ⚠️

网络要求:需要稳定的网络,不能使用外网环境

账号安全:只在可信的电脑上使用,注意保护 user_data 用户数据的安全


🚀 快速开始(5分钟搞定)

第1步:下载工具

方法A - 直接下载(推荐新手)

  1. 点击页面上绿色的 Code 按钮
  2. 选择 Download ZIP
  3. 解压到你电脑的任意文件夹

方法B - 用Git下载(适合有基础的用户)

git clone -b refactor/core-and-add-features https://github.com/yiqjffeng/PU-SignUpBot.git

第2步:安装运行环境(两种方法,推荐用uv更简单)

  1. 打开下载的文件夹
  2. 在空白处点击右键,选择 在终端中打开

方法一:用uv安装(推荐,最简单)

什么是uv? 这是一个超简单的Python环境管理工具,比传统pip快很多!

如果你没有uv,可以先用pip安装:

  1. 先安装uv

    • 打开终端
    • 输入:
    pip install uv
  2. 用uv安装依赖

    • 进入你下载的项目文件夹
    • 在终端输入:
    uv sync
    • 等待完成就行啦!

    然后激活虚拟环境

    • Windows用户:
    .venv/Scripts/activate
    • Mac/Linux用户:
    source .venv/bin/activate

方法二:用传统pip安装

Note

如果您是第一次使用pip,且没有科学上网的环境,可能会遇到网络连接的错误或者下载速度很慢很慢。

这时建议您配置国内的镜像仓库,请参考这里

使用uv的小伙伴不需要在意,我已经在项目里配置好了uv的国内镜像源

Windows用户看这里

依次输入以下命令:

python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt

Mac/Linux用户看这里

  1. 打开终端,进入本项目文件夹(如果你没有重命名应该是PU-SignUpBot)
  2. 依次输入以下命令:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

为什么推荐uv?

  • 速度超快:安装依赖比pip快好几倍
  • 一键搞定:一个命令就能装好所有东西
  • 自动管理:自动帮你处理环境配置
  • 节省空间:占用更少的硬盘空间

第3步:运行工具

在刚才的终端里输入:

python main.py

详细使用教程

第一步:添加你的PU账号

运行程序后会问你是否要添加新用户,输入 y 然后按提示填写:

  1. 学校名称:输入你学校的完整名字(比如"山东科技大学")
  2. PU用户名:你在PU口袋校园的登录账号 通常为学号
  3. PU密码:你的登录密码
  4. 院系名称:你就读的院系,请务必使用你所在院系的全称(比如"经济管理学院")
  5. 邮箱地址(可选):填写后报名结果会发邮件通知你

小贴士:信息一定要填准确,错了会导致报名失败哦!


第二步:找你想报名的活动

程序会问你要不要获取活动列表,输入 y 后:

  1. 先选择要不要用高级筛选(推荐用,可以精准找到想要的活动)

  2. 如果选高级筛选,会问你:

    • 想参加什么类型的活动(如思想政治与道德修养、文化艺术与身心发展等),y是添加,n是不添加。示例如下:
      当前类型: 活动分类
      需要筛选此类型的活动吗?[y/n]y
      0:
        名称:思想政治与道德修养
      是否添加至筛选? [y/n] n
      1:
        名称:社会实践与志愿服务
      是否添加至筛选? [y/n] n
      2:
        名称:文化艺术与身心发展
      是否添加至筛选? [y/n] n
      3:
        名称:学术科技与创新创业
      是否添加至筛选? [y/n] n
      4:
        名称:社会工作与技能拓展
      是否添加至筛选? [y/n] n
      该类型已添加完毕。

Warning

注意,每个学校的活动类型名称可能不一样,作者只有山东科技大学的pu账号,无法知晓其他学校的活动类型信息,故此方面可能有错误。

如果遇到错误请再issue里提出并附上日志,作者会尽快修复。

  • 你的年级(23、24、25等),程序会列出来选择你对应年级的索引即可。索引从0开始位于左上角,示例如下:

    当前类型: 参与年级
    0:
      年级:25
    1:
      年级:24
    2:
      年级:23
    3:
      年级:22
    4:
      年级:21
    5:
      年级:20
    6:
      年级:19
    7:
      年级:18
    请选择您的年级:2
  • 想参加哪个院系举办的活动 和上方添加活动类型相似,故不再例举

  1. 程序会列出所有符合条件的活动,每个活动会显示:

    • 活动名称
    • 开始报名时间
    • 活动分类
    • 举办组织
    • 能获得的分数
  2. 看到想报名的活动就输入 y 添加到列表

Tip

本项目任然保留了旧版手动填写活动id的功能。
请在 user_data.json 中找到你的信息,然后在 "activity_ids" 后方的 [] 中添加活动id。
多个活动id之间用英文逗号隔开。,

Note

注意活动时间和你的课表等活动不要冲突哦!


第三步:坐等自动报名

添加完活动后,程序会自动:

提前准备 - 活动实时监控,避免主办方更改时间导致报名失败

精准计时 - 自动对时,确保报名时机分毫不差

快速报名 - 活动一开始就用多个线程同时帮你报名

及时通知 - 报名成功会发邮件告诉你好消息

Important

在程序运行报名期间,请确保电脑正常运行,不要关机或者休眠。
因为这样可能会终止或暂停线程,导致报名失败哦。💔


邮件通知设置(可选但推荐)

电脑不在身边,不想打开app查看结果广告太多了,一不小心就给我下个赖安装包🙄,但想要即时收到报名结果通知?跟着下面的步骤设置:

  1. 在工具文件夹里新建一个文件,名字叫 .env
  2. 打开这个文件,输入以下内容:
INFO_EMAIL_SERVER=smtp.qq.com
INFO_EMAIL_PORT=465
INFO_EMAIL_HOST=你的QQ邮箱@qq.com
INFO_EMAIL_SMTP_PASS=你的QQ邮箱授权码

怎么获取QQ邮箱授权码?

  1. 登录你的QQ邮箱
  2. 点击设置账户
  3. 找到POP3/SMTP服务,点击开启
  4. 按提示发送短信,就能获得授权码了

其他邮箱设置

  • 163邮箱:服务器改成 smtp.163.com
  • 其余的邮箱请自行登录在设置里查看smtp服务器地址和端口号

自定义配置

  • 如果你想修改报名策略:先进入/utils/activity_bot.py,然后找到_start_signup_threads(启动发送报名请求线程)和_signup_worker(发送报名请求),根据注释信息适当进行修改。

  • 邮箱启用开关在根目录下的config.py里。

  • 如果你想调整活动监控时间,任然先进入/utils/activity_bot.py,找到_monitor_start_time函数,修改min_minutesmax_minutes参数。


报名成功秘诀

提高成功率的小技巧:

  1. 网络要稳定 - 避免使用外网,同时确保网络稳定

Tip

如果不知道是否畅通,请登录 PU口袋校园官网 进行验证

  1. 时间要准确 - 工具会自动对时,但电脑时间也要设置正确
  2. 信息要准确 - 学校、院系等信息一定要填对
  3. 提前添加活动 - 不要等到最后一刻才设置

常见问题和解决办法:

Q: 登录失败了怎么办? A: 检查用户名密码对不对,确认能在PU网页正常登录,检查网络环境

Q: 找不到想报名的活动?
A: 检查筛选条件是不是太严格了,试试放宽条件

Q: 报名失败了怎么办? A: 可能是名额满了,或者不符合参加条件

Q: 收不到邮件通知? A: 检查邮箱设置对不对,看看logs里的错误日志信息,检查垃圾邮件文件夹


安全使用指南

可以做的

  • 在自己的电脑或者服务器上使用
  • 帮同学朋友报名(经过他们同意)
  • 合理使用,不要恶意刷活动

Warning

由于账密是明文存储的,泄露可能导致账号封禁、身份信息泄露等一系列后果。
请务必在相信的环境下使用 🔐

不能做的

  • 不要在公共电脑上保存账号密码 🚫
  • 不要泄露他人的账号信息 🚫
  • 不要用来干扰正常的活动报名秩序 🧨

遇到问题怎么办?

  1. 先看看常见问题 - 上面的解决办法能解决大部分问题
  2. 检查网络连接 - 确保网络正常,能访问PU口袋校园
  3. 重新运行试试 - 有时候重新启动就能解决问题
  4. 寻求帮助 - 可以在GitHub上提交问题,大家一起解决

祝您大学生活不再受PU困扰!

About

自动报名pu口袋校园的python脚本

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

Languages