autojs-练手-视频号点赞(进阶版)
2023-12-13 08:32:53
注释很详细,直接上代码
较初阶版新增内容
1. 简单但好用的ui界面
为方便大家参考,ui界面的模板单独拿出来了
2. opencv图像识别
3. 需加载情况特殊处理(防卡壳)
4. 增加自动判断是否已点赞的情况
源码部分
// 启用自动执行
auto();
//设置运行框标题颜色和字体大小
console.setTitle("眨眼睛出品","#ff11ee00",40);
//设置运行框初始的位置
console.setPosition(400, 100);
//判断运行框是否显示在屏幕上
var isconsoleshow =false
//初始函数
init_operator();
//初始化函数
function init_operator(){
//申请截图权限
requestScreenCapture();
//自动授予截图权限
//安卓版本高于Android 9
if(device.sdkInt>28){
//等待截屏权限申请并同意
threads.start(function () {
packageName('com.android.systemui').text('立即开始').waitFor();
text('立即开始').click();
});
}
}
function click_img(path_){
//获取手机中程序所在的目录
var pos = files.cwd()
//读取微信图标的小图片
var wx = images.read(pos+path_);
//暂停一会防止截图过快截到授予权限时的照片
sleep(1000)
//截图并找图
//region的内容分别是所查找区域的左上角坐标,区域的宽高
//(如果只有两位数字则表示从这个坐标到右下角)
//threshold的内容是相似度
var p = findImage(captureScreen(), wx, {
region: [0, 50],
threshold: 0.9
});
if(!p){
log("未找到图片或已点赞")
return false;
}
click(p.x,p.y+30)
log("成功点赞");
return true;
}
//点赞流程
function dz_operator(){
//需求次数
var num=dialogs.input("请输入一个数字")
//额外储存
var num_res=num;
//无法下滑的情况(在加载,需要缓慢特殊的滑动方式),判定是否需要加载
var num_need_jj=0;
while(num>0){
//等待关注字眼出现
textContains("关注").waitFor();
log("查询到视频")
//图片位置在autojs的文件同级目录(“脚本”下一级)
if(click_img("/视频号点赞部分图片.jpg"))
{
num-=1;
var num_shunxu=num_res-num
log("第"+num_shunxu+"次点赞成功!")
num_need_jj=0;
}
else{
if(num_need_jj<3){
num_need_jj+=1;
}
}
//处理加载视频的情况
if(num_need_jj==3){
swipe(534, 1200, 535,600 , 2000)
}
//下滑
scrollDown();
sleep(100);
}
}
// 定义开始按钮的响应函数
function startstopButtonClick() {
toast("开始按钮被点击");
// 在这里编写开始按钮被点击后的逻辑
if (window.startstopButton.getText() === "开始") {
//定义开始之后的逻辑
threads.start(function () {
dz_operator();
});
//修改按钮文本为停止
window. startstopButton. setText("停止")
}
else {
//点击停止之后的逻辑
//修改按钮文本为开始
window.startstopButton. setText("开始")
}
}
// 定义控制台按钮的响应函数
function consoleButtonClick() {
toast("控制台按钮被点击");
// 在这里编写停止按钮被点击后的逻辑
//这里对控制台状态操作需要启用新线程,否则当场卡死
//暂时还不明白为啥不能在同一个线程改变控制台状态,先这样用着
threads.start(function () {
//如果当前是显示状态则隐藏
if (isconsoleshow){
console.hide(true)
//修改标记
isconsoleshow=false
}
else{
//同理
//填true是为了程序关闭时将控制台一同关闭
console.show(true)
isconsoleshow=true
}
console.setBackgroud("#44000000");
});
}
// 定义退出按钮的响应函数
function exitButtonClick() {
toast("退出按钮被点击");
// 在这里编写退出按钮被点击后的逻辑
//直接结束程序
exit ();
}
// 创建UI界面
var window = floaty.window(
//垂直分布
<vertical>
<button id="startstopButton" text="开始" w="auto" h="auto"/>
<button id="consoleButton" text="控制台" w="auto" h="auto"/>
<button id="exitButton" text="退出" w="auto" h="auto"/>
</vertical>
);
// 设置开始停止按钮的点击事件监听器
window.startstopButton.click(() => {
//开始及停止按钮点击处理函数
startstopButtonClick();
});
// 设置控制台按钮的点击事件监听器
window.consoleButton.click(() => {
//控制台按钮点击处理函数
consoleButtonClick();
});
// 设置退出按钮的点击事件监听器
window.exitButton.click(() => {
//退出按钮点击处理函数
exitButtonClick();
});
// 保持程序运行状态,否则会运行完即关闭
setInterval(() => {}, 1000);
图片素材下载(放在autojs同级目录,一般是在“脚本”文件夹的下一级)
(为防止水印覆盖图案故意将图片截长了点,请读者自行截取左边的内容使用)
图片素材链接
运行效果:
运行框信息输出概况
文章来源:https://blog.csdn.net/m0_73756108/article/details/134961191
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!