尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Jackett 评分筛选:三步锁定高分资源

Jackett 评分筛选:三步锁定高分资源 Jackett 评分筛选三步锁定高分资源在 BeyondHD 里搜奥本海默返回 40 多条结果时你很难一眼看出哪条的评分够高。Jackett 把这类评分筛选放在 BeyondHD 的 API 对接层min_imdb、min_tmdb、min_bhd 等参数声明在 BHDParams 中由请求生成器拼成 JSON 发给 tracker。这里讲清评分筛选的实现、传参和扩展方式做完后你可用一条 Torznab 请求锁定高分资源。快速上手在 Add indexer 页面添加并配置BeyondHD (API)填入两个 32 位的 API Key 与 RSS Key。原因保存时 BeyondHDAPI.cs 第 89–104 行会逐项校验这两个 key 的长度缺一即保存失败。用 Torznab 请求按 IMDB ID 搜索该索引器。原因请求生成器检测到 IsImdbQuery 后会附加 imdb_id 参数第 194–197 行tracker 会返回该片全部版本。在请求末尾加cachefalse。原因Jackett 内部缓存默认 TTL 为 2100 秒见 README.md 第 1062–1063 行加该参数才强制向 tracker 发起新请求。以下代码来自 README.md 第 1115–1133 行的查询结构示例curl http://127.0.0.1:9117/api/v2.0/indexers/beyond-hd-api/results/torznab/api?apikeyYOUR_API_KEYtmovieimdbIDtt1940499cachefalse预期效果返回的 Torznab XML 中有多条item每条带该片的 title、Seeders、Size。到这里你已经跑通请求 → tracker → 解析 → XML的完整链路评分参数将走同一条链路。底层机制拆解入口模块是 BeyondHDAPI.cs 中的 BeyondHDAPI 类第 20–126 行它继承 IndexerBase通过 GetRequestGenerator 与 GetParser第 75–83 行返回两个组件前者负责拼请求后者负责解析响应。核心数据流为 TorznabQuery → GetSearchRequests → JSON POST → BHDResponse → ParseResponse → ReleaseInfo。评分相关的 API 参数全部声明在 BHDParams 类第 384–442 行中。以下代码来自 BeyondHDAPI.cs 第 424–433 行internal const string min_bhd min_bhd; // int - The minimum BHD rating. internal const string vote_bhd vote_bhd; // int - The minimum number of BHD votes. internal const string min_imdb min_imdb; // int - The minimum IMDb rating. internal const string vote_imdb vote_imdb; // int - The minimum number of IMDb votes. internal const string min_tmdb min_tmdb; // int - The minimum TMDb rating. internal const string vote_tmdb vote_tmdb; // int - The minimum number of TDMb votes. internal const string min_year min_year; // int - The earliest release year. internal const string max_year max_year; // int - The latest release year. internal const string sort sort; // (bumped_at, created_at, seeders, imdb_rating, tmdb_rating, bhd_rating 等) internal const string order order; // string - (asc, desc). Default is descGetSearchRequests第 141–213 行把参数组装成字典。以下代码来自 BeyondHDAPI.cs 第 155–165 行var postData new Dictionarystring, object { { BHDParams.action, search }, { BHDParams.rsskey, _configData.RSSKey.Value }, { BHDParams.search, searchTerm.Trim() }, }; if (_configData.FilterFreeleech.Value) { postData.Add(BHDParams.freeleech, 1); }注意当前版本的生成器只转发上面这类固定参数freeleech、limited、refund、rewind、types、categories、imdb_id、tmdb_id、page。min_imdb、sort 等参数虽已声明在 BHDParams 中但 Jackett 目前不会从配置页转发它们需要按进阶与扩展一节自行补配置项或像下面实战场景那样直接调 API 传入。请求最终由 GetPagedRequests第 215–233 行发出URL 为第 133 行定义的https://beyond-hd.me/api/torrents/{apiKey}方法为 POSTbody 是 postData 的 JSON 序列化结果tracker 返回 BHDResponse。其中的 BHDResult 带三个评分字段第 490–492 行bhd_rating、tmdb_rating、imdb_rating。ParseResponse第 249–342 行把响应逐条转成 ReleaseInfo但评分值并不写入结果模型——ReleaseInfo 只有 Imdb 与 TMDb 的 ID 字段见 ReleaseInfo.cs 第 23–24 行。也就是说评分筛选在 tracker 侧完成Jackett 负责组装请求和透传结果。实战场景单一评分维度锁定影片最佳版本适用条件你想下载某一部具体影片并挑出社区评分最高的版本。直接调用 BeyondHD APImin_imdb 设阈值sortimdb_rating 把最高分排到最前。以下请求的参数名对应 BeyondHDAPI.cs 第 386–433 行的声明curl -X POST https://beyond-hd.me/api/torrents/YOUR_API_KEY \ -H Content-Type: application/json \ -d { action: search, rsskey: YOUR_RSS_KEY, imdb_id: 1940499, min_imdb: 8, sort: imdb_rating, order: desc }返回的 Results 数组只保留 IMDb 评分 8 分及以上的版本第一条即最高分版本。单一维度够选出最佳版本但老片往往还混着低质重压缩版本这时需要投票数与年份做组合筛选。多参数组合评分筛选适用条件影片年代较久、版本多、怀疑存在刷分或重压资源。评分阈值 投票数阈值 年份范围组合比单一维度更稳vote_imdb 参数就是为此设计的投票数过少的评分参考意义有限。以下请求组合了 4 个评分相关参数参数名与 BeyondHDAPI.cs 第 424–431 行一一对应curl -X POST https://beyond-hd.me/api/torrents/YOUR_API_KEY \ -H Content-Type: application/json \ -d { action: search, rsskey: YOUR_RSS_KEY, imdb_id: 1940499, min_imdb: 8, vote_imdb: 1000, min_bhd: 7, min_year: 2015, sort: bhd_rating, order: desc }组合含义IMDb 评分 8 分以上且至少 1000 票、BHD 社区评分 7 分以上、2015 年之后发行最后按社区评分降序。结果集比单维度小但每一条都更可信。BeyondHD 的筛选只在该站点生效若你需要跨索引器统一评分口径就要先聚合结果再本地过滤。跨索引器聚合与本地二次过滤适用条件目标影片分散在多个索引器而 Jackett 的结果模型并不统一携带评分字段。做法是用 Jackett 的 all 端点聚合再用模型里确定存在的 Seeders、Size 等字段做二次筛选。以下代码按 README.md 第 1068–1076 行的聚合查询示例组装curl http://127.0.0.1:9117/api/v2.0/indexers/all/results/torznab/api?apikeyYOUR_API_KEYtsearchqOppenheimercachefalse -o results.xml python3 -c import xml.etree.ElementTree as ET for item in ET.parse(results.xml).getroot().iter(item): seeders int(item.findtext(seeders) or 0) size int(item.findtext(size) or 0) if seeders 10 and size 50 * 1024**3: print(item.findtext(title), seeders, size) 图中列表展示了手动搜索聚合多个索引器的结果每行带 Tracker、Size 与 seeder/leecher 数据这些字段正是本地二次过滤时可以直接使用的。进阶与扩展若想让 min_imdb 出现在索引器配置页上可扩展的入口在两个文件在 ConfigurationDataBeyondHDApi.cs第 8–53 行增加配置项再在 BeyondHDAPI.cs 的 GetSearchRequests第 155–192 行中把配置值转发进 postData。改动范围仅这两处解析层不需要动。以下代码是基于 ConfigurationDataBeyondHDApi.cs 第 20–52 行构造函数的最小改动示例// ConfigurationDataBeyondHDApi 新增字段 public StringConfigurationItem MinImdb { get; private set; } // 构造函数中追加 MinImdb new StringConfigurationItem(Min IMDb rating (empty means no filter)); // BeyondHDAPIRequestGenerator.GetSearchRequests 第 160 行后追加 if (!_configData.MinImdb.Value.IsNullOrWhiteSpace()) { postData.Add(BHDParams.min_imdb, int.Parse(_configData.MinImdb.Value)); }新配置项会自动出现在索引器配置页保存后随 config.json 序列化与其他配置项一起加载。如果改动后行为异常优先检查发往 tracker 的请求体里是否真的带上了 min_imdb 字段这是组装逻辑与 tracker 之间的分界点。避坑与快速参考为什么 Jackett 的搜索结果里看不到评分值ReleaseInfo 没有评分字段ParseResponse 也未把 BHDResult 的三个评分映射进结果模型。筛选在 tracker 侧完成Jackett 只返回过滤后的结果。若要在界面显示评分需给 ReleaseInfo 增加字段并扩展第 287–302 行的映射逻辑。为什么同一条查询的结果 35 分钟不更新Jackett 内部缓存默认开启TTL 2100 秒、每索引器最多缓存 1000 条。缓存命中时不会向 tracker 发新请求。在请求中追加cachefalse可强制取新数据或在服务器设置里调低 TTL。为什么请求返回 Indexer ErrorBHDResponse.StatusCode 为 0 时解析器直接抛异常并附带 tracker 的 StatusMessage第 268–271 行。常见原因是 key 长度不足 32 位或参数名拼写错误先打印请求体对照 BHDParams 的声明逐项核对。为什么设置 min_imdb 后结果为空min_imdb 是阈值而非目标分阈值越高结果集越小设 9 与设 7 的差异会很大。先用 sortimdb_ratingorderdesc 观察该片的评分分布再决定阈值。参数名含义默认值推荐范围min_imdbIMDb 最低评分阈值不传即不过滤7–9vote_imdbIMDb 最少投票数不传即不过滤≥1000min_tmdbTMDb 最低评分阈值不传即不过滤7–8min_bhdBHD 社区最低评分阈值不传即不过滤7–9vote_bhdBHD 最少投票数不传即不过滤≥50min_year / max_year限制发行年份区间无默认3–5 年窗口sort结果排序字段bumped_atimdb_rating / bhd_ratingorder排序方向descdesccache是否读取 Jackett 缓存true需实时时设 false上面演示了从 Torznab 请求与直接 API 调用两条路径向 BeyondHD 传入评分参数筛选本身发生在 tracker 侧核心在于 BHDParams 与请求生成器Jackett 负责组装与透传。若你想在结果列表里直接看到评分数值下一步是给 ReleaseInfo.cs 增加评分字段并扩展 BeyondHDAPI.cs 第 287–302 行的映射。官方文档README.md核心源码src/Jackett.Common/Indexers/Definitions/配置模型src/Jackett.Common/Models/IndexerConfig/贡献指南CONTRIBUTING.md创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表