mirror of
https://github.com/nianzhibai/91.git
synced 2026-06-15 08:45:41 +08:00
feat(scanner): published_at 统一用入库时刻,不再取网盘 mtime
- scanner.go 把 PublishedAt 从 orDefault(e.ModTime, now) 改成 now - 删除已废弃的 orDefault 工具函数 - README 把'发布时间'语义点透为'即视频入库时刻' - plan 追加 14.2.10 记录这次决策 历史数据不回填;新扫的视频起按新规则。
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
## 当前功能
|
||||
|
||||
- 前台需要登录后访问,支持首页、列表页、搜索、分类/标签筛选、分页、详情播放和相关推荐。
|
||||
- 首页"随机推荐"从最近 200 个视频里随机抽 12 个展示;"最新视频"按发布时间倒序展示最新 12 个。从详情页返回首页时不会刷新,保持之前看到的内容。手机端首页每个板块显示 8 个视频。
|
||||
- 首页"随机推荐"从最近 200 个视频里随机抽 12 个展示;"最新视频"按发布时间(即视频入库时刻)倒序展示最新 12 个。从详情页返回首页时不会刷新,保持之前看到的内容。手机端首页每个板块显示 8 个视频。
|
||||
- 列表页默认每页 24 个视频;选择具体标签筛选时每页显示 12 个。电脑端每行 4 个卡片,手机端每行 2 个。列表页会记住筛选、分页和滚动位置。
|
||||
- 视频卡片支持封面、画质标签、时长、移动端点按预览。
|
||||
- 播放页显示来源网盘类型,提供点赞、点踩、标签编辑和 **不再展示**。不再展示是全局隐藏:写入数据库后,该视频不会再出现在首页、列表、相关推荐中,详情接口也会返回 404。
|
||||
|
||||
@@ -173,7 +173,7 @@ func (s *Scanner) walk(ctx context.Context, dirID, dirName string, depth int, st
|
||||
ThumbnailURL: e.ThumbnailURL,
|
||||
PreviewStatus: "pending",
|
||||
Category: dirName,
|
||||
PublishedAt: orDefault(e.ModTime, now),
|
||||
PublishedAt: now,
|
||||
CreatedAt: now,
|
||||
UpdatedAt: now,
|
||||
}
|
||||
@@ -256,13 +256,6 @@ func (s *Scanner) backfillDuplicateThumbnail(ctx context.Context, canonical *cat
|
||||
_ = s.Catalog.UpdateVideoMeta(ctx, canonical.ID, catalog.VideoMetaPatch{ThumbnailURL: thumbnailURL})
|
||||
}
|
||||
|
||||
func orDefault(t time.Time, d time.Time) time.Time {
|
||||
if t.IsZero() {
|
||||
return d
|
||||
}
|
||||
return t
|
||||
}
|
||||
|
||||
func sameTags(a, b []string) bool {
|
||||
if len(a) != len(b) {
|
||||
return false
|
||||
|
||||
@@ -1261,6 +1261,14 @@ src/
|
||||
- 代码位置:`src/styles/tokens.css`。
|
||||
- 原因:实现复杂布局需要统一的间距和圆角尺度。
|
||||
|
||||
#### 14.2.10 published_at 一律用入库时刻,不取网盘 mtime(2026-05-23)
|
||||
|
||||
- plan 未明确 `published_at` 的取值规则。
|
||||
- 早期实现:通用 scanner 取 `e.ModTime`(115/夸克/PikPak/沃盘/OneDrive 都是网盘端文件 mtime),spider91 用爬取时刻。结果:早期上传到网盘的视频 mtime 很老,扫到后被 spider91 当下时刻的视频压在首页"最新视频"之外,体验上"凌晨明明扫到了 115 新视频却看不到"。
|
||||
- 当前实现:所有 driver(含 spider91 / 通用 scanner / 手动上传)`PublishedAt = now`,等于 `CreatedAt`。`scanner.go` 不再读 `e.ModTime`,相应的 `orDefault` 工具函数也删掉。
|
||||
- 历史数据保持不变(不回填);此后扫到的新视频按新规则。
|
||||
- 代码位置:`backend/internal/scanner/scanner.go`。
|
||||
|
||||
### 14.3 mock 数据的临时代用
|
||||
|
||||
以下内容仅在 mock 阶段成立,接真实后端时需要一并替换。
|
||||
|
||||
Reference in New Issue
Block a user