一套 Python + Flask 的个人实用工具集:1 个自研控制中心 + 4 个解决真实场景的独立应用, 覆盖 Web 后端、SQLite 数据建模、进程管理、HTTP 流媒体与多端前端交付。
打开控制中心,就能一键启停并打开全部 4 个工具:
http://127.0.0.1:7000
| 工具 | 解决什么问题 | 技术栈 | 端口 |
|---|---|---|---|
| DevHub 控制中心 | 多个本地服务逐个双击、逐个找端口验活 | Flask + psutil + 原生 JS | 7000 |
| BeanTimeU 拼豆计时器 | 拼豆店座位计时收费、加钟、日/月营收与净利核算 | Flask + SQLite + 原生 JS | 5001 |
| BiliDaka B站打卡 | 跟练几百 P 的长系列课程,进度分散难管理 | Streamlit + pandas + requests | 8501 |
| Rewind 局域网视频共享 | 在家用手机/平板/电视直接看电脑上的视频,支持断点续播 | Flask + SQLite + HTTP Range | 5000 |
| SmartQuiz 在线答题 | 题库练习、自动判分、错题本与学习统计 | Flask + SQLite + Vue 3 | 5002 |
DevHub 采用零侵入的进程级纳管:不合并、不重写任何子项目代码, 只在注册表里声明「项目路径 + 启动脚本 + 端口」,通过各项目自带的一键脚本拉起独立进程。
PersonalToolkit/
├─ DevHub/ ← 入口:控制中心(Flask,127.0.0.1:7000)
│ ├─ app.py 页面 + 9 个 REST 接口
│ ├─ config.py 项目注册表(路径/端口/启动脚本,路径自动推导)
│ └─ manager/ process_manager / status_manager / log_manager
│
├─ BeanTimeU/ ← 工具 1:拼豆店计时收银看板(Flask:5001)
├─ bili-daka/ ← 工具 2:B站分P学习打卡(Streamlit:8501)
├─ Rewind/ ← 工具 3:局域网视频流媒体服务(Flask:5000)
└─ SmartQuiz/ ← 工具 4:在线答题系统(Flask:5002 + Vue 3 网页版)
DevHub\一键启动.bat浏览器会自动打开 http://127.0.0.1:7000,在卡片上点「启动」→「打开」即可使用任意工具。
BeanTimeU\一键启动.bat
bili-daka\一键启动.bat
Rewind\启动服务器.bat
SmartQuiz\start-backend.bat每个工具都是一次性脚本:首次运行会自动检测 Python 环境并安装缺失依赖。 需要 Python 3.8+(推荐 3.10+),无需 Docker、无需配置文件。
- 一键启停:启动 / 停止 / 重启 / 浏览器打开,全部在网页上完成
- 三重状态检测:TCP 端口连通 + HTTP 探活 + psutil 进程核对,每 3 秒刷新,冷启动期间有「启动中」宽限窗口
- 精确进程定位:按「PID + 工作目录 + 命令行特征」三级匹配
(
.bat启动链会断裂,Hub 用后台线程在 20 秒窗口内认领真正的项目主进程), 停止时先terminate()优雅退出、再分级兜底,绝不使用taskkill /IM python.exe这类误伤命令 - 系统面板:CPU / 内存 / Python 版本 / 运行时长
- 操作日志:按天轮转(保留 14 天),首页可查看最近 80 条
BeanTimeU — 6 张表(desks / orders / time_cards / add_ons / expenses / system_config);
全库使用整数时间戳规避时区问题;before_request 钩子惰性结算超时订单(不依赖定时器);
固定随机种子注入过去 90 天的模拟订单,演示数据可复现;支持 PyInstaller 打包为单文件 EXE。
BiliDaka — 调用 B 站公开接口 x/web-interface/view 抓取全部分 P;
normalize_df() 对缺失列、类型漂移、非法枚举做防御性清洗;
pandas 布尔掩码实现按分 P 序号范围的批量打卡;数据落 utf-8-sig CSV(Excel 可直接打开);
网络超时、私密视频、CSV 损坏、文件被 Excel 占用等异常均有针对性提示且不崩溃。
Rewind — 用 send_file(conditional=True) 正确响应 HTTP Range 请求,手机端可拖动进度条;
(device_id, video_path) 联合主键 + ON CONFLICT DO UPDATE 记录断点;
设备识别中间件:UUID Cookie + IP/User-Agent 指纹兜底(兼容不持久化 Cookie 的电视盒子),
并解决首次访问多并发请求各自建号的竞态;播放页每 5 秒心跳上报,观看进度 ≥90% 自动判定完播;
/admin 仪表盘聚合 14 天观看趋势与 Top10;路径解析做目录遍历防护。
SmartQuiz — 13 个 REST 接口 + 10 张表 + 60 道题(4 学科 × 4 题型 × 3 难度);
normalize_answer() 做答案归一化(多选乱序、填空空格与大小写容错);
建表脚本幂等(无 DROP TABLE)+ 启动自检补列,老库无需删档即可升级;
错题按 question_id 去重、删除接口校验数据归属、题目接口不回传答案与解析;
同一套 API 同时支撑 Vue 3 网页版(Flask 直接托管构建产物 + SPA fallback)与微信小程序端。
后端 Python 3 · Flask · SQLite(标准库 sqlite3) · 参数化 SQL · WAL 模式 · CORS
系统 psutil · subprocess 进程管理 · HTTP Range / 流媒体 · 目录遍历防护
数据 pandas · requests(B站公开 API)
前端 Jinja2 模板 · 原生 HTML/CSS/JS · Chart.js · Vue 3 + Vite + Vue Router · 微信小程序
分发 Windows 一键脚本 · PyInstaller 单文件 EXE · 按天轮转日志
- 不包含个人数据:
*.db、打卡记录 CSV、视频目录配置均在.gitignore中, 数据库首次启动时自动创建并写入示例数据。 SmartQuiz/web/dist是有意入库的构建产物,使克隆后一条命令即可运行,无需 Node 环境。- 各工具相互独立,可单独拷走使用;DevHub 是可选的统一入口。