Skip to content

Repository files navigation

PT 站点管理仪表盘

可视化展示所有 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 最新版 浏览器扩展,已安装并采集过至少一次数据

PT-depiler 安装

  • Chrome / Edge:从 Chrome Web StoreEdge Add-ons 搜索 "PT Depiler" 安装
  • Firefox:从 Firefox Add-ons 搜索 "PT Depiler" 安装
  • 开发者模式:从 GitHub 克隆仓库,pnpm install && pnpm run build,加载 dist 目录

PT-depiler 数据采集

安装 PT-depiler 后,需要先采集数据:

  1. 在 PT-depiler 设置中添加你的 PT 站点
  2. 打开各 PT 站点页面,点击 PT-depiler 扩展弹窗中的刷新按钮采集数据
  3. 或在 PT-depiler 设置中开启定时采集(推荐)

部署步骤

步骤 1:克隆仓库

git clone https://github.com/pricky777/pt-dashboard.git
cd pt-dashboard

步骤 2:安装依赖

npm install

依赖只有一个包:classic-level(用于读取 LevelDB)。

步骤 3:启动服务器

npm start

服务器启动在 http://localhost:8765

步骤 4:同步数据

  1. 关闭浏览器(Chrome/Edge/Brave 等所有基于 Chromium 的浏览器)
  2. 打开 http://localhost:8765
  3. 点击页面右上角「同步数据」按钮
  4. 等待同步完成,页面自动刷新

同步过程中会从 GitHub 下载各站点的等级要求配置,需要网络连接。站点图标也会在此时下载并缓存为 base64 内嵌数据。


使用方式

方式一:完整模式(推荐)

npm start

打开 http://localhost:8765,点击「同步数据」按钮。服务器会自动:

  1. 从 PT-depiler 的本地 LevelDB 存储中读取站点数据(需先关闭浏览器)
  2. 从 GitHub 获取最新的站点等级要求配置
  3. 下载站点图标并转为 base64 内嵌
  4. 生成 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 extract

macOS / Linux:

PTD_DB_PATH="$HOME/Library/Application Support/Google/Chrome/Default/Local Extension Settings/lakkmchlpfcjbhmknojfhokcnblfclom" npm run extract

如何找到 PT-depiler 的数据路径

PT-depiler 的数据存储在浏览器的 Local Extension Settings 目录下,扩展 ID 因浏览器和安装方式而异。

自动检测:提取脚本会自动扫描以下浏览器的所有 Profile:

  • Google Chrome
  • Microsoft Edge
  • Brave Browser
  • Chrome Beta

手动查找

  1. 打开浏览器,访问 chrome://extensions/
  2. 找到 PT Depiler 扩展,记录其 ID(32 位字母字符串)
  3. 数据路径为:{浏览器用户数据目录}/{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 名称:DefaultProfile 1Profile 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,从 userInfo key 中提取每个站点最新有数据的日期的用户数据,从 GitHub 获取站点等级要求,下载站点图标转为 base64,输出 site-data.json
  • site-data.json:生成的数据文件(被 .gitignore 排除,不上传到 GitHub)。包含所有站点数据、等级要求、时间线、图标。
  • site-overrides/:本地站点配置覆盖目录。如果某个站点的等级要求在 GitHub 上不正确,可以在此目录下创建 {siteKey}/config.json 文件覆盖。已包含部分站点的覆盖配置。

npm 脚本

命令 说明
npm start 启动服务器(等同于 node server.js
npm run extract 仅运行数据提取脚本(等同于 node extract-data.js

技术细节

数据提取流程

  1. 检测 PT-depiler 数据目录:通过扩展 ID 匹配或 manifest.json 中的 homepage_url 字段识别 PT-depiler 扩展
  2. 复制 LevelDB 文件:因为浏览器运行时 LevelDB 被锁定,需要先复制到临时目录
  3. 读取 userInfo key:PT-depiler 按日期存储用户数据({站点: {日期: 数据}}),提取每个站点最新有有效数据的日期
  4. 处理无效数据:PT-depiler 采集失败时会写入空字符串,提取脚本会跳过这些日期,回退到最后一个有数据的日期
  5. 获取等级要求:从 PT-depiler 的 GitHub 仓库获取各站点的 TypeScript 定义文件,解析其中的 levelRequirements 数组
  6. 下载图标:从各站点下载 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: 同步时提示「未找到数据目录」?

确认以下几点:

  1. 已安装 PT-depiler 浏览器扩展
  2. PT-depiler 已采集过 PT 站点数据(在扩展中点击过刷新按钮)
  3. 浏览器已完全关闭(LevelDB 被锁定时无法读取)
  4. 如果使用非默认 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。重新运行同步可重试图标下载。


License

MIT

About

PT 站点管理仪表盘 - 可视化展示 PT 站点数据与升级进度

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages