# MPV Scripts

MPV 播放器的自定义脚本集合，提供自动字幕下载、进度同步等功能。

## ✨ 功能特性

- 🔄 自动下载外部字幕（ASS/SRT）
- 📊 播放进度同步（暂停时上传，播放时恢复）
- ⌨️ 快捷键支持
- 🌐 WebDAV 集成
- ⏱️ 字幕时间偏移调整

## 📁 项目结构

```
mpv-scripts/
├── src/
│   └── mpv-scripts.ts    # 主脚本文件（包含所有功能）
├── dist/
│   └── mpv-scripts.js     # 编译后的输出
├── tests/                 # 测试文件（当前为设置文件）
└── package.json          # 项目配置
```

## 🚀 快速开始

### 安装依赖

```bash
npm install
```

### 编译

```bash
npm run build
```

编译后的文件位于 `dist/mpv-scripts.js`

### 部署到 MPV

将编译后的文件复制到 MPV 配置目录：

```bash
cp dist/mpv-scripts.js ~/.config/mpv/scripts/
```

## ⌨️ 快捷键

- `Ctrl+E` - 构建播放列表
- `Ctrl+S` - 调整窗口为 1/4 大小
- `Ctrl+P` - 上一个字幕
- `Ctrl+N` - 下一个字幕
- `Ctrl+R` - 重置字幕延迟
- `Ctrl+L` - 加载最新播放记录
- `Ctrl+U` - 上传调整后的字幕

## 🔧 配置

脚本使用以下环境变量和配置：

- `AUTHORIZATION`: WebDAV 授权头
- `apiserverBase`: API 服务器地址
- `OS`: 操作系统检测（自动）

## 📊 代码统计

- **总行数**: ~920 行
- **函数数**: 38 个
- **类**: 1 个（FileEntry）
- **接口**: 3 个

## 🐛 Bug 修复

已修复的问题：

1. ✅ 字幕扩展名检测错误（添加缺失的点号）
2. ✅ 空函数实现问题
3. ✅ 未使用的变量
4. ✅ 空值引用问题
5. ✅ ASS 时间转换安全性

## ⚡ 性能优化

已应用的优化：

1. ✅ 正则表达式缓存
2. ✅ ES6 兼容的字符串操作
3. ✅ 预编译正则表达式
4. ✅ 改进的错误处理
5. ✅ 空值安全检查

## 📝 主要函数

### 字符串操作
- `stringIncludes`, `stringEndsWith`, `string_starts_with`

### 文件处理
- `splitExt`, `splitSubtitleExt`, `filename_clean`, `isVideo`, `isDir`

### 时间转换
- `assTimeToMs`, `msToAssTime`, `srtTimeToMs`, `msToSRTTime`, `offsetTime`

### 字幕处理
- `offsetAssFile`, `offsetSrtFile`, `getCumulativeOffset`, `updateCumulativeOffset`

### 网络操作
- `download_subtitle`, `upload_subtitle_with_name`, `load_external_subtitle`

## 🔍 技术细节

- **目标**: ES6（兼容性）
- **编译**: TypeScript → ES5
- **模块系统**: CommonJS
- **依赖**: 无运行时依赖（除了 mpv）

## 📚 相关文档

- `MERGE_SUMMARY.md` - 代码合并详细说明
- `ANALYSIS_AND_TESTING.md` - 代码分析和测试文档
- `SUMMARY.md` - 原始分析总结

## 🎯 使用场景

1. **云盘播放**: 从 WebDAV 服务器播放视频和字幕
2. **进度同步**: 在多设备间同步播放进度
3. **字幕管理**: 自动下载和调整字幕
4. **连续播放**: 自动加载下一集

## 💡 注意事项

- 脚本需要在 MPV 环境中运行
- 需要配置正确的 WebDAV 服务器地址
- 需要有效的授权凭证

## 📄 许可证

ISC
