# 🎵 Meow Music 使用说明

## 📋 功能概览

Meow Music 是一个完整的音乐播放和管理系统，包含以下功能：

### ✨ 核心功能

1. **用户系统**
   - 用户注册和登录
   - 密码加密存储（bcrypt）
   - Token认证机制

2. **音乐搜索**
   - 实时搜索音乐
   - 显示歌曲标题和艺术家
   - 搜索结果缓存

3. **在线播放**
   - 内置音频播放器
   - 显示当前播放信息
   - 支持标准音频控制

4. **我喜欢**
   - 快速收藏喜欢的歌曲
   - 查看收藏列表
   - 移除收藏

5. **歌单管理**
   - 创建自定义歌单
   - 添加/删除歌曲
   - 查看歌单详情

---

## 🚀 快速开始

### 1. 启动服务器

#### Windows:
```powershell
# 方式1：双击启动
双击 start.bat

# 方式2：命令行启动
cd d:\esp32-music-server\Meow\MeowEmbeddedMusicServer
go run .
```

#### Linux/macOS:
```bash
cd /path/to/MeowEmbeddedMusicServer
./start.sh
# 或
go run .
```

### 2. 访问应用

打开浏览器，访问：
- **主应用**: http://localhost:2233
- **测试版本**: http://localhost:2233/test
- **经典界面**: http://localhost:2233/classic

---

## 📖 使用指南

### 第一次使用

1. **注册账户**
   - 访问 http://localhost:2233
   - 点击"注册"标签
   - 填写：用户名、邮箱、密码（至少6位）
   - 点击"注册"按钮
   - 注册成功后会自动进入主界面

2. **登录**
   - 使用注册的用户名和密码登录
   - **注意**：登录时使用**用户名**，不是邮箱

### 搜索音乐

1. 在搜索框输入歌曲名或艺术家名
2. 按回车键开始搜索
3. 搜索结果会显示在下方

### 播放音乐

1. 在搜索结果中点击"播放"按钮
2. 底部会出现播放器
3. 使用播放器控制播放、暂停、音量等

### 收藏音乐

1. 点击歌曲旁边的"喜欢"按钮
2. 歌曲会自动添加到"我喜欢"列表
3. 切换到"我喜欢"标签查看所有收藏

### 管理歌单

1. 切换到"我的歌单"标签
2. 点击"+ 新建歌单"创建新歌单
3. 输入歌单名称和描述
4. 点击歌单查看详情（开发中）

---

## 🔧 API接口

### 用户认证

#### 注册
```http
POST /api/auth/register
Content-Type: application/json

{
  "username": "用户名",
  "email": "邮箱",
  "password": "密码"
}
```

#### 登录
```http
POST /api/auth/login
Content-Type: application/json

{
  "username": "用户名",
  "password": "密码"
}
```

#### 获取当前用户
```http
GET /api/auth/me
Authorization: Bearer {token}
```

#### 登出
```http
POST /api/auth/logout
Authorization: Bearer {token}
```

### 音乐搜索

#### 搜索歌曲
```http
GET /api/search?query={关键词}
```

### 收藏管理

#### 添加到收藏
```http
POST /api/favorite/add
Content-Type: application/json

{
  "title": "歌曲名",
  "artist": "艺术家",
  "url": "播放链接"
}
```

#### 获取收藏列表
```http
GET /api/favorite/list
```

#### 从收藏移除
```http
POST /api/favorite/remove
Content-Type: application/json

{
  "title": "歌曲名",
  "artist": "艺术家"
}
```

### 歌单管理

#### 获取用户歌单
```http
GET /api/user/playlists
Authorization: Bearer {token}
```

#### 创建歌单
```http
POST /api/user/playlists/create
Authorization: Bearer {token}
Content-Type: application/json

{
  "name": "歌单名称",
  "description": "歌单描述"
}
```

#### 添加歌曲到歌单
```http
POST /api/user/playlists/add-song?playlist_id={歌单ID}
Authorization: Bearer {token}
Content-Type: application/json

{
  "title": "歌曲名",
  "artist": "艺术家",
  "url": "播放链接"
}
```

#### 从歌单移除歌曲
```http
DELETE /api/user/playlists/remove-song?playlist_id={歌单ID}&title={歌曲名}&artist={艺术家}
Authorization: Bearer {token}
```

#### 删除歌单
```http
DELETE /api/user/playlists/delete?playlist_id={歌单ID}
Authorization: Bearer {token}
```

---

## 📁 文件结构

```
MeowEmbeddedMusicServer/
├── main.go                 # 主程序入口
├── user.go                 # 用户管理
├── playlist.go             # 歌单管理
├── index.go                # 路由处理
├── struct.go               # 数据结构
├── start.bat              # Windows启动脚本
├── start.sh               # Linux/macOS启动脚本
├── files/                 # 数据文件目录
│   ├── users.json         # 用户数据
│   ├── user_playlists.json # 用户歌单数据
│   └── playlists.json     # 遗留歌单数据
└── theme/                 # 前端文件
    ├── full-app.html      # 完整应用（主界面）
    ├── test-app.html      # 测试版本
    ├── simple-app.html    # 简化版本
    └── index.html         # 经典界面
```

---

## ⚙️ 配置

### 修改端口

编辑 `main.go`，找到：
```go
port := "2233"
```
修改为您想要的端口号。

### 数据存储位置

所有数据存储在 `./files/` 目录下：
- `users.json` - 用户账户信息（包含加密密码）
- `user_playlists.json` - 用户创建的歌单
- `playlists.json` - 遗留的公共歌单

---

## 🐛 故障排除

### 问题1：端口被占用
```
listen tcp :2233: bind: Only one usage of each socket address...
```

**解决方法：**
```powershell
# 查找占用端口的进程
netstat -ano | findstr :2233

# 关闭进程（替换{PID}为实际进程ID）
taskkill /F /PID {PID}
```

### 问题2：登录失败
```
invalid username or password
```

**可能原因：**
1. 用户名或密码错误
2. 使用了邮箱而不是用户名登录
3. 服务器重启后数据未正确加载

**解决方法：**
- 确认使用**用户名**登录，不是邮箱
- 检查 `files/users.json` 是否存在且格式正确
- 重新注册一个新账户测试

### 问题3：搜索无结果
**可能原因：**
- 网络连接问题
- 搜索关键词不正确
- 音乐源服务不可用

**解决方法：**
- 检查网络连接
- 尝试更常见的歌曲名
- 查看服务器日志

### 问题4：无法播放音乐
**可能原因：**
- 音乐链接失效
- 浏览器不支持音频格式
- 跨域问题

**解决方法：**
- 尝试播放其他歌曲
- 使用Chrome或Firefox浏览器
- 检查浏览器控制台错误信息

---

## 🔒 安全建议

1. **不要在公网暴露此服务** - 仅供本地或局域网使用
2. **定期备份数据** - 备份 `files/` 目录
3. **使用强密码** - 建议至少8位，包含字母和数字
4. **不要共享Token** - 登录凭证是私密的

---

## 📞 支持

- **QQ交流群**: 865754861（喵波音律-音乐家园）
- **项目问题**: 查看服务器日志进行调试

---

## 🎉 更新日志

### v2.0.0 (2025-11-23)
- ✅ 添加完整的用户系统
- ✅ 实现歌单管理功能
- ✅ 修复死锁问题
- ✅ 修复密码存储问题
- ✅ 创建完整的Web界面
- ✅ 优化用户体验

### v1.0.0 (初始版本)
- 基础音乐搜索和播放
- ESP32设备支持
- 简单收藏功能

---

**祝您使用愉快！** 🎵
