mys-goods-tool


Namemys-goods-tool JSON
Version 2.1.0 PyPI version JSON
download
home_pagehttps://github.com/Ljzd-PRO/Mys_Goods_Tool
Summary米游社商品兑换工具|短信验证登录|终端TUI界面
upload_time2023-07-20 21:00:12
maintainer
docs_urlNone
authorLjzd-PRO
requires_python>=3.9,<3.12
license
keywords mihoyo mihoyobbs genshin impact textual tui
VCS
bugtrack_url
requirements tenacity requests ping3 ntplib pydantic loguru httpx rich textual socksio apscheduler uvloop pyinstaller pytest pytest-html pytest-asyncio flake8 pydevd-pycharm
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div>
  <img alt="Mys_Goods_Tool 预览" src="https://user-images.githubusercontent.com/63289359/235797444-21a86294-609e-4c7a-9d7d-5d3683fe6ab2.png" width="45%" />
  <img alt="Mys_Goods_Tool 预览2" src="https://user-images.githubusercontent.com/63289359/235799237-3039c3e0-8fdb-4c12-957b-afb50f34625c.png" width="45%" />
</div>

# 米游社商品兑换工具

<div>
  <img alt="CodeFactor" src="https://www.codefactor.io/repository/github/ljzd-pro/mys_goods_tool/badge?style=for-the-badge">
  <img alt="最新发行版" src="https://img.shields.io/github/v/release/Ljzd-PRO/Mys_Goods_Tool?logo=python&style=for-the-badge">
  <img alt="最后提交" src="https://img.shields.io/github/last-commit/Ljzd-PRO/Mys_Goods_Tool?style=for-the-badge">
  <img alt="代码行数" src="https://img.shields.io/tokei/lines/github/Ljzd-PRO/Mys_Goods_Tool?style=for-the-badge">
  <img alt="构建结果" src="https://img.shields.io/github/actions/workflow/status/Ljzd-PRO/Mys_Goods_Tool/build-v2.yml?event=pull_request&style=for-the-badge">
  <img alt="Python版本兼容性测试" src="https://img.shields.io/github/actions/workflow/status/Ljzd-PRO/Mys_Goods_Tool/python-package.yml?event=pull_request&label=Versions%20Test&style=for-the-badge">
</div>

### 更新说明

v2.1.0

- 在兑换开始后的一段时间内不断尝试兑换,直到成功
  > 完整流程:兑换开始后,数个线程同时进行,每个线程在一段时间内重复发送兑换请求  
  >
  原因:[太早兑换可能被认定不在兑换时间](https://github.com/Ljzd-PRO/Mys_Goods_Tool/discussions/135#discussioncomment-6487717)
- 兑换开始后将不会延迟兑换,用户数据文件中 `preference.exchange_latency` 将作为同一线程下每个兑换请求之间的时间间隔
  > `preference.exchange_latency` 为列表类型,包含两个浮点数,分别为最小延迟和最大延迟,单位为秒,可参考默认值
- 兑换请求日志内容增加了发送请求时的时间戳

v2.1.0-beta.1

- 兑换请求Headers增加与修改了 `Referer`, `x-rpc-device_fp`, `x-rpc-verify_key`, `Origin` 等字段,可能修复兑换失败的问题
- 修复登陆时因为连接断开(client has been closed)而导致登陆失败的问题
- 防止因配置文件中默认存在 `device_config`, `salt_config` 而导致更新后默认配置被原配置覆盖的问题
- 若需要修改 `device_config` 配置,修改后还设置用户数据文件中 `preference.override_device_and_salt` 为 `true` 以覆盖默认值
- 修复Unix下即使安装了 uvloop 也找不到,无法应用的问题

## 功能和特性

- [x] 使用 [Textual](https://github.com/Textualize/textual) 终端图形界面库,支持 Windows / Linux / macOS 甚至可能是移动端SSH客户端
- [x] 短信验证码登录(只需接收一次验证码)
- [x] 内置人机验证页面,无需前往官网验证
- [x] 多账号支持
- [x] 支持米游社所有分区的商品兑换

### 预览图

<details>
  <summary>短信验证登录</summary>
  <img src="https://user-images.githubusercontent.com/63289359/235790425-7c502a69-baac-4ced-ba07-d068a88a7ae9.png" alt="短信验证登录页面" />
  <img src="https://user-images.githubusercontent.com/63289359/235790979-85954be8-023f-47e0-bb69-bb16385905d4.png" alt="人机验证页面" />
</details>

<details>
  <summary>管理兑换计划</summary>
  <img src="https://user-images.githubusercontent.com/63289359/235791200-d1a7c8f0-9a9a-4fcc-91bf-69fe397e6420.png" alt="选择目标商品页面" />
  <img src="https://user-images.githubusercontent.com/63289359/235791332-3d8ea836-7d0b-4dbf-b643-81c65eaa5082.png" alt="确认添加计划页面" />
  <img src="https://user-images.githubusercontent.com/63289359/235791435-69edf6f7-9abf-4c81-8da4-44a486c6d362.png" alt="管理计划页面" />
</details>

<details>
  <summary>进入兑换模式</summary>
  <img src="https://user-images.githubusercontent.com/63289359/235791620-bf32692d-a521-49b3-bf2a-23d7012b6fff.png" alt="兑换模式页面" />
</details>

## 使用说明

参考 [🛠️ 下载安装](https://github.com/Ljzd-PRO/Mys_Goods_Tool/wiki/Installation)

## 常见问题

参考 [❓ 常见问题](https://github.com/Ljzd-PRO/Mys_Goods_Tool/wiki/Troubleshooting)

## 代码结构

参考 [📃 代码结构](https://github.com/Ljzd-PRO/Mys_Goods_Tool/wiki/Source-Structure)

## 其他

- [**🔗完整说明文档**](https://github.com/Ljzd-PRO/Mys_Goods_Tool/wiki)

- 仅供学习时参考

- 相似项目推荐:  \
  **mysTool - 米游社辅助工具插件**  \
  简介:NoneBot2 插件 | 米游社工具-每日米游币任务、游戏签到、商品兑换、免抓包登录、原神树脂提醒  \
  🔗 https://github.com/Ljzd-PRO/nonebot-plugin-mystool

- [🔗Bug 反馈](https://github.com/Ljzd-PRO/Mys_Goods_Tool/issues)  
- 如果你知道如何修复一些Bug和新增功能,也欢迎提交你的修订代码 [🔗Pull requests](https://github.com/Ljzd-PRO/Mys_Goods_Tool/pulls)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Ljzd-PRO/Mys_Goods_Tool",
    "name": "mys-goods-tool",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.9,<3.12",
    "maintainer_email": "",
    "keywords": "mihoyo,mihoyobbs,genshin impact,textual,tui",
    "author": "Ljzd-PRO",
    "author_email": "ljzd@office.ljzd-pro.ml",
    "download_url": "https://files.pythonhosted.org/packages/ee/3b/4ea51d1dddee0ab8cd13113036c1546925b69ac2221fa6c8b92fe2947ee5/mys_goods_tool-2.1.0.tar.gz",
    "platform": null,
    "description": "<div>\n  <img alt=\"Mys_Goods_Tool \u9884\u89c8\" src=\"https://user-images.githubusercontent.com/63289359/235797444-21a86294-609e-4c7a-9d7d-5d3683fe6ab2.png\" width=\"45%\" />\n  <img alt=\"Mys_Goods_Tool \u9884\u89c82\" src=\"https://user-images.githubusercontent.com/63289359/235799237-3039c3e0-8fdb-4c12-957b-afb50f34625c.png\" width=\"45%\" />\n</div>\n\n# \u7c73\u6e38\u793e\u5546\u54c1\u5151\u6362\u5de5\u5177\n\n<div>\n  <img alt=\"CodeFactor\" src=\"https://www.codefactor.io/repository/github/ljzd-pro/mys_goods_tool/badge?style=for-the-badge\">\n  <img alt=\"\u6700\u65b0\u53d1\u884c\u7248\" src=\"https://img.shields.io/github/v/release/Ljzd-PRO/Mys_Goods_Tool?logo=python&style=for-the-badge\">\n  <img alt=\"\u6700\u540e\u63d0\u4ea4\" src=\"https://img.shields.io/github/last-commit/Ljzd-PRO/Mys_Goods_Tool?style=for-the-badge\">\n  <img alt=\"\u4ee3\u7801\u884c\u6570\" src=\"https://img.shields.io/tokei/lines/github/Ljzd-PRO/Mys_Goods_Tool?style=for-the-badge\">\n  <img alt=\"\u6784\u5efa\u7ed3\u679c\" src=\"https://img.shields.io/github/actions/workflow/status/Ljzd-PRO/Mys_Goods_Tool/build-v2.yml?event=pull_request&style=for-the-badge\">\n  <img alt=\"Python\u7248\u672c\u517c\u5bb9\u6027\u6d4b\u8bd5\" src=\"https://img.shields.io/github/actions/workflow/status/Ljzd-PRO/Mys_Goods_Tool/python-package.yml?event=pull_request&label=Versions%20Test&style=for-the-badge\">\n</div>\n\n### \u66f4\u65b0\u8bf4\u660e\n\nv2.1.0\n\n- \u5728\u5151\u6362\u5f00\u59cb\u540e\u7684\u4e00\u6bb5\u65f6\u95f4\u5185\u4e0d\u65ad\u5c1d\u8bd5\u5151\u6362\uff0c\u76f4\u5230\u6210\u529f\n  > \u5b8c\u6574\u6d41\u7a0b\uff1a\u5151\u6362\u5f00\u59cb\u540e\uff0c\u6570\u4e2a\u7ebf\u7a0b\u540c\u65f6\u8fdb\u884c\uff0c\u6bcf\u4e2a\u7ebf\u7a0b\u5728\u4e00\u6bb5\u65f6\u95f4\u5185\u91cd\u590d\u53d1\u9001\u5151\u6362\u8bf7\u6c42  \n  >\n  \u539f\u56e0\uff1a[\u592a\u65e9\u5151\u6362\u53ef\u80fd\u88ab\u8ba4\u5b9a\u4e0d\u5728\u5151\u6362\u65f6\u95f4](https://github.com/Ljzd-PRO/Mys_Goods_Tool/discussions/135#discussioncomment-6487717)\n- \u5151\u6362\u5f00\u59cb\u540e\u5c06\u4e0d\u4f1a\u5ef6\u8fdf\u5151\u6362\uff0c\u7528\u6237\u6570\u636e\u6587\u4ef6\u4e2d `preference.exchange_latency` \u5c06\u4f5c\u4e3a\u540c\u4e00\u7ebf\u7a0b\u4e0b\u6bcf\u4e2a\u5151\u6362\u8bf7\u6c42\u4e4b\u95f4\u7684\u65f6\u95f4\u95f4\u9694\n  > `preference.exchange_latency` \u4e3a\u5217\u8868\u7c7b\u578b\uff0c\u5305\u542b\u4e24\u4e2a\u6d6e\u70b9\u6570\uff0c\u5206\u522b\u4e3a\u6700\u5c0f\u5ef6\u8fdf\u548c\u6700\u5927\u5ef6\u8fdf\uff0c\u5355\u4f4d\u4e3a\u79d2\uff0c\u53ef\u53c2\u8003\u9ed8\u8ba4\u503c\n- \u5151\u6362\u8bf7\u6c42\u65e5\u5fd7\u5185\u5bb9\u589e\u52a0\u4e86\u53d1\u9001\u8bf7\u6c42\u65f6\u7684\u65f6\u95f4\u6233\n\nv2.1.0-beta.1\n\n- \u5151\u6362\u8bf7\u6c42Headers\u589e\u52a0\u4e0e\u4fee\u6539\u4e86 `Referer`, `x-rpc-device_fp`, `x-rpc-verify_key`, `Origin` \u7b49\u5b57\u6bb5\uff0c\u53ef\u80fd\u4fee\u590d\u5151\u6362\u5931\u8d25\u7684\u95ee\u9898\n- \u4fee\u590d\u767b\u9646\u65f6\u56e0\u4e3a\u8fde\u63a5\u65ad\u5f00\uff08client has been closed\uff09\u800c\u5bfc\u81f4\u767b\u9646\u5931\u8d25\u7684\u95ee\u9898\n- \u9632\u6b62\u56e0\u914d\u7f6e\u6587\u4ef6\u4e2d\u9ed8\u8ba4\u5b58\u5728 `device_config`, `salt_config` \u800c\u5bfc\u81f4\u66f4\u65b0\u540e\u9ed8\u8ba4\u914d\u7f6e\u88ab\u539f\u914d\u7f6e\u8986\u76d6\u7684\u95ee\u9898\n- \u82e5\u9700\u8981\u4fee\u6539 `device_config` \u914d\u7f6e\uff0c\u4fee\u6539\u540e\u8fd8\u8bbe\u7f6e\u7528\u6237\u6570\u636e\u6587\u4ef6\u4e2d `preference.override_device_and_salt` \u4e3a `true` \u4ee5\u8986\u76d6\u9ed8\u8ba4\u503c\n- \u4fee\u590dUnix\u4e0b\u5373\u4f7f\u5b89\u88c5\u4e86 uvloop \u4e5f\u627e\u4e0d\u5230\uff0c\u65e0\u6cd5\u5e94\u7528\u7684\u95ee\u9898\n\n## \u529f\u80fd\u548c\u7279\u6027\n\n- [x] \u4f7f\u7528 [Textual](https://github.com/Textualize/textual) \u7ec8\u7aef\u56fe\u5f62\u754c\u9762\u5e93\uff0c\u652f\u6301 Windows / Linux / macOS \u751a\u81f3\u53ef\u80fd\u662f\u79fb\u52a8\u7aefSSH\u5ba2\u6237\u7aef\n- [x] \u77ed\u4fe1\u9a8c\u8bc1\u7801\u767b\u5f55\uff08\u53ea\u9700\u63a5\u6536\u4e00\u6b21\u9a8c\u8bc1\u7801\uff09\n- [x] \u5185\u7f6e\u4eba\u673a\u9a8c\u8bc1\u9875\u9762\uff0c\u65e0\u9700\u524d\u5f80\u5b98\u7f51\u9a8c\u8bc1\n- [x] \u591a\u8d26\u53f7\u652f\u6301\n- [x] \u652f\u6301\u7c73\u6e38\u793e\u6240\u6709\u5206\u533a\u7684\u5546\u54c1\u5151\u6362\n\n### \u9884\u89c8\u56fe\n\n<details>\n  <summary>\u77ed\u4fe1\u9a8c\u8bc1\u767b\u5f55</summary>\n  <img src=\"https://user-images.githubusercontent.com/63289359/235790425-7c502a69-baac-4ced-ba07-d068a88a7ae9.png\" alt=\"\u77ed\u4fe1\u9a8c\u8bc1\u767b\u5f55\u9875\u9762\" />\n  <img src=\"https://user-images.githubusercontent.com/63289359/235790979-85954be8-023f-47e0-bb69-bb16385905d4.png\" alt=\"\u4eba\u673a\u9a8c\u8bc1\u9875\u9762\" />\n</details>\n\n<details>\n  <summary>\u7ba1\u7406\u5151\u6362\u8ba1\u5212</summary>\n  <img src=\"https://user-images.githubusercontent.com/63289359/235791200-d1a7c8f0-9a9a-4fcc-91bf-69fe397e6420.png\" alt=\"\u9009\u62e9\u76ee\u6807\u5546\u54c1\u9875\u9762\" />\n  <img src=\"https://user-images.githubusercontent.com/63289359/235791332-3d8ea836-7d0b-4dbf-b643-81c65eaa5082.png\" alt=\"\u786e\u8ba4\u6dfb\u52a0\u8ba1\u5212\u9875\u9762\" />\n  <img src=\"https://user-images.githubusercontent.com/63289359/235791435-69edf6f7-9abf-4c81-8da4-44a486c6d362.png\" alt=\"\u7ba1\u7406\u8ba1\u5212\u9875\u9762\" />\n</details>\n\n<details>\n  <summary>\u8fdb\u5165\u5151\u6362\u6a21\u5f0f</summary>\n  <img src=\"https://user-images.githubusercontent.com/63289359/235791620-bf32692d-a521-49b3-bf2a-23d7012b6fff.png\" alt=\"\u5151\u6362\u6a21\u5f0f\u9875\u9762\" />\n</details>\n\n## \u4f7f\u7528\u8bf4\u660e\n\n\u53c2\u8003 [\ud83d\udee0\ufe0f \u4e0b\u8f7d\u5b89\u88c5](https://github.com/Ljzd-PRO/Mys_Goods_Tool/wiki/Installation)\n\n## \u5e38\u89c1\u95ee\u9898\n\n\u53c2\u8003 [\u2753 \u5e38\u89c1\u95ee\u9898](https://github.com/Ljzd-PRO/Mys_Goods_Tool/wiki/Troubleshooting)\n\n## \u4ee3\u7801\u7ed3\u6784\n\n\u53c2\u8003 [\ud83d\udcc3 \u4ee3\u7801\u7ed3\u6784](https://github.com/Ljzd-PRO/Mys_Goods_Tool/wiki/Source-Structure)\n\n## \u5176\u4ed6\n\n- [**\ud83d\udd17\u5b8c\u6574\u8bf4\u660e\u6587\u6863**](https://github.com/Ljzd-PRO/Mys_Goods_Tool/wiki)\n\n- \u4ec5\u4f9b\u5b66\u4e60\u65f6\u53c2\u8003\n\n- \u76f8\u4f3c\u9879\u76ee\u63a8\u8350:  \\\n  **mysTool - \u7c73\u6e38\u793e\u8f85\u52a9\u5de5\u5177\u63d2\u4ef6**  \\\n  \u7b80\u4ecb\uff1aNoneBot2 \u63d2\u4ef6 | \u7c73\u6e38\u793e\u5de5\u5177-\u6bcf\u65e5\u7c73\u6e38\u5e01\u4efb\u52a1\u3001\u6e38\u620f\u7b7e\u5230\u3001\u5546\u54c1\u5151\u6362\u3001\u514d\u6293\u5305\u767b\u5f55\u3001\u539f\u795e\u6811\u8102\u63d0\u9192  \\\n  \ud83d\udd17 https://github.com/Ljzd-PRO/nonebot-plugin-mystool\n\n- [\ud83d\udd17Bug \u53cd\u9988](https://github.com/Ljzd-PRO/Mys_Goods_Tool/issues)  \n- \u5982\u679c\u4f60\u77e5\u9053\u5982\u4f55\u4fee\u590d\u4e00\u4e9bBug\u548c\u65b0\u589e\u529f\u80fd\uff0c\u4e5f\u6b22\u8fce\u63d0\u4ea4\u4f60\u7684\u4fee\u8ba2\u4ee3\u7801 [\ud83d\udd17Pull requests](https://github.com/Ljzd-PRO/Mys_Goods_Tool/pulls)\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "\u7c73\u6e38\u793e\u5546\u54c1\u5151\u6362\u5de5\u5177|\u77ed\u4fe1\u9a8c\u8bc1\u767b\u5f55|\u7ec8\u7aefTUI\u754c\u9762",
    "version": "2.1.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/Ljzd-PRO/Mys_Goods_Tool/issues",
        "Documentation": "https://github.com/Ljzd-PRO/Mys_Goods_Tool/wiki",
        "Homepage": "https://github.com/Ljzd-PRO/Mys_Goods_Tool",
        "Repository": "https://github.com/Ljzd-PRO/Mys_Goods_Tool"
    },
    "split_keywords": [
        "mihoyo",
        "mihoyobbs",
        "genshin impact",
        "textual",
        "tui"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3ca360e57c50d75a098cf2e9be27a68c1f6111887d564bcf26f2dc822ccb5bb2",
                "md5": "c3f9f0fc06fbf31456a4f78f27f819e0",
                "sha256": "f5ef23e4d515a866fb86ec97f231d878c05a94d377e8bb74f192375d66dcacd7"
            },
            "downloads": -1,
            "filename": "mys_goods_tool-2.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c3f9f0fc06fbf31456a4f78f27f819e0",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9,<3.12",
            "size": 162684,
            "upload_time": "2023-07-20T21:00:11",
            "upload_time_iso_8601": "2023-07-20T21:00:11.031153Z",
            "url": "https://files.pythonhosted.org/packages/3c/a3/60e57c50d75a098cf2e9be27a68c1f6111887d564bcf26f2dc822ccb5bb2/mys_goods_tool-2.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ee3b4ea51d1dddee0ab8cd13113036c1546925b69ac2221fa6c8b92fe2947ee5",
                "md5": "0647090e6daacd6c973495a84b17bd1f",
                "sha256": "52a8e3a11dd7ed6e73ccf937265cbd8e8483b376edce2eda6d20ad0eba462898"
            },
            "downloads": -1,
            "filename": "mys_goods_tool-2.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "0647090e6daacd6c973495a84b17bd1f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9,<3.12",
            "size": 149209,
            "upload_time": "2023-07-20T21:00:12",
            "upload_time_iso_8601": "2023-07-20T21:00:12.512831Z",
            "url": "https://files.pythonhosted.org/packages/ee/3b/4ea51d1dddee0ab8cd13113036c1546925b69ac2221fa6c8b92fe2947ee5/mys_goods_tool-2.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-07-20 21:00:12",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Ljzd-PRO",
    "github_project": "Mys_Goods_Tool",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "tenacity",
            "specs": [
                [
                    "~=",
                    "8.2.2"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    "==",
                    "2.31.0"
                ]
            ]
        },
        {
            "name": "ping3",
            "specs": [
                [
                    "~=",
                    "4.0.4"
                ]
            ]
        },
        {
            "name": "ntplib",
            "specs": [
                [
                    "~=",
                    "0.4.0"
                ]
            ]
        },
        {
            "name": "pydantic",
            "specs": [
                [
                    "==",
                    "1.10.9"
                ]
            ]
        },
        {
            "name": "loguru",
            "specs": [
                [
                    "~=",
                    "0.7.0"
                ]
            ]
        },
        {
            "name": "httpx",
            "specs": [
                [
                    "==",
                    "0.24.1"
                ]
            ]
        },
        {
            "name": "rich",
            "specs": [
                [
                    "==",
                    "13.4.2"
                ]
            ]
        },
        {
            "name": "textual",
            "specs": [
                [
                    "<=",
                    "0.27.0"
                ]
            ]
        },
        {
            "name": "socksio",
            "specs": [
                [
                    "~=",
                    "1.0.0"
                ]
            ]
        },
        {
            "name": "apscheduler",
            "specs": [
                [
                    "~=",
                    "3.10.1"
                ]
            ]
        },
        {
            "name": "uvloop",
            "specs": [
                [
                    "~=",
                    "0.17.0"
                ]
            ]
        },
        {
            "name": "pyinstaller",
            "specs": [
                [
                    "==",
                    "5.12.0"
                ]
            ]
        },
        {
            "name": "pytest",
            "specs": [
                [
                    "~=",
                    "7.3.1"
                ]
            ]
        },
        {
            "name": "pytest-html",
            "specs": [
                [
                    "~=",
                    "3.2.0"
                ]
            ]
        },
        {
            "name": "pytest-asyncio",
            "specs": [
                [
                    "~=",
                    "0.21.0"
                ]
            ]
        },
        {
            "name": "flake8",
            "specs": [
                [
                    "~=",
                    "6.0.0"
                ]
            ]
        },
        {
            "name": "pydevd-pycharm",
            "specs": [
                [
                    "~=",
                    "231.8109.197"
                ]
            ]
        }
    ],
    "lcname": "mys-goods-tool"
}
        
Elapsed time: 0.74205s