{"id":41709620,"url":"https://github.com/wolfbolin/pymemobird","last_synced_at":"2026-01-24T21:41:09.542Z","repository":{"id":52312711,"uuid":"185007210","full_name":"wolfbolin/pymemobird","owner":"wolfbolin","description":"咕咕机开发工具包--Python","archived":false,"fork":false,"pushed_at":"2022-12-08T03:13:06.000Z","size":85,"stargazers_count":3,"open_issues_count":2,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-21T12:59:45.898Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/wolfbolin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-05-05T09:07:16.000Z","updated_at":"2025-05-13T16:52:57.000Z","dependencies_parsed_at":"2023-01-24T08:30:12.000Z","dependency_job_id":null,"html_url":"https://github.com/wolfbolin/pymemobird","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/wolfbolin/pymemobird","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wolfbolin%2Fpymemobird","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wolfbolin%2Fpymemobird/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wolfbolin%2Fpymemobird/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wolfbolin%2Fpymemobird/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wolfbolin","download_url":"https://codeload.github.com/wolfbolin/pymemobird/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wolfbolin%2Fpymemobird/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28737611,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T21:19:41.845Z","status":"ssl_error","status_checked_at":"2026-01-24T21:13:38.675Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2026-01-24T21:41:09.469Z","updated_at":"2026-01-24T21:41:09.534Z","avatar_url":"https://github.com/wolfbolin.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pymemobird\n![Windows](https://img.shields.io/badge/Windows-support-green.svg)\n![Linux](https://img.shields.io/badge/Linux-support-green.svg)\n![Python](https://img.shields.io/badge/Python-3.6-blue.svg)\n![License](https://img.shields.io/badge/License-MPL_2.0-orange.svg)\n\n咕咕机开发工具包，Github源码地址：[https://github.com/wolfbolin/pymemobird](https://github.com/wolfbolin/pymemobird)\n\n\u003e 本工具包使用官方提供的API接口进行开发，支持常用接口的调用。采用面向对象的编程形式，减少使用者对调用过程的学习过程。理论上可在全系列的打印机上运行，采用蓝牙的打印机需要保持手机连接。\n\n*更新日志请看到 [更新日志](#三、更新日志)，开发者主页 [https://wolfbolin.com](https://wolfbolin.com)*\n\n## 一、安装方式\n\n请使用pip安装该工具包\n\n```\n$ pip install pymemobird\n```\n\n## 二、使用说明\n\n### 1、使用前提\n\n首先你需要拥有一台**咕咕机**并且申请开发者KEY，开发者权限申请网址：[http://open.memobird.cn](http://open.memobird.cn)\n\n#### 1.1、数据字典\n\n| 单词          | 示例                             | 含义                  |\n| ------------- | -------------------------------- | --------------------- |\n| access_key    | 7ffa6c1fc9f340e6969c74f1d4b6aa50 | 开发者凭证/申请的ak值 |\n| user_identify | 2778553                          | 咕咕号/用户唯一标识符 |\n| user_id       | 840268                           | 绑定设备后的用户凭证  |\n| memobird_id   | 9d15e1b2671043ee                 | 咕咕机设备编号        |\n| paper_id      | 35331944                         | 纸条编号              |\n| print_flag    | 'success','printing','error'     | 纸条状态              |\n| http_proxy    | \"http://127.0.0.1:12639\"         | HTTP网络代理          |\n| https_proxy   | \"https://example.com\"            | HTTPS网络代理         |\n\n\n\n#### 1.2、代码样例\n\n```python\n# coding=utf-8\nimport time\nimport base64\nimport pymemobird\n\npymemobird.http_proxy = \"http://127.0.0.1:12639\"\n\nif __name__ == '__main__':\n    # 申请到的开发者编号\n    access_key = '7ffa6c1fc9f340e6969c74f1d4b6aa50'\n\n    # 初始化用户\n    user_identify = '2778553'\n    user = pymemobird.User(access_key, user_identify)\n    print('用户初始化...%s' % user.is_init())  # 验证初始化（可选）\n\n    # 初始化设备\n    memobird_id = '9d15e1b2671043ee'\n    device = pymemobird.Device(memobird_id)\n    print('设备初始化...%s' % device.is_init())  # 验证初始化（可选）\n\n    # 绑定用户\n    device.bind_user(user)\n    print('绑定用户...%s' % device.is_bind())  # 验证绑定状态（可选）\n\n    # 初始化纸条\n    paper = pymemobird.Paper(access_key)\n    print('纸条初始化...%s' % paper.is_init())  # 验证初始化（可选）\n\n    # 向纸条中添加文本和图片\n    paper.add_text('Hello,world!你好呀！')\n    pic = open('Logo.jpg', 'rb')\n    paper.add_pic(pic)\n    pic.close()\n    pic = open('Logo.jpg', 'rb')\n    pic_data = pic.read()\n    pic_base64 = base64.b64encode(pic_data)\n    paper.add_base64_pic(pic_base64)\n    pic.close()\n\n    # 打印纸条相关操作\n    print('开始打印...%s' % paper.is_send())  # 验证纸条是否已经发送至打印列表\n    device.print_paper(paper)  # 打印纸条\n    print('开始打印...%s' % paper.is_send())  # 验证纸条是否已经发送至打印列表\n    while paper.status() == 'printing':\n        time.sleep(1)\n        paper.sync()  # 刷新纸条打印状态\n        print('打印状态...%s' % paper.status())  # 获取纸条打印状态\n\n```\n\n\n\n### 2、用户类User\n\n该类功能较少，仅保存了用户的凭证信息\n\n#### 2.1、声明用户类\n\n* 函数名\n  * `__init__(self, access_key, user_identify)`\n\n* 参数\n  * `access_key`：开发者访问凭证\n  * `user_identify`：用户身份标识\n\n#### 2.2、初始化验证\n\n验证用户实例是否已经传入的初始化参数\n\n* 函数名\n  * `is_init(self)`\n\n* 参数\n  * 无\n* 返回\n  * 检测结果True/False\n\n### 3、设备类Device\n\n完成设备绑定，纸条打印等功能\n\n#### 3.1、声明用户类\n\n* 函数名\n  \n* `__init__(self, memobird_id)`\n  \n* 参数\n  * `memobird_id`：咕咕机设备编号\n  \n\n#### 3.2、初始化验证\n\n验证设备实例是否已经传入的初始化参数\n\n* 函数名\n  * `is_init(self)`\n\n* 参数\n  * 无\n* 返回\n  * 检测结果True/False\n\n#### 3.3、用户绑定\n\n将用户标识与设备关联，获取纸条发送的凭证信息\n\n- 函数名\n  - `bind_user(self, user)`\n- 参数\n  - 用户类（User）实例\n- 返回\n  - 修改并返回设备实例\n- 异常\n  - 操作异常OperateError：使用未完成初始化的类\n  - 网络异常NetworkError：在绑定设备时发生异常\n\n#### 3.4、绑定验证\n\n验证设备实例是否已经绑定用户\n\n- 函数名\n  - `is_bind(self)`\n- 参数\n  - 无\n- 返回\n  - 检测结果True/False\n\n#### 3.5、打印纸条\n\n将纸条类中的信息发送至打印队列，并更新纸条状态。一条纸条可以发送多次。\n\n- 函数名\n  - `print_paper(self, paper)`\n- 参数\n  - 纸条类（Paper）实例\n- 返回\n  - 修改并返回纸条实例\n- 异常\n  - 操作异常OperateError：使用未完成初始化的类\n  - 网络异常NetworkError：在打印纸条时发生异常\n\n### 4、纸条类Paper\n\n该类可完成纸条内容的连接，并可以刷新纸条打印状态\n\n#### 4.1、声明用户类\n\n- 函数名\n- `__init__(self, access_key)`\n- 参数\n  - `access_key`：开发者访问凭证\n\n#### 3.2、初始化验证\n\n验设备实例是否已经传入的初始化参数\n\n- 函数名\n  - `is_init(self)`\n- 参数\n  - 无\n- 返回\n  - 检测结果True/False\n\n#### 3.3、纸条发送验证\n\n验证纸条打印任务是否已经发送至打印队列\n\n- 函数名\n  - `is_send(self)`\n- 参数\n  - 无\n- 返回\n  - 检测结果True/False\n\n\n\n#### 3.4、添加文本\n\n在纸条最后添加文本（并不会立即打印），可以多次添加。\n\n- 函数名\n  - `add_text(self, text)`\n- 参数\n  - `text`：需要在纸条上打印的纯文本信息，支持中文（GBK）打印，支持转义符\n- 返回\n  - 修改并返回纸条类（Paper）实例\n\n#### 3.5、添加图片\n\n在纸条最后添加图片（并不会立即打印），可以多次添加。\n\n程序将利用官方API完成图片的预处理，不使用PIL\n\n- 函数名\n  - `add_pic(self, file)`\n- 参数\n  - `file`：需要在纸条上打印的图片对象（需要支持read()获取字符串的对象即可），支持JPG、PNG格式\n- 返回\n  - 修改并返回纸条类（Paper）实例\n- 异常\n  - 操作异常OperateError：使用未完成初始化的类\n  - 网络异常NetworkError：在打印纸条时发生异常\n\n#### 3.6、添加Base64图片\n\n在纸条最后添加Base64编码的图片（并不会立即打印），可以多次添加。\n\n程序将利用官方API完成图片的预处理，不使用PIL\n\n- 函数名\n  - `add_base64_pic(self, file)`\n- 参数\n  - `file`：图片经过Base64编码的字符串，支持JPG、PNG格式\n- 返回\n  - 修改并返回纸条类（Paper）实例\n- 异常\n  - 操作异常OperateError：使用未完成初始化的类\n  - 网络异常NetworkError：在打印纸条时发生异常\n\n#### 3.7、获取打印状态\n\n获取当前纸条的打印状态，可能的状态有`success`,`printing`,`error`\n\n- 函数名\n  - `status(self, file)`\n- 参数\n  - 无\n- 返回\n  - 返回纸条的打印状态\n- 异常\n  - 操作异常OperateError：使用未完成初始化的类\n\n#### 3.8、同步纸条状态\n\n同步此刻该纸条的打印状态\n\n- 函数名\n  - `sync(self)`\n- 参数\n  - 无\n- 返回\n  - 修改并返回纸条类（Paper）实例\n- 异常\n  - 操作异常OperateError：使用未完成初始化的类\n  - 网络异常NetworkError：在打印纸条时发生异常\n\n#### 3.9、获取纸条全文\n\n响应值为经过编码的纸条内容。\n\n包内部调用，若有需要请查看源码。\n\n#### 3.10、更新纸条状态\n\n包内部调用，若有需要请查看源码。\n\n### 三、更新日志\n\n### v0.2.2\n\n新增\n\n* 新增代理配置，适应在复杂网络环境下的代理需求\n\n修复\n\n* 换用POST接口，修复GET接口在代理模式下的异常\n\n### v0.2.1\n\n修复\n\n* 多次声明纸条对象时，旧数据未清空导致的重复打印问题。\n\n### v0.2.0\n\n正式版\n\n测试问题：纸条打印顺序与添加顺序不同\n\n新增功能：`add_base64_pic`函数，可实现图片Base64数据直接添加。\n\n### v0.1.0\n\n正式版\n\n通过测试，修复若干BUG，样例可运行\n\n### v0.0.1\n\n测试版\n\n\n\n****\n\n**Designed by WolfBolin**\n\n![Logo](Logo.jpg)\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwolfbolin%2Fpymemobird","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwolfbolin%2Fpymemobird","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwolfbolin%2Fpymemobird/lists"}