feat(sites): structure release detail pages and rework the detail drawer (DETAIL-1)
Adapters (pure functions + tests): - detail-description: strip HTML/BBCode residue, drop site template blocks and ad/signature lines (configurable rules), parse PT info blocks (◎ / 【】 / 『』 / 「键:」) into infoBlock and body paragraphs - mediainfo: MediaInfo and BDInfo (quick summary + full report) into a summary of container/duration/bitrate/size, video (HDR/DV), audio and subtitle tracks - file-tree: file list into a flattened directory tree with sizes and main/sample/subtitle/extra roles - formatDetailPage combines them; the server computes it when reading the cached detail page, so existing caches benefit without a refetch Contracts: SiteReleasePage gains infoBlock, paragraphs, media, fileTree. Web: drawer now reads top-down: meta row (promo/H&R, size, peers, upload time, IMDb/TMDB/豆瓣 tags) → 资料 → 简介 (collapsible) → 技术规格 (raw folded) → 截图 grid with keyboard lightbox → 文件 tree; inventory overlay moved into the fixed footer next to 下载. Fixtures: 6 desensitized samples from the local cache (site.detail and RSS descriptions) plus synthetic multi-track MediaInfo, BDInfo, bracket blocks and directory file lists. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
c846e91cc4
commit
9be9813021
16 files changed
+1992
-175
No files matched your search
@@ -16,12 +16,23 @@ export {
|
||||
SpiderFilterSchema,
|
||||
} from "./definitions/index.ts";
|
||||
export type { SiteAdapterDeps } from "./deps.ts";
|
||||
export {
|
||||
cleanDescription,
|
||||
DEFAULT_DESCRIPTION_RULES,
|
||||
type DescriptionRules,
|
||||
type DetailInfoItem,
|
||||
type StructuredDescription,
|
||||
stripMarkup,
|
||||
structureDescription,
|
||||
} from "./detail-description.ts";
|
||||
export { type FormattedDetailPage, formatDetailPage } from "./detail-format.ts";
|
||||
export {
|
||||
type FeedMediaType,
|
||||
normalizeSiteFeedItem,
|
||||
type SiteFeedItemFields,
|
||||
siteCategoryMediaType,
|
||||
} from "./feed-item.ts";
|
||||
export { buildFileTree, type FileRole, type FileTreeRow } from "./file-tree.ts";
|
||||
export {
|
||||
classifyLoginError,
|
||||
loginFailureText,
|
||||
@@ -33,6 +44,14 @@ export {
|
||||
type SiteLoginFailure,
|
||||
totpCode,
|
||||
} from "./login/nexusphp.ts";
|
||||
export {
|
||||
type MediaAudioTrack,
|
||||
type MediaGeneral,
|
||||
type MediaSummary,
|
||||
type MediaTextTrack,
|
||||
type MediaVideoTrack,
|
||||
parseMediaSummary,
|
||||
} from "./mediainfo.ts";
|
||||
export { createMteamAdapter, mteamTorrentToRelease } from "./mteam/adapter.ts";
|
||||
export { type MteamApiPath, mteamPost } from "./mteam/client.ts";
|
||||
export { type MteamDefinition, mteamApiBase, mteamDefinition } from "./mteam/definition.ts";
|
||||
|
||||
Reference in new issue
Block a user