新包自荐:MacOS-WeChat-Emacs

背景

几年前,当微信 Web 没有被封时,我一直是使用 Mojo-Weixin 通过 Emacs 来访问微信。只是很不幸,后来当微信 Web 无法访问了,该项目对我而言变得不可用。微信也没有提供公共的 api。很难有一个安全的第三方客户端。

我对微信的需求比较简单。能够快速简单地在 Emacs 中查看/发送针对某几个人的信息。我并不是需要一个完整的微信客户端。

MacOS 提供了 Accessibility API 去访问其他应用的 GUI,因此,我开发了 macos-wechat-cli 利用 Accessibility API 访问微信的 GUI,通过命令行来与微信进行交互。

macos-wechat-cli 的目标不是开发一个完整的微信客户端,而是借助 MacOS 微信 GUI,提供简单高效的 CLI 命令,能够供其他应用集成,访问微信。例如 macos-wechat-emacs

详细的细节放在我的博客里有兴趣的可以看看:

项目地址

优点

  1. 对微信没有任何侵入,没有被封禁的风险
  2. 通过 JSON 输出,可以很容易被其他应用集成
  3. 尽可优化了 Accessibility API 访问的性能,能够在 0.5 秒里完成数据更新、数据发送

缺点

  1. 如果微信升级过程中 UI 发生变化,应用可能会出问题。
  2. 当前版本有中文相关的硬编码,只支持中文微信
  3. 只展示当前 GUI 已经加载出来的信息

已知问题

  1. 所有信息都会展示为“1 条未读消息”, 因此把“1 条未读消息”展示为“无未读信息”
  2. 预览图片、链接后,需要关闭才能进行后续的操作。
  3. 微信必须打开,可以放置在后台,但不能最小化。

当前支持的功能:

  1. List chats
  2. Show messages in a chat.
  3. Send a message to a chat.
  4. Preview a image.
  5. Preview a link.

欢迎大家试用,提供意见。

当前版本 Emacs WeChat 界面还比较简陋,寻求大佬在界面审美,交互上提供帮助。

20 个赞

牛啊,至少上班的时候不用 emacs 微信来回切换了,不过 ux 确实有待改进。。 telega 可以参考

:+1:,之前想写个类似跟通花顺通信的 cli,但是不知道如何获取里面的数据。楼主有这方面的资料推荐吗?

用 MacOS 的 Accessibility Inspector 探测一下,你想要处理的的软件是否能够通过 Accessibility 获取到元素信息。然后参考一下,我 CLI 里的代码。让 AI 改写一下应该就好。

Accessibility API | Apple Developer Documentation 有详细的相关 api,不过我自己都没怎么读过。基本就是让 ai 提供一个大体代码思路。然后慢慢改写测试。

不过有的软件 Accessibility 访问不到具体的 UI 元素。那就没办法了。

1 个赞

可以多多试用一下提提意见。

周末参考一下 telega 看看能否修改一下。能有大佬 PR 就更好了。调整界面感觉很是繁琐。 :rofl: :rofl:

命令行里执行完wechat list-chats没有输出, 对微信版本有要求吗?

不太确定有没有版本要求。我的版本是:Version. 3.8.10 (28633)。

你运行时,没有任何报错信息吗?

微信不能最小化。最小化会报错。

我的版本是4.0.3.93, 非最小化也没有信息输出,也没有报错信息.

果然是版本的问题,回退到3.8就好了

4.0.3.93 UI 变化了。暂时不支持。这也展示了这个项目最大的缺点:

如果微信升级过程中 UI 发生变化,应用可能会出问题。我看看有没有什么好的办法支持不同的版本。

还好,MacOS 可以装不同版本的微信,可以快速的测试不同的版本。

你可以先装个 3.8 的玩一下,感觉开发 4.0 不是太难,容我适配一下。

嗯嗯,我先用3.8试用一下 :smile:

坏消息。常识适配了一下微信 4.0,但是没能成功,Accessibility API 能够进行的操作比在 3.8 上少。感觉这个项目要和微信 3.8 共存亡了。不知道是不是会劝退一波潜在用户。 :rofl: :rofl: :rofl:

我会为了能在emacs上使用回退到3.8版本,4.0其它的功能在Mac上也不是强需求 :grin:.不过相信微信后面也会完善对Accessibility API的支持吧

稍微调整了一下页面。好点但不多,主要就是对齐了一下。

对话列表

消息页面

很有想法的项目, 支持 不过试下来有个问题, 就是窗口最小化到托盘以后会提示:“无法获取 WeChat 的窗口。错误: -25212” 看样子是 Accessibility API 的限制?

代码bug,我已经修复了。最新的代码还没有发布到 homebrew 上。

已发布。把 wechat-cli 更新到 v0.0.3 即可。

可以显示、输入微信 emoji 表情了

所以,目前的方案高度依赖于微信本身的UI,如果变了就需要适配?

是的,而且新版本都不一定能够适配的了。 :rofl: :rofl:最新的 4.0 的微信尝试适配失败了。目前看起来,要和微信 3.8 共存亡了。好在微信一个版本应该会坚持很久。