可视化展示所有 PT 站点的数据与升级进度,支持趋势图表、升级条件追踪、数据同步。
本项目是一个数据展示工具,不直接连接 PT 站点。 所有用户数据来自 PT-depiler 浏览器扩展的本地存储,仪表盘只负责读取和可视化。
- 站点总览:上传量、下载量、分享率、魔力值、做种数、发布数一览
- 升级进度:每个站点的下一等级升级条件逐项展示,已达标/未达标一目了然
- 历史趋势:上传量、下载量等指标的折线图,支持多站点对比
- 快捷链接:点击站点名称打开站点首页,点击等级打开个人信息页,点击消息数打开消息页
- 消息中心:一键打开所有含未读消息站点的消息页
- 数据同步:一键从 PT-depiler 本地存储获取最新数据
- 纯前端:所有数据本地存储,不上传任何信息
本项目依赖 PT-depiler 浏览器扩展(GitHub)。
PT 站点 → PT-depiler 扩展采集 → 浏览器本地 LevelDB 存储 → 仪表盘读取 → 可视化展示
| 数据类型 | 来源 | 获取方式 |
|---|---|---|
| 用户数据(上传量、下载量、分享率、做种数等) | PT-depiler 浏览器扩展的本地 LevelDB | 提取脚本直接读取扩展数据目录 |
| 站点等级要求(升级条件) | PT-depiler GitHub 仓库 | 提取脚本通过 HTTPS 获取站点定义文件 |
- 仪表盘只显示你在 PT-depiler 中已注册的站点。未在 PT-depiler 中添加的站点不会出现。
- 仪表盘不触发数据采集。数据的新鲜度取决于 PT-depiler 的采集频率。建议在 PT-depiler 设置中开启定时采集。
- 同步前需要关闭浏览器。LevelDB 文件在浏览器运行时被锁定,无法读取。
| 依赖 | 版本 | 说明 |
|---|---|---|
| Node.js | 16+ | 运行服务器和数据提取脚本 |
| PT-depiler | 最新版 | 浏览器扩展,已安装并采集过至少一次数据 |
- Chrome / Edge:从 Chrome Web Store 或 Edge Add-ons 搜索 "PT Depiler" 安装
- Firefox:从 Firefox Add-ons 搜索 "PT Depiler" 安装
- 开发者模式:从 GitHub 克隆仓库,
pnpm install && pnpm run build,加载dist目录
安装 PT-depiler 后,需要先采集数据:
- 在 PT-depiler 设置中添加你的 PT 站点
- 打开各 PT 站点页面,点击 PT-depiler 扩展弹窗中的刷新按钮采集数据
- 或在 PT-depiler 设置中开启定时采集(推荐)
git clone https://github.com/pricky777/pt-dashboard.git
cd pt-dashboardnpm install依赖只有一个包:classic-level(用于读取 LevelDB)。
npm start服务器启动在 http://localhost:8765。
- 关闭浏览器(Chrome/Edge/Brave 等所有基于 Chromium 的浏览器)
- 打开
http://localhost:8765 - 点击页面右上角「同步数据」按钮
- 等待同步完成,页面自动刷新
同步过程中会从 GitHub 下载各站点的等级要求配置,需要网络连接。站点图标也会在此时下载并缓存为 base64 内嵌数据。
npm start打开 http://localhost:8765,点击「同步数据」按钮。服务器会自动:
- 从 PT-depiler 的本地 LevelDB 存储中读取站点数据(需先关闭浏览器)
- 从 GitHub 获取最新的站点等级要求配置
- 下载站点图标并转为 base64 内嵌
- 生成
site-data.json数据文件并刷新页面
npm run extract只运行数据提取脚本,生成 site-data.json,不启动服务器。适用于定时任务或 CI 环境。
如果自动检测失败,可以通过环境变量手动指定 PT-depiler 的数据路径:
Windows (PowerShell):
$env:PTD_DB_PATH="C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data\Default\Local Extension Settings\lakkmchlpfcjbhmknojfhokcnblfclom"
npm run extractmacOS / Linux:
PTD_DB_PATH="$HOME/Library/Application Support/Google/Chrome/Default/Local Extension Settings/lakkmchlpfcjbhmknojfhokcnblfclom" npm run extractPT-depiler 的数据存储在浏览器的 Local Extension Settings 目录下,扩展 ID 因浏览器和安装方式而异。
自动检测:提取脚本会自动扫描以下浏览器的所有 Profile:
- Google Chrome
- Microsoft Edge
- Brave Browser
- Chrome Beta
手动查找:
- 打开浏览器,访问
chrome://extensions/ - 找到 PT Depiler 扩展,记录其 ID(32 位字母字符串)
- 数据路径为:
{浏览器用户数据目录}/{Profile}/Local Extension Settings/{扩展ID}
各浏览器用户数据目录:
| 操作系统 | 浏览器 | 路径 |
|---|---|---|
| Windows | Chrome | C:\Users\{用户名}\AppData\Local\Google\Chrome\User Data |
| Windows | Edge | C:\Users\{用户名}\AppData\Local\Microsoft\Edge\User Data |
| Windows | Brave | C:\Users\{用户名}\AppData\Local\BraveSoftware\Brave-Browser\User Data |
| macOS | Chrome | ~/Library/Application Support/Google/Chrome |
| macOS | Edge | ~/Library/Application Support/Microsoft Edge |
| Linux | Chrome | ~/.config/google-chrome |
| Linux | Brave | ~/.config/BraveSoftware/Brave-Browser |
Profile 名称:Default、Profile 1、Profile 2 等。
pt-dashboard/
├── server.js # 本地服务器(静态文件服务 + 同步 API)
├── extract-data.js # 数据提取脚本(读取 LevelDB + 获取等级要求 + 下载图标)
├── pt-dashboard.html # 主页面
├── assets/
│ ├── dashboard.js # 仪表盘核心逻辑(表格渲染、排序、交互)
│ ├── charts.js # ECharts 图表逻辑(历史趋势)
│ └── style.css # 样式
├── _shared/ # 第三方库(ECharts、字体文件)
├── site-overrides/ # 本地站点配置覆盖(可选)
├── package.json # npm 配置(依赖、脚本命令)
├── .gitignore # Git 忽略规则(site-data.json、node_modules 等)
└── README.md
server.js:Node.js HTTP 服务器,端口 8765。提供静态文件服务和/api/sync同步接口。同步接口调用extract-data.js重新提取数据。extract-data.js:核心数据提取脚本。读取 PT-depiler 的 LevelDB,从userInfokey 中提取每个站点最新有数据的日期的用户数据,从 GitHub 获取站点等级要求,下载站点图标转为 base64,输出site-data.json。site-data.json:生成的数据文件(被.gitignore排除,不上传到 GitHub)。包含所有站点数据、等级要求、时间线、图标。site-overrides/:本地站点配置覆盖目录。如果某个站点的等级要求在 GitHub 上不正确,可以在此目录下创建{siteKey}/config.json文件覆盖。已包含部分站点的覆盖配置。
| 命令 | 说明 |
|---|---|
npm start |
启动服务器(等同于 node server.js) |
npm run extract |
仅运行数据提取脚本(等同于 node extract-data.js) |
- 检测 PT-depiler 数据目录:通过扩展 ID 匹配或
manifest.json中的homepage_url字段识别 PT-depiler 扩展 - 复制 LevelDB 文件:因为浏览器运行时 LevelDB 被锁定,需要先复制到临时目录
- 读取
userInfokey:PT-depiler 按日期存储用户数据({站点: {日期: 数据}}),提取每个站点最新有有效数据的日期 - 处理无效数据:PT-depiler 采集失败时会写入空字符串,提取脚本会跳过这些日期,回退到最后一个有数据的日期
- 获取等级要求:从 PT-depiler 的 GitHub 仓库获取各站点的 TypeScript 定义文件,解析其中的
levelRequirements数组 - 下载图标:从各站点下载 favicon 并转为 base64 data URI,内嵌到 JSON 中避免页面加载时的网络请求
自动检测以下浏览器的 PT-depiler 数据:
- Google Chrome
- Microsoft Edge
- Brave Browser
- Chrome Beta
支持多 Profile(Default、Profile 1-5)。
仪表盘展示的主要字段:
| 字段 | 数据来源 | 说明 |
|---|---|---|
| 上传量 | uploaded |
用户总上传量(字节) |
| 下载量 | downloaded |
用户总下载量(字节) |
| 分享率 | ratio |
上传量 / 下载量 |
| 魔力值 | bonus |
站点魔力/积分 |
| 做种数 | seeding |
当前正在做种的种子数量 |
| 发布数 | uploads |
用户发布过的种子数量 |
| 做种体积 | seedingSize |
当前做种的总体积 |
| 等级 | levelName |
用户当前等级 |
| 消息 | messageCount |
未读消息数 |
| 邀请 | invites |
可用邀请数 |
- 所有用户数据仅在本地处理,不会上传到任何服务器
- 站点等级要求配置从 PT-depiler 的 GitHub 仓库公开获取
- 站点图标在数据提取时下载并转为 base64 内嵌,页面浏览时不发起外部请求
site-data.json包含个人 PT 数据,已被.gitignore排除,不会上传到 GitHub
Q: 同步时提示「未找到数据目录」?
确认以下几点:
- 已安装 PT-depiler 浏览器扩展
- PT-depiler 已采集过 PT 站点数据(在扩展中点击过刷新按钮)
- 浏览器已完全关闭(LevelDB 被锁定时无法读取)
- 如果使用非默认 Profile,请通过环境变量
PTD_DB_PATH手动指定路径
Q: 同步后数据没有更新?
仪表盘只读取 PT-depiler 已采集的数据,不触发采集。请先在 PT-depiler 扩展中刷新数据(点击扩展弹窗中的刷新按钮,或开启定时采集),然后再在仪表盘中点击同步。
Q: 某些站点的上传/下载显示为 0 或等级为空?
PT-depiler 采集失败时会写入空数据。可能原因:
- 站点页面改版导致 PT-depiler 解析失败
- 站点有 Cloudflare 验证,PT-depiler 被拦截
- 登录已过期,需要重新登录
仪表盘会自动回退到最后一个有数据的日期,显示历史数据而非空白。
Q: 升级进度显示不准确?
等级要求来自 PT-depiler 的 GitHub 配置文件,可能与站点实际规则有差异。如果发现不一致,可以:
- 在
site-overrides/{siteKey}/config.json中创建本地覆盖配置 - 或到 PT-depiler 项目反馈
Q: 为什么看不到别人有的站点?
仪表盘只显示你在 PT-depiler 中已注册的站点。请在 PT-depiler 中添加该站点并采集数据后重新同步。
Q: 页面图标加载慢?
图标在数据提取时已下载并转为 base64 内嵌。如果图标仍慢,可能是部分站点图标下载失败(如 CF 盾拦截),页面会回退到直接请求站点 favicon。重新运行同步可重试图标下载。
MIT