1. 背景
某天刷微信视频号的时候,发现有些东西改版了:之前的一个star
按钮被改成了点赞,然后小红心
没变,增加了把视频号的视频添加到微信收藏的功能。我一直以为star
是收藏,小红心
是点赞,然后给一堆乱七八遭的都点了小红心
。现在看来,star
是什么不清楚,可能之前确实是收藏,只不过现在把这个迁移到了微信收藏,然后改成点赞。倒是小红心
看上去好像应该描述成喜欢
,听上去有点像知乎那一套。
就是,点赞
代表认同回答的内容和描述所表现出来的整体性倾向,有点偏向于对话题的认同;喜欢
代表偏好内容里面的细节或者是答主的风格等等,有点偏向于用户的个性化喜好;然后感谢
代表认可答主为了作出这篇回答而付出的努力。
总之这些指标有点乱,我这里也只是臆测,描述的不一定对,而且搞这么多指标不见得有什么作用。知乎貌似很早就取消了感谢
,然后在最近的更新当中隐藏喜欢
到了二级界面,回答底部只剩下点赞
、收藏
、评论
,甚至反对
都被收到了二级界面。
话题扯远了,说回来,就是我感觉改版之后,这一堆喜欢
看上去挺碍眼的,于是就想批量取消掉。但是简单查了一下运行在安卓上的脚本,发现貌似都需要开一些权限或者装装模块,感觉有那么点危险。刚好看到了华为系的多屏协同,于是就寻思把手机投影到电脑上,然后电脑端模拟鼠标点击。
2. 过程
2.1. 软件
总之查了一堆乱七八遭的教程,找到了一个 AnLink1,接着发现它是基于Scrcpy2的魔改。我寻思也用不到那么多功能,而且对自动化脚本而言肯定是简单的好,于是就决定用这个原生的轮子。啊,对,我还发现B站
有大佬用类似的思路做了个安卓自动化软件3,后来还出了个升级版4。这软件使用挺简单的,属于傻瓜式操作了。但我感觉用不到这么复杂的功能,懒得研究,还是继续折腾小脚本吧。
啊,对,还有一件事,我用的Scrcpy
是旧版,现在都到2.4
了,理论上来说没啥影响,但还是贴一下信息:
PS C:\Windows> scrcpy --version
scrcpy 2.1.1 <https://github.com/Genymobile/scrcpy>
Dependencies (compiled / linked):
- SDL: 2.28.0 / 2.28.0
- libavcodec: 60.3.100 / 60.3.100
- libavformat: 60.3.100 / 60.3.100
- libavutil: 58.2.100 / 58.2.100
- libusb: - / 1.0.26
PS C:\Windows>
以及,AnLink
好久没更新了,它基于的是比我用的还旧的Scrcpy
,所以共享手机音频到电脑用的好像还算蓝牙,也就是说如果想在共享屏幕上听声音,那在有线或者无线的基础上,连接上蓝牙。
但是从我用的版本开始,Scrcpy
已经支持通过数据线共享音频了。至于无线网络的连接方式是否支持音频,这个我还不太清楚。
2.2. 启动
2.2.1. 手机
Scrcpy
貌似是也支持无线网络连接的,但是我感觉不如有线来的直接简单且快速,总之是得先去手机上调一下设置:
首先开启开发者模式,嗯,各个机型开启的方式不同,大概就是连续点击系统版本三到五次吧,在此不做赘述,有需要的话去其他地方查一下,很简单的。
其次,进入开发者选项,不同机型的位置也不一样,需要自行查找
接着,当然是开启开发者选项,然后下滑开启USB 调试
以及USB 调试(安全设置)


然后每次手机连接到电脑之后,貌似通知栏还会弹出来USB 用于
,也就是仅限充电
、传输文件
、传输照片
什么的,我一般选的是仅限充电
,反正看上去也没啥影响。
不过倒是,我记得,有段时间貌似连接不稳,就是有线接上之后,电脑没有识别到手机,我记得好像也有原因来着,忘记当时咋解决的了,反正不行就尝试多插拔几次。
2.2.2. 电脑
我在win 10
上直接运行命令就好了:
scrcpy --shortcut-mod=lctrl --always-on-top --window-title="My device" --stay-awake
我一般是加这几个参数,使用left ctrl
,保持窗口置顶,定义窗口名称,保持窗口常亮。其他参数可以去官方文档5里面找,参数选项有好多种,这里只列举了一个文档。
然后还有一些常用快捷键:
+-----------------------------------------+---------------------------------------+
| Click on HOME | MOD+h | Middle-click |
+-----------------------------------------+---------------------------------------+
| Click on BACK | MOD+b | MOD+Backspace | Right-click² |
| Click on APP_SWITCH | MOD+s | 4th-click³ |
| Click on MENU (unlock screen)⁴ | MOD+m |
| Click on VOLUME_UP | MOD+↑ (up) |
| Click on VOLUME_DOWN | MOD+↓ (down) |
| Click on POWER | MOD+p |
| Turn device screen off (keep mirroring) | MOD+o |
| Turn device screen on | MOD+Shift+o |
| Expand notification panel | MOD+n | 5th-click³ |
| Collapse panels | MOD+Shift+n |
+-----------------------------------------+---------------------------------------+
不过这样启动屏幕共享感觉有点麻烦。虽然在命令行启动能够看到详细的调试信息,如果出错了也好做出调整。但是需要有一个窗口一直活跃在前台,看上去不够优雅,于是我就在思考能不能把这个东西转到后台去。
我最早的想法是搞成任务栏图标,等于说是把活跃窗口移动到右下角的托盘。查了下教程感觉好像挺复杂,于是就转换思路,看能不能在命令行启动后直接转为后台,从而避免终端保留在前台。然而还没找到什么有效的办法。后来还有个思路,写个exe
把Scrcpy
作为子进程调起不就好了。结果还是不行,调起Scrcpy
会出现一个黑框,也就是命令行窗口。继续查相关的方法,一时之间没有找到教程。
偶然间翻看Scrcpy
目录的时候,发现了一个文件叫scrcpy-noconsole.vbs
,看着名称就感觉方法藏在其中。这vbs
双击就能运行,我记得早年间的病毒和整蛊小程序就是用这个。右键记事本,看了下代码,发现关键在于cmd
命令带了个/c
参数。查了下教程6发现,这个参数的意思就是执行命令后关闭窗口,当然cmd
命令也还有其他很多参数。
#include <windows.h>
int main()
{
WinExec("cmd /c scrcpy --shortcut-mod=lctrl --always-on-top --window-title=\"My device\" --stay-awake",SW_HIDE);
return 0;
}
// gcc -mwindows launch.c launch.o -o launch.exe
以及需要加个图标:
1 ICON "favicon.ico"
编译资源:
windres launch.rc -o launch.o
编译代码:
gcc -mwindows launch.c launch.o -o launch.exe
然后双击exe
就好,这个相比于自带的vbs
,可以调整启动命令的参数
效果:
需要关闭的时候,直接右上角点 × \times ×,然后拔掉连接线
还有,这种方式没有调试信息,如果不能运行成功,建议去命令行启动,或许会有报错信息,方便调试。
2.3. 脚本
直接python
调包,用截屏软件确定坐标
import pyautogui as ui
import random
import time
ui.PAUSE = 1
for idx in range(0,100):
ui.moveTo(
1827
,910
,duration=1
)
print("Finish move to screen")
ui.dragRel(
0
,-600
,duration=1
)
print("Finish drag to next")
random_sleep_time = random.randint(0,5)
print(f"Random sleep {random_sleep_time} seconds")
time.sleep(random_sleep_time)
ui.click(
1827
,930
,button='left'
,duration=1
)
print(f"Now finish {idx+1}")