Skip to content

feat(pkg/site): 适配 Bibliotik 站点 (#1284) - #1522

Draft
Rhilip wants to merge 1 commit into
pt-plugins:masterfrom
Rhilip:feat/site-bibliotik
Draft

Rhilip wants to merge 1 commit into
pt-plugins:masterfrom
Rhilip:feat/site-bibliotik

Conversation

@Rhilip

@Rhilip Rhilip commented Sep 15, 2026

Copy link
Copy Markdown
Collaborator

Closes #1284

新增 Bibliotik 站点适配。

引擎选型

Bibliotik 是 WhatCD/Gazelle 血统,但站点路由是 REST 风格:/torrents//torrents/<id>/users/<id>/users/<id>/seeding

本仓库的 schemas/Gazelle.tsGazelleJSONAPI.ts 都硬编码了 /torrents.phpuser.php?id=table.torrent_table 等假设,直接复用会全部失效,因此按 AbstractPrivateSite + 自定义类实现。

依据:PT-Plugin-Plus 与 Jackett 两处既有实现均为非 .php 路径,可相互印证。

主要配置(依据以 PT-Plugin-Plus 为主,Jackett 对照)

urls uggcf://ovoyvbgvx.zr/(rot13)
category Applications/Audiobooks/Comics/eBooks/Magazines = 1/3/4/5/7,cat[] 多选
search GET /torrents/,参数 search + orderby + order
rows table#torrents_table > tbody > tr:has(.title)
size 优先 span[data-bytecount],回落文本解析
link a[href*='/download']
noLoginAssert form#loginform
userInfo 首页取 id/name → /users/$id$ 取上传/下载/等级/注册时间

自定义类覆写 getUserInfoResult,遍历 /users/<id>/seeding 分页累加 seeding/seedingSize(最大页从 .pagination ... Last >>page= 解析)。

顺带修掉的一个通用坑

parseWholeTorrentFromRow 会对 time 再跑一次 parseTimeWithZone,而它按 timezoneOffset 重新拼字符串。实测确认:若 <time datetime> 带显式时区(...+00:00Z),在非 UTC 机器上会被二次换算,产生 8 小时偏移。

因此本站 filters 中先剥离时区后缀再交给 parseTime。仓库中 rousipronordicbytesclearjav 等同类 attr: datetime 站点存在相同偏差,可作为后续统一处理项。

校验

  • pnpm checkvue-tsc --noEmit):通过
  • 站点定义静态结构检查:通过(仅 version 一条提示——AbstractPrivateSite 约定为 -1,仓库现状普遍写 1,此处按现状保持站点内一致)
  • prettier:已格式化(pre-commit hook 已执行)

待确认

  • levelRequirements 未定义:PT-Plugin-Plus 与 Jackett 均未提供等级门槛数据,不做猜测。若有站内规则页信息可后续补充。
  • category 的 value→name 映射取自 Jackett caps,建议有账号者实机复核。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

请求适配Bibliotik

1 participant