Merge branch 'hh2'

# Conflicts:
#	apps/server/src/modules/browser/service.ts
#	apps/web/app/components/browser/desktop-view.tsx
#	apps/web/app/components/browser/site-origin-view.tsx
#	packages/contracts/src/browser.ts
This commit is contained in:
root committed 2026-09-29 17:43:00 +08:00
commit f41cd96fee
33 files changed
+1919 -302

No files matched your search

@@ -108,3 +108,49 @@ export const HHANCLUB_DETAIL_PAGE_FULL = `<!DOCTYPE html><html><head><title>HHCL
<div class="font-bold leading-6">文件列表</div>
<div class="font-bold leading-6"><ul><li>Example.Show.S01E01.mkv (1.04 GB)</li><li>Example.Show.S01E02.mkv (1.02 GB)</li></ul></div>
</div></body></html>`;
/**
* HH-2:按 2026-09-29 真实详情页的解析诊断(`page.probe.labels`)重建的最小片段。字段标签名称与顺序来自真实页面
* (下载 / 标题 / 副标题 / 标签 / 基本信息 / 字幕 / mediainfo / 海报 / 豆瓣 / 截图 / 种子文件 / 同伴 …,豆瓣块里是
* span.font-bold 小标签 片名 / 年代 / 类别 / 导演 …);没有 #kdescr 简介容器;MediaInfo 头部与 IMDB / TMDB 两行
* 摘自真实缓存(ID 已替换)。标签与值的 DOM 嵌套是按标题 / 副标题已验证的「标签 div + 相邻值 div」推定的。
* 文件清单不在页面上,点「查看列表」才 AJAX 取 viewfilelist.php(见 HHANCLUB_FILELIST_FRAGMENT)。
*/
export const HHANCLUB_DETAIL_PAGE_2026 = `<!DOCTYPE html><html><head><title>HHCLUB :: 种子详情</title></head><body>
<div id="user-info-panel"><a href="userdetails.php?id=7" class="VIP_Name">bob</a> <a href="logout.php">退出</a></div>
<div class="grid grid-cols-[80px_1fr]">
<div class="font-bold leading-6">下载</div><div class="font-bold leading-6"><a href="download.php?id=91003">Example.Show.S01E18.torrent</a></div>
<div class="font-bold leading-6">标题</div><div class="font-bold leading-6">Example Show S01 2026 2160p YK WEB-DL H.265 DV HQ AAC2.0-HHWEB</div>
<div class="font-bold leading-6">副标题</div><div class="font-bold leading-6">示例剧集 | 第18-24集 | 4K 高码 杜比视界</div>
<div class="font-bold leading-6">标签</div><div class="font-bold leading-6"><span>官方</span><span>国语</span><span>中字</span><span>杜比视界</span></div>
<div class="font-bold leading-6">基本信息</div>
<div class="font-bold leading-6">
<span class="font-bold">大小:</span><span>33.62 GB</span>
<span class="font-bold">类型:</span><span>电视剧</span>
<span class="font-bold">发布者:</span><span>匿名</span>
<span class="font-bold">发布时间:</span><span>2026-09-29 16:42:57</span>
</div>
<div class="font-bold leading-6">mediainfo</div>
<div class="font-bold leading-6"><div class="nexus-media-info-raw">文件名:Example.Show.S01E18.2026.2160p.YK.WEB-DL.H.265.DV.HQ.AAC2.0-HHWEB.mkv<br>体 积: 5.04 GiB<br><br>General<br>Unique ID : 1580976599<br>Complete name : Example.Show.S01E18.mkv<br>Format : Matroska<br>File size : 5.04 GiB<br>Duration : 43 min 55 s<br>IMDB : tt45950001<br>TMDB : tv/290001<br><br>Video<br>ID : 1<br>Format : HEVC</div></div>
<div class="font-bold leading-6">海报</div><div class="font-bold leading-6"><img src="https://proxy-cover.hhanclub.net/douban/p0000000001.jpg" alt="poster"></div>
<div class="font-bold leading-6">豆瓣</div>
<div class="font-bold leading-6">
<div><span class="font-bold">片名</span><span>示例剧集</span></div>
<div><span class="font-bold">年代</span><span>2026</span></div>
<div><span class="font-bold">类别</span><span>爱情 / 古装</span></div>
<div><span class="font-bold">导演</span><span>某导演</span></div>
<div>一段剧情简介……</div>
<a href="https://movie.douban.com/subject/36000002/">豆瓣</a>
</div>
<div class="font-bold leading-6">截图</div>
<div class="font-bold leading-6"><img src="https://pic.hhanclub.net/img/2026/09/29/shot1.png"><img data-src="https://img3.pixhost.cc/images/1/shot2.jpg" src="pic/trans.gif"></div>
<div class="font-bold leading-6">种子文件</div><div class="font-bold leading-6"><a href="javascript: viewfilelist(91003)">[查看列表]</a></div>
<div class="font-bold leading-6">同伴</div><div class="font-bold leading-6">22个做种者 | 66个下载者</div>
</div></body></html>`;
/** NexusPHP viewfilelist.php 返回的文件表片段(标准结构,文件名 / 大小为示例) */
export const HHANCLUB_FILELIST_FRAGMENT = `<table class="main" border="1" cellspacing="0" cellpadding="5">
<tr><td class="colhead">路径</td><td class="colhead" align="center"><img class="size" src="pic/trans.gif" alt="size"></td></tr>
<tr><td class="rowfollow">Example.Show.S01E18.2026.2160p.mkv</td><td class="rowfollow" align="right">5.04&nbsp;GB</td></tr>
<tr><td class="rowfollow">Example.Show.S01E19.2026.2160p.mkv</td><td class="rowfollow" align="right">4.98&nbsp;GB</td></tr>
</table>`;