feat(search): align quick-filter facets with MP (SEARCH-4)
Add audioCodec, subtitle, dub, feature, year, category, size and seeders facets with disjunctive counts; parser records dub languages (audioLangs). Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
c3b25be676
commit
d9cf8f1c3a
10 files changed
+409
-5
No files matched your search
@@ -12,7 +12,10 @@ export type FacetCount = z.infer<typeof FacetCount>;
|
||||
* 快速筛选参数 qf:`维度:值,值;维度:值`,值经 encodeURIComponent。
|
||||
* 维度:resolution(2160p/1080p/720p/other)、videoCodec(H.265/H.264/AV1/other)、
|
||||
* releaseType(disc/remux/encode/webdl/hdtv/other)、site(站点 ID)、promotion(free/2x/50%/other/none)、
|
||||
* hdr(DV/HDR10/HDR10+/other/SDR)、hr(yes/no/unknown)、releaseGroup(制作组名,不分大小写)、season(季号)、episode(集号 / pack 整季)。
|
||||
* hdr(DV/HDR10/HDR10+/other/SDR)、hr(yes/no/unknown)、releaseGroup(制作组名,不分大小写)、season(季号)、episode(集号 / pack 整季);
|
||||
* SEARCH-4 起:audioCodec(Atmos/TrueHD/DTS:X/DTS-HD/DTS/DDP/DD/AAC/FLAC/LPCM/other/unknown)、
|
||||
* subtitle(zh/zh-Hans/zh-Hant/en/ja/ko/unknown)、dub(cmn/yue/en/unknown)、feature(10bit/hfr/cut)、
|
||||
* year(年份)、category(站点分类名)、size(lt1/1-5/5-10/10-20/20-50/50+/unknown,GiB)、seeders(0/1-9/10-49/50+/unknown)。
|
||||
*/
|
||||
export const QuickFilterParam = z.string().max(4000).optional();
|
||||
|
||||
@@ -31,5 +34,19 @@ export const ReleaseQuickFacets = z.object({
|
||||
/** 没有剧集资源时为空 */
|
||||
season: z.array(FacetCount),
|
||||
episode: z.array(FacetCount),
|
||||
/** 音频编码(一条可属于多个;没写的归「未标注」) */
|
||||
audioCodec: z.array(FacetCount),
|
||||
/** 字幕:任何中文字幕都算 zh,简 / 繁另列 */
|
||||
subtitle: z.array(FacetCount),
|
||||
/** 配音:国语 / 粤语(MP 的 CNVOI / HKVOI) */
|
||||
dub: z.array(FacetCount),
|
||||
/** 特性:10bit / 50 帧以上 / 特别剪辑版;没有的不计入任何档 */
|
||||
feature: z.array(FacetCount),
|
||||
/** 年份,新的在前 */
|
||||
year: z.array(FacetCount),
|
||||
/** 站点分类名,计数最多的前 20 个 + 已选的 */
|
||||
category: z.array(FacetCount),
|
||||
size: z.array(FacetCount),
|
||||
seeders: z.array(FacetCount),
|
||||
});
|
||||
export type ReleaseQuickFacets = z.infer<typeof ReleaseQuickFacets>;
|
||||
@@ -79,6 +79,16 @@ export const SearchReleaseParsed = z.object({
|
||||
videoCodec: z.string().nullable(),
|
||||
hdr: z.array(z.string()),
|
||||
releaseGroup: z.string().nullable(),
|
||||
/** 音轨(`TrueHD`、`Atmos 7.1`…,SEARCH-4 快速筛选用);空 = 标题没写 */
|
||||
audio: z.array(z.string()).optional(),
|
||||
/** 字幕语言 zh / zh-Hans / zh-Hant / en / ja / ko;null = 标题没写 */
|
||||
subtitles: z.array(z.string()).nullable().optional(),
|
||||
/** 配音语言 cmn 国语 / yue 粤语 / en 英语;null = 标题没写 */
|
||||
audioLangs: z.array(z.string()).nullable().optional(),
|
||||
bitDepth: z.number().int().nullable().optional(),
|
||||
fps: z.number().nullable().optional(),
|
||||
/** 剪辑版(加长版、导演剪辑版…) */
|
||||
cut: z.string().nullable().optional(),
|
||||
});
|
||||
export type SearchReleaseParsed = z.infer<typeof SearchReleaseParsed>;
|
||||
|
||||
|
||||
Reference in new issue
Block a user