# random_songs **Repository Path**: ji-or-ji/random_songs ## Basic Information - **Project Name**: random_songs - **Description**: random_songs - **Primary Language**: Python - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-09-01 - **Last Updated**: 2025-11-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🎵 随机点歌系统 一个功能丰富的Python命令行随机点歌系统,支持完整的歌曲管理、点歌人管理、多歌单支持、自动网页跳转和操作历史记录功能。 ## ✨ 核心功能 ### 🎲 随机点歌 - 智能随机选择歌曲播放,支持防重复机制 - 自动过滤无效歌曲(空歌名) - 显示完整的歌曲信息,包括点歌人 - 支持自动网页跳转到歌曲URL或B站搜索 ### 📊 统计分析 - 实时统计歌曲总数、有效/无效歌曲数量 - 点歌人排行榜统计 - 可视化数据展示 ### 👥 点歌人管理 - **添加点歌人** - 创建新的点歌人账户 - **删除点歌人** - 删除点歌人及其所有歌曲 - **修改点歌人** - 重命名点歌人姓名 - **查看点歌人列表** - 浏览所有点歌人 ### 🎵 歌曲管理 - **添加歌曲** - 添加新歌曲到库中 - **修改歌曲** - 编辑歌曲名称、歌手、外链URL或点歌人 - **删除歌曲** - 从库中移除指定歌曲 - **查看所有歌曲** - 浏览完整的歌曲列表 ### 📜 操作历史 - 完整的操作日志记录 - 时间戳记录所有重要操作 - 支持查看历史记录 ### 🎵 多歌单支持 - **创建歌单** - 创建新的歌单 - **切换歌单** - 在不同歌单之间切换 - **删除歌单** - 删除不需要的歌单 - **查看歌单信息** - 显示所有歌单的详细信息 - **从外部导入** - 支持从外部JSON文件导入歌单 ### 🌐 自动网页跳转 - **启用/禁用自动跳转** - 控制是否自动打开网页 - **跳转模式设置** - 支持URL跳转和B站搜索跳转 - **自定义延时** - 设置跳转前的等待时间(1-60秒) - **智能跳转逻辑** - 优先跳转歌曲URL,无URL时根据配置跳转 ### 🔄 防重复功能 - **时间窗口防重复** - 在指定时间窗口内避免重复播放同一歌曲 - **播放记录管理** - 查看和管理播放历史 - **自动重置** - 所有歌曲播放后自动重置播放记录 ## 🚀 快速开始 ### 系统要求 - **Python 3.6+** - 支持的命令行终端 ### 安装和运行 1. **将(deploy.sh)[deploy.sh]放置在目标文件夹下** 2. 在文件夹中打开终端,输入以下内容: ``` bash deploy.sh ``` 2. **确保文件结构正确**: ``` random_songs/ ├── main_data/ │ ├── main.py # 主程序 │ ├── history_records.json # 历史记录文件 │ ├── playlists_config.json # 歌单配置文件 │ ├── auto_jump_config.json # 自动跳转配置文件 │ ├── songs_list.json # 默认歌单歌曲数据 │ └── playlist_2.json # 第二个歌单歌曲数据 ├── LICENSE ├── README.md # 说明文档 └── test_*.py # 测试文件 ``` 2. **运行程序**: ```bash cd d:/random_songs python main_data/main.py ``` ## 🎮 使用指南 ### 主菜单功能 程序启动后显示8个主要选项: ``` 🎵 随机点歌系统 🎵 请选择操作: 1. 随机点歌 2. 重新加载歌曲列表 3. 查看统计信息 4. 点歌人管理 5. 歌曲管理 6. 查看历史记录 7. 设置 8. 退出 ``` ### 1. 随机点歌 选择后系统随机选择一首歌曲并显示: ``` 🎵 随机点歌结果 🎵 ============================== 歌曲名: [歌曲名称] 歌手: [歌手名称] 点歌人: [点歌人姓名] 链接: [URL链接] ============================== ``` 如果启用了自动跳转,将在指定延时后自动打开相关网页。 ### 2. 重新加载歌曲列表 强制重新从文件加载歌曲数据,更新内存中的歌曲列表。 ### 3. 查看统计信息 显示详细的统计报告: ``` 📊 歌曲统计信息 📊 ======================================== 总歌曲数: 60 有效歌曲: 60 无效歌曲: 0 👥 点歌人统计: 王文洁: 3首 电管: 3首 程: 3首 ... (更多点歌人) ======================================== ``` ### 4. 点歌人管理子菜单 ``` 🎤 点歌人管理 🎤 ==================== 1. 增加点歌人 2. 删除点歌人 3. 修改点歌人 4. 查看点歌人列表 5. 返回主菜单 ``` ### 5. 歌曲管理子菜单 ``` 🎵 歌曲管理 🎵 =============== 1. 添加歌曲 2. 修改歌曲 3. 删除歌曲 4. 查看所有歌曲 5. 返回主菜单 ``` ### 6. 查看历史记录 显示所有操作的历史日志: ``` 📜 操作历史记录 📜 ============================================================ 1. [2025-08-31 14:38:11] 添加歌曲 详情: 歌曲: IF YOU - 歌手: BIGBANG - 点歌人: 陈星彤 结果: 成功 ---------------------------------------- 2. [2025-08-31 14:39:22] 添加歌曲 详情: 歌曲: 心动(beautiful) - 歌手: 伯贤 - 点歌人: 陈星彤 结果: 成功 ---------------------------------------- ... (更多记录) ``` ### 7. 设置菜单 ``` ⚙️ 设置菜单 ⚙️ (当前歌单: 默认歌单) ============================== 1. 歌单管理 2. 自动网页跳转开关 3. 防重复功能设置 4. 返回主菜单 ``` #### 7.1 歌单管理子菜单 ``` 🎵 歌单管理 🎵 =============== 1. 从外部已有歌单导入 2. 创建空白歌单 3. 删除歌单 4. 切换歌单 5. 查看所有歌单 6. 返回设置菜单 ``` #### 7.2 自动网页跳转设置 ``` 🌐 自动网页跳转设置 🌐 ============================== 当前状态: ✅ 启用 跳转模式: 🔍 搜索跳转 跳转延时: 3秒 请选择操作: 1. 启用自动跳转 2. 关闭自动跳转 3. 跳转模式设置 4. 返回设置菜单 ``` #### 7.3 防重复功能设置 ``` 🔄 防重复功能设置 🔄 (当前歌单: 默认歌单) ========================================== 1. 功能状态: ✅ 启用 2. 模式: ⏰ 时间窗口模式 3. 时间窗口: 1小时0分钟 4. 所有歌曲播放后重置: ✅ 是 5. 当前已播放歌曲: 0首 6. 查看播放记录 7. 手动重置播放记录 8. 返回设置菜单 ``` ## 📁 数据文件格式 ### 歌曲数据文件 (`songs_list.json`, `playlist_2.json`等) ```json { "songs": [ { "id": 1, "song_name": "知我", "artist": "", "url_list": "https://b23.tv/9QpZX1u", "requested_by": "王文洁" } ] } ``` ### 歌单配置文件 (`playlists_config.json`) ```json { "current_playlist": "default", "playlists": { "default": { "name": "默认歌单", "description": "主歌单", "file_path": "main_data/songs_list.json", "created_at": "2025/09/06", "song_count": 60, "duplicate_prevention": { "enabled": true, "mode": "time_window", "time_window_hours": 1, "time_window_minutes": 0, "reset_on_all_played": true, "last_reset_time": "2025-09-07 09:43:44", "played_songs": [] } } } } ``` ### 自动跳转配置文件 (`auto_jump_config.json`) ```json { "auto_jump_enabled": true, "jump_mode": "search", "custom_url": "", "jump_delay": 3 } ``` ### 历史记录文件 (`history_records.json`) ```json [ { "timestamp": "2025-08-31 14:39:22", "action": "添加歌曲", "details": "歌曲: 心动(beautiful) - 歌手: 伯贤 - 点歌人: 陈星彤", "result": "成功" } ] ``` ## 🔧 技术特性 ### 智能文件查找 程序支持在多个路径查找数据文件: - 当前目录 - 父目录 - main_data子目录 - 相对路径和绝对路径 ### 错误处理 - JSON文件损坏自动恢复 - 无效输入验证 - 文件权限检查 - 操作失败回滚机制 ### 数据完整性 - 自动生成唯一歌曲ID - 过滤无效歌曲数据 - 操作历史记录保障可追溯性 ### 多歌单架构 - 支持创建多个独立歌单 - 每个歌单有自己的歌曲文件 - 轻松在不同歌单间切换 - 歌单统计信息实时更新 ### 自动跳转系统 - 智能跳转逻辑(优先歌曲URL) - 可配置的跳转延时 - 支持自定义URL和B站搜索 - 完整的设置界面 ### 防重复机制 - 时间窗口防重复播放 - 播放记录跟踪和管理 - 自动重置功能 - 灵活的配置选项 ## ⚠️ 注意事项 ### 文件管理 1. **备份重要数据**:在进行大量修改前建议备份数据文件 2. **不要手动编辑JSON**:使用程序功能管理数据,避免格式错误 3. **文件权限**:确保程序有读写数据文件的权限 ### 使用建议 1. **定期查看统计**:了解歌曲库状态和点歌人活跃度 2. **清理无效数据**:定期使用统计功能查看无效歌曲 3. **利用历史记录**:追踪所有操作便于审计 4. **使用多歌单**:为不同场景创建专用歌单 ### 自动跳转使用 1. **注意隐私**:自动跳转会打开浏览器,请注意使用环境 2. **调整延时**:根据需要设置合适的跳转等待时间 3. **URL验证**:确保自定义URL格式正确 ## 🐛 故障排除 ### 常见问题 1. **程序无法启动** - 检查Python是否正确安装:`python --version` - 确认文件路径正确 2. **文件读写错误** - 检查文件权限 - 确认文件没有被其他程序占用 3. **数据损坏** - 不要手动编辑JSON文件 - 使用备份文件恢复 4. **操作失败** - 检查磁盘空间 - 确认有足够的权限 5. **自动跳转不工作** - 检查浏览器是否被阻止 - 确认网络连接正常 ### 获取帮助 如遇到问题,请检查: - Python版本是否符合要求 (3.6+) - 所有必要文件是否在正确目录 - 文件权限是否足够 ## 📈 性能优化 ### 内存管理 - 懒加载数据文件 - 智能缓存机制 - 高效的数据结构 ### 用户体验 - 清晰的菜单导航 - 详细的错误提示 - 操作确认机制 - 多歌单快速切换 ## 🧪 测试 项目包含多个测试文件: - `test_menu_options.py` - 测试菜单选项功能 - `test_playlist_switch.py` - 测试歌单切换功能 - `test_create_playlist.py` - 测试歌单创建功能 - `test_import_function.py` - 测试导入功能 运行测试: ```bash python test_menu_options.py python test_playlist_switch.py # 其他测试文件类似 ``` ## 🔄 更新日志 ### v2.2 - 增强版本 (当前) - ✅ 防重复功能系统 - ✅ 外部歌单导入功能 - ✅ 增强的测试套件 - ✅ 改进的错误处理 ### v2.1 - 功能版本 - ✅ 多歌单支持系统 - ✅ 自动网页跳转功能 - ✅ 完整的设置菜单 - ✅ 增强的错误处理和恢复 - ✅ 多路径文件查找支持 ### v2.0 - 功能版本 - ✅ 完整的点歌人管理系统 - ✅ 详细的操作历史记录 - ✅ 实时统计分析功能 ### v1.1 - 初始版本 - ✅ 基本数据持久化 ### v1.0 - 初始版本 - ✅ 随机点歌基础功能 - ✅ 简单的数据存储 ## 🤝 贡献指南 欢迎贡献代码或提出建议!请确保: 1. 遵循现有的代码风格 2. 添加适当的注释 3. 测试所有新功能 4. 更新相关文档 ## 📄 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件 ## 🙏 致谢 感谢所有点歌人的参与和贡献!🎶 --- **享受您的音乐时光!** 🎵✨ *最后更新: 2025-09-07*