{"id":20955612,"url":"https://github.com/ginsakura/musynxsave","last_synced_at":"2026-04-05T20:04:43.123Z","repository":{"id":115686136,"uuid":"591967225","full_name":"Ginsakura/MUSYNXSave","owner":"Ginsakura","description":"同步音律喵赛克(MUSYNX) Steam端 存档解析工具，用于解析本地存档内容，快速查看谱面游玩状态与游玩记录","archived":false,"fork":false,"pushed_at":"2026-04-05T18:36:52.000Z","size":114321,"stargazers_count":18,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-05T19:22:32.288Z","etag":null,"topics":["musynx","python3","save","save-manager","steam-games","tkinter","tkinter-gui"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ginsakura.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-01-22T14:12:42.000Z","updated_at":"2026-04-05T18:28:52.000Z","dependencies_parsed_at":"2024-08-23T13:42:55.162Z","dependency_job_id":"591f5a2a-a241-4438-9ff6-67e71bcee23d","html_url":"https://github.com/Ginsakura/MUSYNXSave","commit_stats":null,"previous_names":["ginsakura/musynxsave"],"tags_count":107,"template":false,"template_full_name":null,"purl":"pkg:github/Ginsakura/MUSYNXSave","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ginsakura%2FMUSYNXSave","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ginsakura%2FMUSYNXSave/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ginsakura%2FMUSYNXSave/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ginsakura%2FMUSYNXSave/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ginsakura","download_url":"https://codeload.github.com/Ginsakura/MUSYNXSave/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ginsakura%2FMUSYNXSave/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31448219,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T15:22:31.103Z","status":"ssl_error","status_checked_at":"2026-04-05T15:22:00.205Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["musynx","python3","save","save-manager","steam-games","tkinter","tkinter-gui"],"created_at":"2024-11-19T01:19:57.322Z","updated_at":"2026-04-05T20:04:43.117Z","avatar_url":"https://github.com/Ginsakura.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 同步音律喵赛克 Steam端 存档解析工具\nMUSYNX Steam Client Savefile Decode \u0026 Analyze Tool\n\n~~C#重构版本: [MUSYNCSaveCSharp](https://github.com/Ginsakura/MUSYNCSaveCSharp)~~\n\n[down_svg]: https://img.shields.io/github/downloads/ginsakura/MUSYNCSave/total?label=All%20Downloads\n[all_release]: https://github.com/Ginsakura/MUSYNCSave/releases\n[commit_svg]: https://img.shields.io/github/commit-activity/t/ginsakura/MUSYNCSave?label=All%20Commits\n[commit]: https://github.com/Ginsakura/MUSYNCSave/commits\n[license_svg]: https://img.shields.io/github/license/ginsakura/MUSYNCSave?label=License\n[![All releases][down_svg]][all_release]\n[![All commit activity (branch)][commit_svg]][commit]\n[![License][license_svg]](./LICENSE)\n\n[latest_prerelease_svg]: https://img.shields.io/github/v/release/ginsakura/MUSYNCSave?display_name=release\u0026label=Latest%20PreRelease\u0026include_prereleases\n[all_tags]: https://github.com/Ginsakura/MUSYNCSave/tags\n[![Latest tag][latest_prerelease_svg]][all_tags]\n\n[latest_release_svg]: https://img.shields.io/github/v/release/ginsakura/MUSYNCSave?display_name=release\u0026label=Latest%20Release\n[release]: https://github.com/Ginsakura/MUSYNCSave/releases/latest\n[![latest release][latest_release_svg]][release]\n\n---\n\n## 目录 (Table of Contents)\n* [使用说明 (How to use)](#使用说明-how-to-use)\n* [界面展示](#界面展示)\n* [开发计划](#开发计划)\n  * [未来的计划](#未来的计划)\n  * [进行中的计划](#进行中的计划)\n  * [已完成的计划](#已完成的计划)\n* [版本发布说明](#版本发布说明)\n* [功能控制模块](#功能控制模块)\n  * [高级功能简介](#高级功能简介)\n* [更新日志](#更新日志)\n  * [Version 3.0.0](#version-300)\n* [郑重声明](#郑重声明)\n\n---\n\n## 使用说明 (How to use)\n\n1. [English (English, `en-us`) v3.0.0](./ReadmeResources/How_to_use.en.md)\n2. [简体中文 (Simplified Chinese, `zh-cn`) v3.0.0](./ReadmeResources/How_to_use.zh.md)\n\n## 界面展示\n\n\u003cdetails\u003e\n\u003csummary\u003e点击展开界面展示\u003c/summary\u003e\n\n![主页面](./ReadmeResources/main.jpg \"主页面\")\n![score-diff页面](./ReadmeResources/score-diff.jpg \"score-diff页面\")\n![HitDelay页面](./ReadmeResources/HitDelay.png \"HitDelay页面\")\n![HitAnalyze-Pie\u0026Bar页面](./ReadmeResources/HitAnalyze-Pie\u0026Bar.png \"HitAnalyze-Pie\u0026Bar页面\")\n![HitAnalyze-Line页面](./ReadmeResources/HitAnalyze-Line.png \"HitAnalyze-Line页面\")\n![AllHitAnalyze-Pie页面](./ReadmeResources/AllHitAnalyze.jpg \"AllHitAnalyze页面\")\n![AvgAcc-SYNC.Rate回归分析页面](./ReadmeResources/AvgAcc-SYNC.Rate.jpg \"AvgAcc-SYNC.Rate回归分析\")\n\n\u003c/details\u003e\n\n## 软件调用结构\n\u003cdetails\u003e\n\u003csummary\u003e点击展开软件调用结构\u003c/summary\u003e\n\n\u003c/details\u003e\n\n## 开发计划\n\n### 未来的计划\n- [ ] ( 0% ) 提供全球排行榜显示功能 (需要调用 Steam API)\n- [ ] ( 0% ) 使用文件夹内指定文件名的方式自定义美化 UI\n\n### 进行中的计划\n- [ ] ( 0% ) 使用 mod 加载器代替 DLL 注入 ([[1]](www.kimi.com/share/19b65045-1262-8dd7-8000-000083def80e))\n- [ ] ( 80% ) 使用 UDP 通信代替 UIAutomation 进行结果获取\n\n### 已完成的计划\n\n\u003cdetails\u003e\n\u003csummary\u003e点击查看已完成的详细信息\u003c/summary\u003e\n\n- [x] 主程序目录通过 exe 文件进行判断\n- [x] 将提供一个文档来演示使用方法 (在写了, 咕咕咕)\n- [x] 一键获取上次谱面游玩结果\n- [x] 使用 GitHub Action workflow 实现自动分发\n- [x] 重排版 `SongName.json`\n- [x] 滑动条在重加载后保持位置不变\n- [x] 隐藏 cmd 窗口\n- [x] 将像 Windows 资源管理器一样使用列标题栏进行排序\n- [x] 将高级功能整合为 `ExtraFunction.cfg` 配置文件\n- [x] 日志工具提上日程\n\n\u003c/details\u003e\n\n---\n\n## 版本发布说明\n* **NoConsole 版本**：没有命令提示符界面，适合日常正常使用。\n* **WithConsole 版本**：带有命令提示符界面，适合出现 bug 时快速定位错误发生地点以及原因。\n\n## 功能控制模块\n\n\u003cdetails\u003e\n\u003csummary\u003e点击查看控制参数详解\u003c/summary\u003e\n\n\u003e 于 `./musync_data/bootcfg.json` 文件中启用/禁用对应功能。\n\n| 配置项 | 默认值 | 值类型 | 配置说明 |\n| :--- | :--- | :--- | :--- |\n| `Version` | `自动获取` | string | 记录当前工具的版本号 |\n| `LoggerFilter` | `'INFO'` | string | 控制台日志输出的最低过滤等级 |\n| `CheckUpdate` | `false` | boolean | 是否启用自动检查更新 |\n| `DllInjection` | `false` | boolean | 是否启用 DLL 注入以开启**高级功能** |\n| `CreateUdpWhenStartup` | `false` | boolean | 在开启高级功能的前提下，是否在应用程序启动时立即启动 UDP 接收端 |\n| `SystemDPI` | `自动获取` | string | 读取系统 DPI，提供 DPI 窗体修正 (未实现) |\n| `DonutChartinHitDelay` | `false` | boolean | 是否在单次游玩统计中显示击打延迟环形图 |\n| `DonutChartinAllHitAnalyze` | `false` | boolean | 是否在全局统计中显示击打延迟环形图 |\n| `NarrowDelayInterval` | `true` | boolean | 是否在单次游玩统计中使用更狭窄的击打区间来计算平均偏移值 (Delay)\u003cbr\u003e`true` = ±45ms, `false` = ±90ms |\n| `ConsoleAlpha` | `75` | int | 游戏控制台窗口的不透明度\u003cbr\u003e(取值范围 [0,100]，100 为完全不透明，不建议低于 30) |\n| `ConsoleFont` | `'霞鹜文楷等宽'` | string | 游戏控制台窗口的字体 |\n| `ConsoleFontSize` | `36` | int | 游戏控制台窗口的字号 |\n| `MainExecPath` | `自动获取` | string | 游戏主程序所在的绝对路径 |\n| `ChangeConsoleStyle` | `false` | boolean | 是否启用自定义喵赛克游戏本体控制台窗口样式 |\n\n\u003c/details\u003e\n\n### 高级功能简介\n\n下列组件对游戏客户端有直接修改，请谨慎使用。\n\n\u003e **⚠️ 警告：核心文件修改，请务必提前备份！注意备份！注意备份！**\n\u003e \n\u003e **免责声明**：请自行决定是否使用，使用过程中出现任何意外导致的数据丢失或封号，后果自负，开发者概不负责。\n\n**HitDelay 模块用法：**\n启用 DLL 注入后，在本次游戏进行首次谱面游玩时，会打开一个 cmd 窗口用于实时显示击打延迟，\n**请勿关闭该窗口**，关闭该控制台窗口会导致游戏一并退出，不想看可以将其最小化。\n\n`HitDelay.py`：用于读取控制台中的击打信息并生成可视化数据表，标题栏提供以下三个维度的统计信息：\n* **AvgDelay (平均击打延迟)**：即所有击打的平均值，能够一定程度上提示游戏延迟应该调整的数值（可能有较大偏差，仅供参考）。例如：游戏内判定补偿是 `+010ms`，AvgDelay 数值为 `-5ms`，那么就应将游戏内判定补偿减少 5ms。具体调整幅度请多次实测。\n* **Notes (总按键数)**：谱面中存在 note 的总数目。\n* **Combo (连击数)**：本次游玩的Combo和FullCombo。\n* **AvgAcc (平均击打偏差)**：即所有击打的绝对值的平均值，该值总为正数。该值反映了您当前谱面本次游玩击打 Key 时机的精准度，与本次游玩的结算成绩密切相关：**该值越小，说明击打越精准**（当该值小于 45ms 时，您的分值就会越高）。\n\n## 更新日志\n\n### Version 3.0.0\n#### Release 1\n1. 更新\n    1. xxx\n2. 修复\n    1. xxx\n3. 优化\n    1. 更改数据库结构，增加模式、难度、连击字段 (v3 -\u003e v4)\n    2. 深度重构代码，使其全面符合 `PEP 8` 规范\n    3. 优化 patch 用 C# 代码，关闭控制台的 `快速编辑` 模式；\n    3. 控制台提供更丰富的数据输出\n    3. 优化`Tookit`中数据库升级迁移逻辑\n4. 重构\n    1. `AllHitAnalyze`: 优化底层数据处理逻辑与图表渲染性能展示\n    2. `AvgAcc-SyncAnalyze`: 引入 `Diff` 轴映射，将平面图表重构为 3D 景深散点图\n    3. `Diffculty_ScoreAnalyze`: 以更现代、更解耦的架构重新绘制图表并展示数据\n    4. `FileEncoding`: 引入防溢出屏障，以更安全的方式处理文件的 meta data，确保跨平台文件操作与 I/O 安全性\n    5. `Toolkit`: 完善了文件哈希校验、资源释放的并发安全性设计，并封装了安全的 SQLite 事务流转\n    6. `Resource`: 拆分模块, 将其拆分为`config_manager`, `map_info`, `songname_manager`, `save_data_manager`三个独立模块\n    7. `bootcfg.json`: 缩减配置项\n    7. `HitDelay`: 完全重构代码和界面, 适配最新的(v4)数据库和游戏控制台输出内容\n\n\n### 旧版本更新日志\n#### [旧版本更新日志 (2.0.0 - 2.1.0)](./ReadmeResources/OldVersionUpdateLog.md#旧版本更新日志-200---210)\n#### [旧版本更新日志 (1.0.0 - 1.2.8rc5)](./ReadmeResources/OldVersionUpdateLog.md#旧版本更新日志-100---128rc5)\n---\n\n## 郑重声明：我 **不会** 对存档文件进行任何 **写** 操作\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fginsakura%2Fmusynxsave","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fginsakura%2Fmusynxsave","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fginsakura%2Fmusynxsave/lists"}