Caution
严禁使用本项目或相关项目侵犯 南京鸽游网络有限公司
(简称“鸽游”)及所有音游玩家的合法权益,具体包括但不限于:
- 大规模访问
鸽游
服务器,进行 DDoS 攻击 - 非法篡改或访问
鸽游
服务器的内容或功能
Warning
- 请勿尝试滥用本项目!已加检测,请不要试图做出任何商业行为!否则统一纳入黑名单!(此条声明可能与GPLv3许可证存在冲突,请以README.md中本声明为准!)
- 对于本项目本喵拥有最终解释权!请不要做出让任何一个音游玩家都会十分反感的事情!
- 本项目仅作为学习参考用喵,请勿用作违法用途喵!(虽然我也想不到能做什么违法的事情就是了喵)
- 本项目的初衷仅仅是为了供学习参考使用喵,本人从未想过要破坏音游圈的游戏平衡喵!
Tip
- 编写本项目所需的资料和资源均源于互联网收集喵(所以本人就是一个废物喵,什么都要依靠互联网喵(bushi))
- 如果你认为本项目不应该存在或者有其他问题,可以提Issues或者发送邮件到[email protected],我时不时会去查看
- Emmm...对于本项目有建议或者问题的请提交Issue谢谢喵~(提Issue方便往后其他有相同问题的人不会再问一遍喵)
Tip
编写本项目时使用的是 CPython3.11.8 和 CPython3.12.8 的喵,不能完全保证其他版本会不会出现问题喵
- 推荐使用
CPython3.12
及以上版本,最低CPython3.9
版本
Tip
本项目已经编写了获取token
API,但是没制作GUI
- 云端数据获取需要phigros的云端sessionToken,获取sessionToken的方法可以参考Mivik的bot说明文档里面喵!也可以用本喵用pyinstaller打包好的GetSession扫码登录来获取喵!也可以使用文酱的tomato部署的Phi-Login喵!
Tip
本项目已经编写了更新难度定数
API,但还是没制作GUI
- 获取存档打歌记录数据的过程会计算每首歌每个难度的rks喵,所以需要难度定数文件
difficulty.tsv
喵,本项目仓库里面已经有了喵,但不一定是最新的,获取最新的难度定数文件可以用文酱的项目Phigros_Resource哦喵!,也可以使用废酱的难度定数文件phi-plugin-resources
Tip
推荐使用方法1
- 查看Releases喵
- 查找最新版本的
.whl
文件喵 - 复制链接并使用以下命令安装喵:
pip install <whl_url>
- 安装 pdm 喵
pip install pdm
- 克隆仓库喵
git clone https://github.com/wms26/Phi-CloudAction-python.git
- 进入项目目录喵
cd Phi-CloudAction-python
- 使用 pdm 安装依赖喵
pdm install
python -m phi_cloud_action
会把info
目录和example
目录拷贝到运行目录下喵
python -m phi_cloud_action.webapi
Tip
方法2可以使用:
pdm run start
会启动FastAPI
服务器喵,默认监听地址是http://127.0.0.1:8000
,可以查看FastAPI
的文档,监听路径在/docs
和/redoc
,可以通过-c
来指定配置路径
点这里,查看FastAPI
自带的文档也许都能理解怎么用了罢喵~
看example
目录下的文件吧喵,用上了主要功能,看注释也许都能理解怎么用了罢喵~
-
云端操作喵[CloudAction.py](已模块化喵)(注释较为完整喵)
-
获取玩家昵称喵 -
获取玩家summary并解析喵 -
刷新玩家sessionToken喵 -
获取玩家云存档喵 -
修改玩家云端昵称喵(但Phigros仅在登录Taptap时会同步一次昵称好像喵) -
修改玩家summary喵(但只能看没有任何用喵) -
获取存档时进行md5校验喵 -
上传云存档(不计划实现)
-
-
存档操作喵[Structure/*.py](已模块化喵)(注释较为完整喵)
-
云存档解密喵 -
根据云存档解析所有内容喵 -
根据解析内容构建云存档喵 -
结构化解析存档喵 -
支持旧版云存档喵(gameKey
最低支持到\x02
的文件头,gameProgress
最低\x03
喵)
-
-
其他喵:
-
Web喵!
此项目云端操作的思路源于文酱的项目PhigrosLibrary喵(本文档前面也留了链接喵)(快说“谢谢文酱!”)
获取token
完全照搬核心源自PhiLogin喵(快说“谢谢文酱!”)
喵!小小宣传一下废酱的项目Phi-Plugin,Koishi版, 是一个适用于Yunzai-Bot V3
和Koishi
的Phigros
辅助插件喵!(本文档前面也留了链接喵)
介于本喵懒惰的性格和本项目的特殊性喵,本项目也许应该可能大概会在未来也可能在现在某个时间突然停更或者消失喵(bushi)
(小声BB:我也不知道我为什么要写云端数据操作的python实现喵,就当是消遣吧喵。想专门搞这方面的大佬还是移步到文酱的项目PhigrosLibrary吧喵)
针对用户:
- 正式版发布
针对开发者:
- 更换为异步,不再使用
requests
,统一使用httpx
针对用户:
- 集成
PhiLogin
项目
针对用户:
- 添加
通过API更新INFO文件
功能 更新PCA本体
能用了?
针对用户:
- 添加
更新PCA本体
功能,但是处于测试阶段,不保证可用性
针对用户:
- 修复许多bng
- 添加
更新难度定数文件
功能 - 支持废酱的
.csv
难度定数文件
针对开发者:
- 添加环境变量,以后可以
不用手动改自动检测开发环境并调整到正确的目录example.py
文件了 - 初步添加
Pytest
的测试功能,暂未实装
- 改成包分发,原有项目
pip
安装完后把PhiCloudLib
改成phi_cloud_action
即可 - 添加WebAPI
- 由于Phi改成B30算法,
getB19
将弃用,使用getB30
- 修复了写出的存档json数据在修改后,gameRecord中难度顺序更改导致成绩错误的问题
- 修复了example.py中未计算等效rks的问题
- 修改了部分注释以及函数注释 (请注意DataType.py里面的注释部分是AI生成后来修改的,可能描述不太规范)
- 为Bits数据类型添加了长度限制 (emm可能有的人不太懂所以还是看代码吧,新增了_Bits类)
- 基于Bits新增的功能上,修改了部分结构类的类型注释,防止在编辑存档时超出了有效Bit单位长度 (好吧可能越描述越糊了x)
- 修改了下README.md
- 重写大量代码,删除了之前发癫时添加的异步代码,修改了解析存档的逻辑,采用结构化解析方式,相关请看PhiCloudLib/Structure/
- 修改了logger.py,在定义了日志输出编码为utf-8的同时也为全局错误捕获输出提供了支持
- 修改部分旧函数名,稍微统一了一下函数命名与变量命名
- 重写了函数注释,统一了注释格式
- 优化了项目喵化时的语句逻辑,仅在句尾喵~
- 更新一下难度文件,证明还活着
- 最近事情比较多可能很难更新什么东西了
- 总是看着右下角那个语言组成有那0.6%的Batchfile,所以为了看着舒服清理了一些无用文件(诶嘿~)
- 文酱恢复更新Phigros_Resource啦!
- 鸽游在3.9.0更新了gameKey的结构,新增了两个键
- 更新了3.9.0的定数文件(其实之前一直都有在更新,每次提交时都会把最新的定数提交上来)
- 其他小更改
- 新增了修改玩家昵称的函数
- 鸽游更新了gameProgress的结构,新增了一个键
- 其他小更改
- 新增了taptap扫码登录授权的方式获取sessionToken)
- 更新了下README
- 才发现上次更新不小心把
GPL
许可证整没了(
- 重写全部代码,全部统一改为异步处理(虽然代码跟原来的大差不差)
- 更正了一些函数的命名方式
- 修改了一些代码结构,现在要请求云端数据推荐使用异步with
- 代码将使用logging库输出(我还加上了colorlog库,带颜色的哦~)
- 整理代码,对于新加的功能可能并没有过多去写注释,后面再补咕咕咕...
- 增加了存档历史记录的功能,可用于绘制rks曲线图或者单曲成绩的曲线图之类的。
- 给README.md增加了更新日志!
- 为项目增加了
GNU GPLv3
许可证
- 新增了对解析存档时传入数据的类型检查
- 调换了解析record传参的顺序(感觉之前那个顺序有点不人性化,前后换了个位置顺眼多了)
- 修复了refreshSessionToken不能使用报错的问题(其实就是一个请求方法不对的问题,把get改成put就不会404了)
- 修正了部分注释(感觉注释还是有一些容易被误解的地方,本喵是个fw不会写注释,希望还是先看example.py的例子吧,防止误解)
- 重写了webapi,把加密去掉了,但是提供了一个选项来决定要不要使用本喵闲着没事搓出来没什么用的“混淆处理”进行提交token,默认没有开(旧的用“old”标记了)
- 更新了README.md并将旧的WebApi文档单独分到Old_WebApi.md中(什么时候才能记得把readme一起改了然后提交上来而不是每次都提交完了才想起来然后改完再提交)
- 我是傻逼忘记提交Old_WebApi.md了
- 新增了WebApi,可以自行架个小服务器跑Web_api.py(GPT说建议用gunicorn跑,不懂百度)
- 没有什么好更的了(
- 好的刚刚忘记把index.html提交上来了,是个十分简单的api介绍页,请结合readme食用
- 修复了在获取打歌记录时存在旧谱记录或者其他无定数的难度时报错的问题
- 修复了在获取b19时没有AP过歌时报错的问题(不会吧真的还有人没有AP过嘛)
- 将序列化反序列化存档全部一致改为字典传址
- 更新添加修改了一些注释
- 在example.py中增加了上传存档等功能的示例与逻辑注释
- 原仓库的作者文酱放弃维护了,之后烧饼接手了这个项目捏,好耶!
- 修改了CloudAction的一点逻辑代码,也许看起来没有这么*(shi)了?
- 将GetSession打包用的脚本分为两个脚本(单文件打包和多文件打包)
- 更新了一下示例脚本example.py
- 乱七八糟优化了点代码)
- 将获取存档和上传存档写了两个调用脚本示例
- 稍微改了一点东西,无伤大雅
- 增加了三个云端操作:上传存档和上传summary以及刷新sessionToken
- 将云存档各api接口单独写为一个CloudLib,更方便调用(也更难懂了)
- 修改了一下反序列化和序列化存档的代码,把几个以二进制表示信息的键展开为列表来表示,便于理解阅读的同时也不影响序列化存档
- 给getSave增加了验证md5校验值和验证存档大小的代码,在校验失败和存档过小时输出警告并等待5秒
- 将release里面pyinstaller编译打包的主脚本开源(main.py)
- 修改了main.py的小部分代码,以适配getSave需要checksum进行md5校验的要求
- 刚刚更新忘记把pyinstaller编译打包时要用的UPX一起上传了)
- 把GetSession一起上传了)
- 写了大部分功能喵,目前只有存档读取操作是最完善的喵,其他功能请自行琢磨喵
- 闲着没事把项目大部分内容喵化了(
- 将另一个本地数据操作的项目Phi-LocalAction-python里面的获取sessionToken独立了出来
- 添加了README.md和requirement.txt喵!
- 更新README.md