手机qq频道之自动分享频道的实现

自从上次写了手机QQ频道自动发私信的功能后,私信找我的人不少,不过也提出了一些新的需求,其中就有一个很实现的功能,就是想把自已的频道全自动的分享出去,到其它的聊天室里,这样就能极大的曝光自已的频道,手工发当然可以,但做营销的,一个Q几十个频道,一个一个发,还想要24小时不停发,那就有难度了,还是得上工具。
想要实现这个功能,首先就得解决以下两个问题
1.怎么按顺序实现所有频道全部发到
2.发频道不能够重复
3.怎么实现24小时不停发送,无需人工干预
第一个问题,按顺序发就得先采集到所有的频道,这里可以用到一个数组做为存储,每次发之前,都采集一次一个Q的所有频道名称,放进这个list里。
第二个问题,就很好解决了,每一次发完一个频道就从List里删一条。第三个问题,可以设定一个间隔时间,所有频道发完后停止多少分钟后,再发。

上代码:

function run()
 {
        start(true);//采集
        randomsleep2(2,3);
        // log(collectionlist);
        //2.发送
        while (collectionlist.length > 0) {
            // 取出第一个元素
            let item = collectionlist[0];
            log("取出的元素: " + item);
            start(false,item);//开始执行
            // 从列表中删除该元素
            collectionlist.shift();
            
            randomsleep2(2,3)
        }
        id("ivTitleBtnLeft").findOne().click();//发送完就结束,让下一次采集用
        randomsleep2(2,3);
        //停止多长时间
        randomsleep2(60,120);//一分钟到2分钟
 }




function start(iscollection,item)
{
    auto.waitFor();
    app.launch("com.tencent.mobileqq");
     waitForPackage("com.tencent.mobileqq");
    toastLog("等待QQ启动完毕");
    if (iscollection)
    {
            //打开一个置顶聊天框
        id("nlv").findOne().children().forEach((child, index) => {
            if (index === 1) { // 只处理第2条
                try {
                    var target = child.findOne(className("android.widget.FrameLayout").depth(19));
                    click(target.bounds().centerX(), target.bounds().centerY());
                    randomsleep2(5,7);
                } catch (err) {}
            }
        });
    }
        var targets = id("nlv").findOne().children().map(child => child.findOne(id("title"))).filter(target => target != null);
        if (targets.length > 0)
        {
            var tmptarget = targets[targets.length - 3];//第三个
            if (tmptarget != null) 
            { // 判断 tmptarget 是否不为空
                longClick(tmptarget.bounds().centerX(), tmptarget.bounds().centerY()); // 长按动作
            }
        }
        randomsleep2(2,3);
        click(165,380);//点分享
        randomsleep2(1,3);
        id("text1").className("android.widget.TextView").text("腾讯频道").findOne().parent().parent().click();
        randomsleep2(1,3);
        className("android.widget.Button").findOne().click();//多选
        randomsleep2(1,3);
       
        // 获取控件位置 ,滑动到obj1
        if(className("android.widget.TextView").text("最近聊天").exists())
        {
            var obj1 = id("jq2").className("android.widget.TextView").text("最近聊天").findOne();        
            var obj2 = id("jq2").className("android.widget.TextView").text("全部频道").findOne();
            // log(obj1);
            if (!obj1)
            {
               swipe_downToUpobj(obj1,obj2);
            }
        }

         
        if (iscollection)
        {
         collection2();//采集所有频道名称
         className("android.widget.Button").text("取消").findOne().click();
         randomsleep2(1,3);
         className("android.widget.ImageView").desc("返回").findOne().click();
         randomsleep2(1,3);
         className("android.widget.Button").text("关闭").findOne().click();
         randomsleep2(1,3);
         return;
        }
        var allgroups = id("group_item_layout").find(); // 获取所有匹配的控件
}

function collection2()
{
    while(true)
    {
        var firsttext;
        var secondtext;
        allgroups = id("group_item_layout").find(); 
        for (let i = 0; i < allgroups.length; i++) 
        {
            let group = allgroups[i];
            let counts = group.childCount();
            var childElements = group.children();
            pindaoname = childElements[3].text();
            log(pindaoname);
            if (i==1)
            {
                firsttext=pindaoname;//滑动之前的文本
                log("firsttext:"+firsttext);
            } 
            if (!pindaoname.includes(" | ")) //过滤掉最近聊天的列表
            {
    
                if (!isColllist(pindaoname))  // 不在列表里
                { 
 
                    collectionlist.push(pindaoname); // 添加到发送列表
 
                }
            }
        }
        
        // swipeUp();//滑动
        swipe(356,1168,565,408,622);
        sleep(3000);
        allgroups = id("group_item_layout").find(); 
        for (let i = 0; i < allgroups.length; i++) 
        {
            let group = allgroups[i];
            let counts = group.childCount();
            var childElements = group.children();
            pindaoname = childElements[3].text();
            log(pindaoname);
            if (i==1)
            {
                secondtext=pindaoname;//滑动之前的文本
                log("secondtext:"+secondtext);
            }  
            if (!pindaoname.includes(" | ")) //过滤掉最近聊天的列表
            {
    
                if (!isColllist(pindaoname))  // 不在列表里
                { 
    
                    collectionlist.push(pindaoname); // 添加到发送列表
    
                }
            }
        }
        // exit();
        if (secondtext==firsttext)
        {
            toastLog("已经到底了");
            log(sendlists);
            break;
        }
        
    }
}

//点其中一个
function loopit(allgroups,item) 
{
 

    let pindaoname = null; // 初始化返回值

    let isfound=false;//是否找到发送
    let counti=0;
    while(true)
    {
        counti++;
        if (counti>=60)//找不到了
        {
            break;
        }
        log("counti:"+counti);
        var firsttext;
        var secondtext;
        // allgroups = id("group_item_layout").find(); 
        // if (allgroups.length==0)
        // {
        //     break;
        // }
        log("allgroups.length"+allgroups.length);
        for (let i = 0; i < allgroups.length; i++) 
        {
            let group = allgroups[i];
            let counts = group.childCount();
            var childElements = group.children();
            if(childElements[3]==null)
            {
                log("没找到");
                break;
            }
            pindaoname = childElements[3].text();
            if (i==1)
            {
                firsttext=pindaoname;//滑动之前的文本
                log("firsttext:"+firsttext);
            } 
            log("pindaoname1:"+pindaoname);
            log("item:"+item);
            if (item==pindaoname)
            {
                 
                shareit(childElements);//做分享动作
                isfound=true;
                break;             
            }

        }
        if (isfound)
        {
            log("isfound找到");
            break;
        }
        log("向下滑动");
        swipe(356,1168,565,408,622);
        sleep(3000);
        allgroups = id("group_item_layout").find(); 
        for (let i = 0; i < allgroups.length; i++) 
        {
            let group = allgroups[i];
            let counts = group.childCount();
            var childElements = group.children();
            if(childElements[3]==null)
            {
                log("没找到");
                break;
            }
            pindaoname = childElements[3].text();
            if (i==1)
            {
                secondtext=pindaoname;//滑动之前的文本
                log("secondtext:"+secondtext);
            } 
            log("pindaoname1:"+pindaoname);
            log("item:"+item);
            if (item==pindaoname)
            {
                 
                shareit(childElements);//做分享动作
                isfound=true;
                break;             
            }
        }
        if (isfound)
        {
            break;
        }
        if (secondtext==firsttext)
        {
            toastLog("已经到底了");
            // log(sendlists);
            break;
        }
    }
   
 
    randomsleep2(3,5);
    if(id("dialogRightBtn").exists())
    {
        //发送完 直接退到聊天界面
        id("dialogRightBtn").findOne().click();//发送
        randomsleep2(3,5);
    }
    else
    {
        //不正常返回,没找到元素
        if(className("android.widget.ImageView").desc("返回").exists())
        {
            className("android.widget.ImageView").desc("返回").findOne().click();
            randomsleep2(2,3);
            if(className("android.widget.Button").text("关闭").exists())
            {
                className("android.widget.Button").text("关闭").findOne().click();
                randomsleep2(2,3);
            }
        }
    }

  
  return pindaoname;    
}

 

function isAtBottom(obj) {
    // 获取屏幕高度
    var screenHeight = device.height;
    
    // 获取控件的底部坐标
    var objBottom = obj.bounds().bottom;
    
    // 判断控件是否在屏幕底部
    return objBottom >= screenHeight - 200; 
}

 

function handleScrollAfterClick(clickElement) {
    // 获取初始滚动条高度
    let initialScrollHeight = getScrollHeight(); // 实现该函数以返回滚动条高度

    // 执行点击操作
    click(clickElement.bounds().centerX(), clickElement.bounds().centerY());
    randomsleep2(1, 3); // 等待操作完成

    // 获取点击后的滚动条高度
    let newScrollHeight = getScrollHeight(); // 再次获取滚动条高度

    // 计算变长
    let lengthChange = newScrollHeight - initialScrollHeight;

    // 如果变长大于0,则向上滑动相应的距离
    if (lengthChange > 0) {
        log("滚动条变长了,变长的高度为: " + lengthChange);
        // 向上滑动相应的高度
        scrollUp(lengthChange);
    } else {
        log("滚动条没有变长。");
    }
}

// 向上滑动的函数
function scrollUp(distance) {
    // 实现具体的滑动逻辑
    // 例如:使用一个滑动 API 或者模拟滑动
    // swipe(321,1223,565,215,805);
    startX=321;
    startY=1223;

      swipe(startX, startY, startX, startY - distance, 1000); // 根据需要调整参数
    // swipe(startX, startY, startX, startY - distance, duration); // 根据需要调整参数
}

// 实现获取滚动条高度的函数
function getScrollHeight() {
    // 根据具体情况获取滚动条高度
    // 例如,通过获取某个元素的高度或坐标来实现
    // return document.body.scrollHeight; // 示例:获取整个文档的滚动高度
    return 1280;
}

QQ频道自动分享,直达聊天室,高效引流的方法

效果如下:点击打开
不懂的,或需要成品的可以私信我,不定时在线!
我的51cto早已经注销,请不要转载我发的内容!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值