ad97fd3da5
- .gitignore 新增忽略 .idea/、videos/、*.tar.gz、*.csproj.user、db 运行时文件 - 根目录 15 个中文运维 md 归档到 docs/ - 删除无部署脚本引用的 Dockerfile 与 Dockerfile-arm(保留 Dockerfile.prod) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
7.1 KiB
7.1 KiB
下载配置功能说明
📋 功能概述
为了避免自动下载占用过多存储空间,系统现在支持可配置的下载策略。默认情况下,系统不会自动下载视频,只会同步视频信息到数据库。
🎯 功能特点
- 默认不下载:未配置的用户不会自动下载视频,避免占用存储空间
- 按时间范围配置:可以设置只下载指定天数内的视频(例如:只下载最近30天)
- 按作者配置:支持作者白名单和黑名单
- 按类型配置:可以分别控制是否下载"喜欢的视频"和"收藏的视频"
⚙️ 配置选项
1. 启用自动下载
- 开关:启用/禁用自动下载功能
- 默认值:关闭(
false) - 说明:关闭后,系统只同步视频信息到数据库,不会下载视频文件
2. 下载时间范围
- 类型:数字(天数)
- 默认值:0(不限制)
- 说明:
0:不限制时间,下载所有符合条件的视频30:只下载最近30天的视频90:只下载最近90天的视频- 最大支持 3650 天(10年)
3. 下载类型
- 下载喜欢的视频:是否下载"喜欢的视频"(
ViedoType = "1") - 下载收藏的视频:是否下载"收藏的视频"(
ViedoType = "2") - 默认值:都关闭(
false)
4. 作者白名单
- 类型:多行文本(每行一个作者)
- 格式:每行一个作者名称或作者ID
- 说明:
- 配置后,只有白名单中的作者视频才会被下载
- 留空则不限制
- 支持作者名称或作者ID(
AuthorId) - 示例:
作者1 作者2 MS4wLjABAAAA...
5. 作者黑名单
- 类型:多行文本(每行一个作者)
- 格式:每行一个作者名称或作者ID
- 说明:
- 配置后,黑名单中的作者视频不会被下载
- 留空则不限制
- 支持作者名称或作者ID(
AuthorId) - 示例:
作者1 作者2 MS4wLjABAAAA...
🔍 判断逻辑
系统按照以下顺序判断是否应该下载视频:
-
检查是否启用自动下载
- 如果未启用,直接跳过下载
-
检查视频类型
- 如果视频类型为"喜欢"(
ViedoType = "1"),检查DownloadFavorite是否为true - 如果视频类型为"收藏"(
ViedoType = "2"),检查DownloadCollect是否为true - 如果对应类型未启用,跳过下载
- 如果视频类型为"喜欢"(
-
检查时间范围
- 如果配置了
DownloadDaysRange > 0,检查视频创建时间是否在范围内 - 超出时间范围的视频跳过下载
- 如果配置了
-
检查作者白名单
- 如果配置了白名单,检查作者是否在白名单中
- 不在白名单中的视频跳过下载
-
检查作者黑名单
- 如果配置了黑名单,检查作者是否在黑名单中
- 在黑名单中的视频跳过下载
-
所有检查通过,开始下载
📝 配置示例
示例 1:只下载最近30天的喜欢视频
启用自动下载:✅ 开启
下载时间范围:30 天
下载喜欢的视频:✅ 开启
下载收藏的视频:❌ 关闭
作者白名单:(留空)
作者黑名单:(留空)
示例 2:只下载指定作者的视频
启用自动下载:✅ 开启
下载时间范围:0(不限制)
下载喜欢的视频:✅ 开启
下载收藏的视频:✅ 开启
作者白名单:
作者1
作者2
MS4wLjABAAAA...
作者黑名单:(留空)
示例 3:排除某些作者,下载其他所有视频
启用自动下载:✅ 开启
下载时间范围:0(不限制)
下载喜欢的视频:✅ 开启
下载收藏的视频:✅ 开启
作者白名单:(留空)
作者黑名单:
不想下载的作者1
不想下载的作者2
示例 4:不自动下载(默认)
启用自动下载:❌ 关闭
(其他选项无效)
🚀 使用方法
- 登录系统,进入"设置"页面
- **点击"修改配置"**按钮
- 配置下载选项:
- 开启"启用自动下载"
- 根据需要设置时间范围、类型、作者白名单/黑名单
- **点击"确认"**保存配置
- 系统会在下次同步时应用新配置
📊 数据库变更
AppConfig 表新增字段
-- 以下字段已添加到 dy_app_config 表
EnableAutoDownload BOOLEAN DEFAULT 0 -- 是否启用自动下载
DownloadDaysRange INTEGER DEFAULT 0 -- 下载时间范围(天数)
AuthorWhitelist TEXT -- 作者白名单(JSON数组)
AuthorBlacklist TEXT -- 作者黑名单(JSON数组)
DownloadFavorite BOOLEAN DEFAULT 0 -- 是否下载喜欢的视频
DownloadCollect BOOLEAN DEFAULT 0 -- 是否下载收藏的视频
🔧 技术实现
后端变更
- 模型扩展:
AppConfig模型新增下载配置字段 - 服务新增:
DownloadConfigService服务实现下载判断逻辑 - Job 修改:
DouYinFavoritSyncJob:在下载前检查配置DouYinCollectSyncJob:在下载前检查配置
- 服务更新:
CommonService支持保存和读取下载配置
前端变更
- 配置页面:
AppSet.vue新增下载配置界面 - 表单字段:添加下载相关的表单字段
- 数据处理:处理作者白名单/黑名单的 JSON 转换
⚠️ 注意事项
- 默认行为:未配置的用户默认不会下载视频,只会同步视频信息
- 配置优先级:白名单和黑名单同时配置时,黑名单优先级更高
- 时间计算:时间范围基于视频的创建时间(
CreateTime),不是同步时间 - 作者匹配:支持按作者名称或作者ID匹配,不区分大小写
- 配置生效:配置修改后,会在下次同步任务执行时生效
🐛 故障排查
问题:配置了但视频仍然不下载
检查项:
- 确认"启用自动下载"已开启
- 确认对应的视频类型(喜欢/收藏)已开启
- 检查时间范围是否合理(视频是否在范围内)
- 检查作者是否在白名单中(如果配置了白名单)
- 检查作者是否在黑名单中(如果配置了黑名单)
问题:配置了白名单但所有视频都不下载
可能原因:
- 作者名称或ID不匹配
- 白名单格式错误(应该是每行一个)
解决方法:
- 检查作者名称是否完全匹配(包括空格、特殊字符)
- 尝试使用作者ID而不是名称
- 查看日志中的"不符合下载配置"提示
问题:配置了时间范围但旧视频仍然下载
可能原因:
- 时间范围配置未生效
- 视频创建时间解析错误
解决方法:
- 确认配置已保存
- 检查日志中的时间判断逻辑
- 重启服务后重试
📚 相关文件
- 后端模型:
model/AppConfig.cs - 下载服务:
service/DownloadConfigService.cs - 配置服务:
service/CommonService.cs - 喜欢视频Job:
job/DouYinFavoritSyncJob.cs - 收藏视频Job:
job/DouYinCollectSyncJob.cs - 前端配置页:
app/src/pages/set/AppSet.vue - API控制器:
Controllers/ConfigController.cs
最后更新:2024-11-24