2022年4月

有缘人你好~

我们又在《Learn XXX the Coders Way》系列相见啦~这次是番外内容(大概也算姊妹篇?)的第一篇,《Do XXX the Coders Way》

引子

最近几个周是被工作淹没的几周,原本计划要写的《用程序员的方式学习给视频起标题》还完全没有动工(逃……
1.png

而这件事呢,起因是我有个朋友……

她是一个作词人(嗯,一个特别高产的作词人),经常需要给各种音乐发行商投稿,而音乐发行商们收稿件……

是通过加微信!!!

我感觉这应该也不是什么巨大的工作量……直到她告诉我,她联系人列表里躺着的收歌老师有三位数……即便是最少的时候,她也需要给几十个“收歌老师”投稿。

我俩一起捋了一下投稿的操作流程:

2.png

其实在投稿的老师很少的时候,完全没有任何压力;不过量变产生质变,当数量达到数百的时候,这件事完全变成了另一个概念……

如果转发一次文件的操作时间为平均10s(算上搜索联系人,或者滑动列表选择联系人的时间),我们来算算完成投稿给500个“收歌老师”的总时间:

3.png
算下来完成这样一波操作,一共需要83分钟,也就是如果每两天写一首词并投稿的话,每天平均要花大半个小时去投稿!

4.png

对于被996疯狂压榨后(哦原来这是我),本来就只剩数个小时,只想“过一段自己的生活”的人,简直不能承受!

作弊……

谁能忍受每天要花掉额外的一小时去做一些重复性的工作呢?当然是不行啦!我们得想办法作弊!

如果换个聊天工具,比如 Telegram 或者 Discord ,我们很轻松就能通过官方提供的API接口来做这些事情,比如自动把指定的文件发送给指定的联系人

但是对于微信这种产品,我们很难做到这样的事情,即便可以做,也有很高的被封号的危险。

作案工具调研

朋友给我发过来一个参考的“营销助手”类的工具,可以提供群发功能,但是收费非常高昂。

邀请朋友可以获得两小时免费试用时间,我试用了一下,发现工具使用了安卓的“无障碍”特性,用来结构化的访问软件UI,实现自动化操作。

对于 iOS 用户,可以考虑直接使用官方收编的捷径功能,文末附有 iOS 捷径功能的参考文档。

经过一番搜索,我发现了下面这些备选:

AutoJS

5.png

  • 链接:https://pro.autojs.org/
  • 运行环境:手机
  • 原理:调用系统的无障碍API来完成自动操作,类似按键精灵,但是更加人性化
  • 缺陷:

    • API 很不稳定,在我的 MIUI 12 上根本无法获取到无障碍元素,虽然因为购买了 Pro 有些不甘,但最后还是放弃了。
    • 软件本身使用非常麻烦,需要在VSCode上进行复杂的配置才能连接到手机,软件本身的使用体验不佳,不过特别在意隐私的可以使用这种完全本地的开发方式。

Hamibot

6.png

  • 链接:https://hamibot.com/
  • 运行环境:手机
  • 原理:同样是使用无障碍API完成自动操作
  • 缺陷:是 AutoJS 的 Fork,使用起来非常方便,产品设计非常人性化,缺点是必须登录并在平台上使用脚本编辑功能(这个编辑功能跟 VSCode 比就非常弱了),但这也正是它的优点—易于使用。

网易AirTest

7.png

  • 链接:https://airtest.netease.com/
  • 运行环境:PC + 手机
  • 原理:可以使用截图+图像识别,也可以安装一个工具包后使用类似无障碍API的方式操作手机
  • 缺陷:需要同时运行电脑跟手机,同时……大概是因为年久失修,无障碍服务的安卓服务包已经无法正常运行,执行的时候会崩溃,一番尝试后直接放弃了,如果是通用的游戏测试,估计能正常工作。

结论

最后还是选择了 Hamibot 作为了作案工具,其他的工具多少都有一些问题。

同时,在产品设计上,我们也可以看出来,Hamibot 虽然是 AutoJSFork ,但是他们明显对于普通用户更加友好,是“一眼能看懂用途”的 APP 说明。

成果

这里就略过各种操作过程了,直接贴一下最后的成果。

操作流程

→ 收藏DEMO文件和歌词文件到微信文件收藏

→ 给所有要投稿的特定联系人加上标签(相信一般人已经加上标签了)

→ 在脚本配置界面,配置DEMO文件名歌词文件名,以及要发送到的目标联系人标签

→ 启动脚本,等待自动发送即可~

脚本链接:https://gist.github.com/winkidney/d7afa463d9e2f969f662b476ba0b1a57

避坑指南

  • 在选择控件的时候,很多控件是不可点击的,请先获取控件的坐标再点击他们
  • 有时候,一个元素,在A界面和B界面同时存在(比如一段文本),所以有时候遇到点击失效,请重新给元素增加一些特殊的识别选择器,以便能成功识别和点击。

嘘!

其实最后朋友没有成功用上这个工具hhhh,因为她的安卓机跟我的差异比较大,在我机器上完全正常,在她机器上却导致手机疯狂发烫(然而功能却无法执行),怀疑是安卓机的 API 差异导致的兼容性问题。

得亲自在手机上调一下才能知道是什么问题hhhh(匿了)。

参考