- 临近期末,暂缓更新,计划假期重构服务端v1.1.0
- 更新源脚本,使用 WebPack 构建,支持自定义更多参数
- 体验地址
/lx-source-script.js
,添加?key=请求密钥
- 更新编译脚本,支持MuslLibC、静态构建,支持自动发布Release
- 更新编译脚本,支持更多架构
- Wy源优化模块,同步部分更改
- Kw源测试接口,无需白名单包名(二次甚至三次查询)
- Kw源允许自定义Des_Source参数
- 更新Action构建脚本,正式兼容Go1.20(windows7)
- (据用户反馈,当前账号添加方式过于复杂,很多参数不知道怎么填,故增加部分平台简化登录方式)
- Tx源支持QQ快速登录(beta), 启动参数
-e txqq
- 支持自定义错误音频地址(不填禁用), 位置 [Main].ErrMp3
修复若干已知Bug
- 基于 cr-go-sdk 重新支持 Cloudreve 缓存
- 解决Tx源一处Fallback死循环问题
- Tx源支持自定义CDN链接地址
- Wy源支持扫码登录(beta), 启动参数
-e wyqr
- 支持在解析时通过?key=传入验证Key
- 新增状态页面,访问
/status
查看 - Go1.20兼容版见 go120 分支
- Kg源新增刷新登录功能(之前尝试写了,一直没找到lite版的aeskey,感谢Python版提供关键参数)
- Kg源Lite签到模块新增错误码"登录已过期",目前Token有效期为一个月,暂未发现自动刷新方式
- 重制构建脚本,Action编译测试
- 降级构建go1.20版本以支持更早的系统(beta)
- Mg源新增接口,无需登录账号(二次查询,速度较慢)
- 清理部分结构体未使用字段
- Tx源支持音质Fallback
- Kg源Lite签到重试
- 完善音质验证部分
- 刷新登录更新时间统一为指定日期0时0秒
- 清理无用代码,删除旧版Router
- 支持将内存缓存写入文件,重启程序不丢数据
- 优化计划任务逻辑: 发生错误不更新下次执行时间,以便在下次检测时重试
- 注:开学在即,项目暂缓更新
- 修复wy源sky音质获取,增加更高音质常量
- (dolby->高清环绕, sky->沉浸环绕, master->超清母带)
- 支持Kg源概念版自动签到(beta)
- 统一缓存目录KGHASH为大写形式
- 源脚本获取地址添加
?raw
参数可直接下载 (要求开启自动补全 [Script].Auto>0) - 为部分需要二次查询的源添加缓存
- 为不同来源自定义直链缓存时间
- 修复新版Wraper在Code不为0时未能正常结束Handler的问题
- zTool: 修复计划任务模块一处计时bug "时间倒流"
- Tx源刷新登录间隔时间降至5天
- Wy源刷新登录间隔时间固定为1天
- Kg源暴露更多配置项
- 使用新版MusicRouter处理器(beta),兼容Python版调用方式?
- Wy源刷新登录模式确定:每天执行一次合并Cookie
- zTool: task: 增加传参 now(int64): 执行时间(Unix)
- 优化Tx源刷新登录函数,兼容计划任务错误处理模式
- 对源脚本进行部分更改,建议重新下载导入(http://127.0.0.1:1011/lx-custom-source.js)
- 简单优化旧版LinkHandler
- 支持Mg源自定义账号
- 确定tx刷新登录间隔6天
- 更新源接口定义
- 数据表结构规划中,暂时推迟
- 修复wy源builtin接口√
- 使用计划任务定期清理日志缓存√
- 修复Tx源刷新登录到期时间问题(默认14天)
- Kg源使用新版接口,彻底弃用MusicId传参
- 优化linkrouter
更新一个大版本- 源脚本:兼容洛雪手机端v1.2.0版本
- 计划:引入SQLite支持(GORM),支持缓存请求,重写Router/Caches逻辑
- 修复linux环境非root用户启动无法创建配置目录提示权限不够问题
- [重构请求处理逻辑]:
首先拆分为三部分:Before(前置检测), Middle(获取数据), After(验证结果) 可解决部分重复代码,但传参难以统一
- [缓存数据目录]:
128k.mp3 320k.mp3 flac.flac fl64.flac lyric.lrc cover.jpg info.json | 各音质文件缓存 | 歌词 | 封面 | 详情 |
- [数据库表结构]:
暂未确定
- 计划:引入SQLite支持,缓存歌曲详情
- 更新go.mod依赖
- 默认文件权限改为0777
- 屏蔽部分未实现功能配置项
- 增加启动参数
-p 0777
设置默认文件权限 解决非root用户下的权限问题 (部分情况0666不管用) - (注:为保证正确解析八进制数据,开头的"0"不能去掉!)
- 低调行事,删除源脚本内Github仓库地址
- 构建时修改版本号?
- 本地缓存:下载出错后删除文件
- 更新wy内置源Api地址
- 优化配置文件保存逻辑
- 支持使用自定义NeteaseCloudMusicApi项目(beta)
- (注:当前测试阶段,强行与旧逻辑兼容,可能无法达到最佳性能)
- 计划:重构源请求逻辑,合并builtin与custom目录?
- 支持wy源检测音质是否可用(需启用qualityMapReverse支持)
- 计划:将参数传入Query,忽略实际音质不匹配强制缓存
- wy源Cookie长期有效(一个月左右),且刷新逻辑未知,暂时禁用刷新登录功能
- 将router和middleware整合到server文件夹
- 自适应本地缓存绑定地址(beta),多端口建议开启,但缺少灵活性
- windows平台调用loger.Fatal后显示按任意键继续(优化防止闪退)
- 计划增加命令行模式配置账号登录(测试版)
- 启动命令
./lx-source-linux-amd64v2 -e menu
- 清理部分无用注释
- 模块化wyApi部分√
- [Auth] 将Key验证模块移至速率限制模块后
- 优化main.go,使用zcypt.RandomBytes函数
- 添加对象池,手动释放Loger,优化创建速度
- 添加多端口监听支持
- 支持配置全局代理、伪装ip
- 支持使用163api模式获取歌曲
- 新版api结构设计(暂定)
# 基础接口 / /link/{source}/{musicid}/{quality} # 功能接口 /api/{source}/{method}/{query} | 源 | 功能 | 参数 | /api/wy/link/?id=xxx&quality=320k&key=xxx # 软件接口 /app/{name}/{method}/{?query} | 名称 | 功能 | /app/lxmusic/link (参数通过post传入) /app/musicfree/xxx (计划支持MusicFree)
- 添加wy外链获取v1支持,并改用此版本
- 计划:统一错误输出,进行以下分类
- 验证失败(Verify Failed)、实际音质不匹配、无返回数据(No Data)、...
- 添加wy批量SongUrl获取排序功能
- 完善wy请求加密支持
- 添加wy刷新登录模块(beta)
- 待优化:cookie需要频繁在map和string之间转换
- 对部分功能实现方式进行优化,去除qualityMapReverse依赖
- 由于wy修改api验证方式,python版逻辑已不可用,现参考NeteaseCloudMusicApi项目进行修改
- 实现wy外链获取逻辑(暂未实装)
- 测试版MusicId验证
- (注:任何前置验证都必然会延长响应时间,请确认会用到再开启)
- 修复wy源内置接口
- 不再支持自定义Public目录,默认使用内置embedFS提供服务
- 修改脚本更新路径为
public/lx-custom-source.js
- 优化kw内置源获取方式
- 强制使用默认Script配置
- 隐藏服务端信息中的
developer,github
字段 - 为Windows构建添加文件属性
- 修复内置kw接口
- 开启tx源账号解析时启用文件缓存
- 移植tx源刷新登录功能
- 注:之前没有登录过手机qq音乐的账号签到可免费领绿钻会员
- 已知问题:生成直链会暴露uin且无法移除,共享时请务必使用缓存
- 完善速率限制功能:增加容忍限度、封禁时间,详见配置注释
- 准备弃用"MusicId-字符串"传附加参数的方式
- 计划:重构音质对应表部分,每个源使用独立音质表
- 更换wy内置接口为qz源
- 默认监听地址改为127.0.0.1
- 注:新年第一次更新,祝大家听歌愉快
- 根据源启用状态生成支持音质表
- 注:本次还是累积更新,不单独发布Release
- 从Python版移植部分代码
- (兼容tx源一分钟试听链接获取)
- 优化速率限制相关逻辑
- 注:本次累积更新,不单独发布Release
- 实现单ip速率限制,配置方法:
- [Auth].RateLimit
- _Enable(false): 开启功能
- _Block(30): 单位时间
- _Single(15): 单ip限制次数
- 实际速率: 15次每30秒
- (目前仅对解析接口使用,文件接口不受限制)
- 修复tx试听源,获取128k音质 (原先默认获取的是96k的m4a)
- 很不幸,又要更新客户端脚本了...
- (要不直接把musicinfo Post到服务端处理吧)
- 添加tx试听源(同样不计入缓存)
- [不兼容] 支持使用服务端返回音质列表
- 请再次更新客户端脚本!
- 支持从服务端获取内置脚本: http://127.0.0.1:1011/lx-custom-source.js
- kg试听源返回1分钟试听文件会错误识别成完整版,导致播放器卡死
- 请求解析接口时遇到的错误输出到log,不返回msg
- 添加kg试听源(不计入缓存) *(需更新脚本)
- 注:部分歌曲只能试听前1分钟内容,无法试听的无法播放
- (请手动删除
data/public
目录后启动程序重新释放静态资源) - 脚本还是
data/public/lx-coustom-source.js
,开了Key验证的记得将原apipass复制过去
- 修复wy源返回错误判断逻辑
- update 更新:
- 给CacheQuery加个sync.Pool,提高并发分配效率
- 请求验证改为在初始化时载入,降低每次判断性能损耗
- feature 功能:
- 临时链生成仍将推迟
- bugfix 修复:
- 临时解决预定义(*Loger).NewGroup()无法输出到FileLoger问题
- 注:
- 如果非调试使用建议关闭控制台日志输出 [Main].Print=false,可少量提升io性能 (不影响文件日志记录)
- 增加dev分支,日常开发,稳定了再合main,防止临时补充更新情况
- 上次补充更新内容:将error.mp3换成远程连接
- 洛雪客户端似乎无法识别Base64编码后的音频文件
- 待解决问题:无法获取真实请求URL,如套一层Nginx或分路径反代,只能依赖手动配置的 [Cache].Local_Bind 确定外部地址
- zTool:
- 略微降低FileLogs缓存大小,防止异常退出丢太多日志情况 (TODO: Error及以上情况强制刷新缓冲区)
- cmd: 优化io.Copy缓存问题
- (未完成) 临时链生成功能 (需要维护双倍的映射表,实际速度可能减慢)
- (实验性) [Main].SysLev 尝试调高程序优先级以解决windows下最小化降低资源分配问题
- 脚本增加请求耗时输出
- 优化zTool文件下载逻辑
- 链接缓存由Source上移至Router级 (为临时链实现基础)
- 完善缓存规则
- 查询成功将链接写入内存,保留一小时 (MemCache HIT)
- 解析错误将空字符串写入内存,阻止请求10分钟 (MemCache Reject)
- 可提升后续重复查询响应速度 (实际效果不明显,后端几十µs的差距)
- 防止自动换源机制瞎查,解析失败返回一段提示语音
非常抱歉, 本音频可能由以下原因导致无法正常播放, 不支持的平台或音质, 触发风控或专辑单独收费, 缓存文件已被删除, 实际音质不匹配, --洛雪自定义源 (Lx-Source)
- 参考Python版移植部分功能
- 完善、优化逻辑
- 发布源码
- 立项制作