BilibiliDown项目中的日期条件配置问题解析
痛点场景:B站视频批量下载的文件命名困扰
你是否曾经遇到过这样的问题:从B站收藏夹批量下载了几百个视频,结果所有文件都堆在一个文件夹里,文件名杂乱无章,根本无法快速找到特定时间段收藏或发布的视频?BilibiliDown项目通过强大的日期条件配置功能,完美解决了这一痛点。
日期条件配置的核心机制
1. 时间字段数据结构
BilibiliDown在ClipInfo模型中定义了两个关键的时间字段:
public class ClipInfo {
long favTime; // 收藏时间(毫秒时间戳)
long cTime; // 发布/更新时间(毫秒时间戳)
// ... 其他字段
}
这两个时间戳字段为后续的日期条件判断和格式化提供了数据基础。
2. 配置文件中的日期格式化设置
在config/app.config中,项目提供了灵活的日期格式化配置:
# 收藏时间格式化模式(默认:yyMMdd)
bilibili.name.date.favTime.pattern = yyMMdd
# 发布时间格式化模式(默认:yyMMdd)
bilibili.name.date.cTime.pattern = yyMMdd
3. 文件名生成逻辑
在CmdUtil.java中,日期格式化逻辑如下:
long favTime = clip.getFavTime();
if(favTime > 0) {
SimpleDateFormat ctf = new SimpleDateFormat(Global.favTimeFormat);
paramMap.put("favTime", ctf.format(new Date(favTime)));
}
long cTime = clip.getcTime();
if(cTime > 0) {
SimpleDateFormat ctf = new SimpleDateFormat(Global.cTimeFormat);
paramMap.put("cTime", ctf.format(new Date(cTime)));
}
日期条件配置的常见问题与解决方案
问题1:日期格式配置错误
症状:日期显示格式不符合预期,或者出现格式化异常。
解决方案:
- 使用标准的Java SimpleDateFormat模式
- 常见格式示例:
yyyy-MM-dd→ 2025-09-04yyMMdd→ 250904yyyyMMdd_HHmmss→ 20250904_132455
问题2:时间戳数据缺失
症状:某些视频没有收藏时间或发布时间信息。
解决方案:
- 在文件名格式中使用条件判断语法
- 示例配置:
bilibili.name.format = (:cTime cTime-)avTitle-pAv-qn
问题3:时区处理不一致
症状:下载的文件名日期与B站显示日期不一致。
解决方案:
- 确保系统时区设置正确
- 时间戳基于UTC时间,格式化时会转换为本地时区
高级日期条件配置技巧
1. 条件判断语法
BilibiliDown支持强大的条件判断语法:
# 当cTime存在时,在文件名中包含日期
bilibili.name.format = (:cTime cTime-)avTitle-pAv-qn
# 当listName存在时,包含收藏夹名称
bilibili.name.format = (:listName [listName]-)avTitle-(:cTime cTime-)pAv-qn
2. 多级目录结构
利用日期信息创建有组织的目录结构:
bilibili.name.format = download/(:cTime yyyy/MM/)avTitle-pAv-qn
这样会自动按年月创建子目录,便于管理。
3. 组合条件配置
bilibili.name.format =
(:listName listName/)
(:cTime yyyy-MM-dd )
avTitle
-pAv2
-qn
(avId)
实际应用场景示例
场景1:按收藏时间整理视频
# 配置:按收藏年月分类
bilibili.name.format = favorites/(:favTime yyyy-MM/)avTitle-pAv-qn
效果:所有收藏的视频会自动按年月分类存储。
场景2:区分新旧内容
# 配置:2024年后的视频特殊标记
bilibili.name.format =
(:cTime (cTime>1640995200000) [NEW]-)
avTitle-pAv-qn
场景3:智能文件名生成
# 配置:优先使用发布时间,没有则使用收藏时间
bilibili.name.format =
(:cTime cTime-)
(:!cTime (:favTime favTime-))
avTitle-pAv-qn
配置最佳实践
1. 备份原始配置
修改前备份app.config文件,避免配置错误导致程序异常。
2. 渐进式调整
先使用简单配置测试,确认无误后再逐步添加复杂条件。
3. 正则表达式转义
日期格式中的特殊字符(如/、:)在文件名中会自动转义为安全字符。
4. 性能考虑
复杂的条件判断可能会轻微影响文件名生成性能,在批量下载时需注意。
故障排除指南
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 日期显示为null | 时间戳为0 | 检查视频源是否提供时间信息 |
| 格式化异常 | 格式模式错误 | 使用正确的SimpleDateFormat模式 |
| 条件判断失效 | 语法错误 | 检查括号匹配和空格使用 |
总结
BilibiliDown的日期条件配置功能为B站视频下载提供了强大的文件管理能力。通过合理配置,用户可以:
- 按时间整理:自动按年月日分类存储视频
- 智能命名:根据时间条件动态生成文件名
- 条件过滤:只对符合时间条件的视频应用特定命名规则
- 灵活组合:支持多重条件判断和格式化选项
掌握这些配置技巧,你将能够轻松管理成千上万的B站视频下载文件,让每一次批量下载都井井有条。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



