Skip to content

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

PersonalToolkit · 个人工具集

一套 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 网页版)

快速开始

1. 打开控制中心

DevHub\一键启动.bat

浏览器会自动打开 http://127.0.0.1:7000,在卡片上点「启动」→「打开」即可使用任意工具。

2. 也可以单独运行某个工具

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 是可选的统一入口。

About

个人工具集 · Python + Flask 多工具平台。1 个自研控制中心(Flask + psutil)零侵入纳管 4 个独立工具:拼豆店座位计时收银看板、B站多视频分P学习打卡、局域网视频流媒体服务(HTTP Range 断点续播)、多端在线答题系统(Vue 3 + 微信小程序)。40+ REST 接口、19 张 SQLite 表、一键启停 + 端口/HTTP/进程三重状态检测。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages