autojs刷网课之一、刷视频篇

autojs刷网课之一、刷视频篇

  • 本程序还有许多需要改进的地方,希望路过的各位大佬不吝赐教,感谢!
    • 相关说明
    • 1.息屏状态下亮屏
    • 2.设置悬浮窗
    • 3.打开app,跳过广告,点击相关课程
    • 4.弹题与倍速
    • 5.结束视频
    • 总结

本程序还有许多需要改进的地方,希望路过的各位大佬不吝赐教,感谢!

背景:网课,2021春,形式与政策Ⅱ,知到app

  • 功能:
    • 定时打开app
    • 跳过广告
    • 播放形式与政策
    • 1.5倍速
    • 自动关闭弹题
    • 连播三个视频后自动退出

准备:vivo手机(Android 7以上),autojs 4.1.2,vs code

个人背景:本人大三,在学习大二的计算机课程,只学过c和c++(所以用其他语言肯定有许多不规范的地方,感谢雅正!)

最近接触了autojs(javaScript),虽然没学过javaScript,但是庆幸的是基本可以用c/c++的知识写js。

相关说明

  1. 本学期课程设学习习惯分 ,需要有五天学习时间(看视频,不包括见面课)超过25min,一定不要一下刷完!
  2. 本人水平十分有限,都是基于兴趣进行相关学习,所以程序不会十分完善,只达到自用的程度 ,使用博客记录过程,一方面反思进步,另一方面希望能和你们互惠互助,共同进步。
  3. 本程序分为两部分,此篇为第一部分,实现了刷视频的功能,第二部分为自动答题篇;
  4. 功能流程 :使用autojs自带的定时(时灵时不灵),息屏时亮屏并解锁(上滑,6位数字密码),打开app,跳过广告,点击学习,点击形式与政策,点击继续学习,点击继续播放,放大,1.25x,1.5x,循环检测弹题,有题就选择A并关闭(未选就不能关闭),循环检测是否是下一个视频(自动播放下个视频的时候下边那个控制栏会出现,倍速会变为1.0x,检测到1.0x就点击两下变为1.5x,所以放大4次就表示看到第四个视频了(三个视频是为了凑够25min),就自动退出app;
  5. 关于第二部分的自动答题,其实章节课后题总共就8章×5=40道题,网上也很容易查到答案,但是本人是为了锻炼对autojs的使用,同时为另一个答题做准备,所以才写的,第二部分涉及了三个方面 1.使用python爬取答案,写入文档制作题库 2.使用python将txt文件的问题和答案变为json键值对格式 3.获取页面文字,匹配键值,获取答案,自动答题,有兴趣的可以继续关注;
  6. 之后应该会写爬网页,企业微信每日上报,定时抢购,stm32,ss答题等,时间不定,先挖个坑;
  7. 新手上路,请多 点赞 收藏 关注十分感谢

1.息屏状态下亮屏

     while (!device.isScreenOn()) {
         device.wakeUp();
         sleep(500)
	     swipe(700, 1900, 700, 450, 300);//上滑
	     sleep(400);
	     //解锁 密码123456
	     desc(1).findOne().click();
	     desc(2).findOne().click();
	     desc(3).findOne().click();
	     desc(4).findOne().click();
	     desc(5).findOne().click();
	     desc(6).findOne().click();
	     sleep(400);
     }

2.设置悬浮窗

	var w = floaty.rawWindow(
	    <frame gravity="center" bg="#CC999999">
	        <text padding="5 0 5 0" w="auto" h="auto" id="text" textColor='#FFFFFF'></text>
	    </frame>
	);
	w.setPosition(150, 5);
	w.setTouchable(false);
	ui.run(function(){
	    w.text.setText("开始刷课");
	});

3.打开app,跳过广告,点击相关课程

	while(currentPackage().search(/wisdomtree/i)==-1){ //如果没有找到任何匹配的子串,则返回 -1。
	    launchApp("知到");
	    ui.run(function(){
		    w.text.setText("正在打开知到");
		});
	    sleep(1000);
	}
	if(id('tv_skip').findOne().click()){
	    ui.run(function(){
	    	w.text.setText('跳过广告');
		});
	    sleep(500);
	}
	
	var widget = text("学习").findOne();
	//获取其中心位置并点击
	click(widget.bounds().centerX()+random(0, 10), widget.bounds().centerY()-40);
    ui.run(function(){
	    w.text.setText('点击学习')
	});
    sleep(4000); 
    
    if(id('rl_credit_all_info').findOne().click()){
        ui.run(function(){
		    w.text.setText('点击形式与政策');
		});
		sleep(2000);
    }
    id("continue_study_btn").findOne().click();
    sleep(500);
    click(600, 600);
    ui.run(function(){
        w.text.setText('继续播放');
    });
    sleep(1000);
    
    var number = 0
    device.setMusicVolume(device.getMusicMaxVolume() / 100 * number)
    
    click(800, 800);sleep(500);
    click(1000, 800);
    ui.run(function(){
        w.text.setText('放大');
    });

4.弹题与倍速

/*思路:
问题一:弹题
    一直检测,是否有题,有题就答

问题二:怎么调第二次倍速
    1.间隔时间段后检测倍速
    2.不调倍速

问题三:怎么判断三个视频播放完毕
    第四次调倍速就退出脚本
*/ 
	n=1;t=0;
	while(true){
	    if(text('A').findOnce()) {
		    sleep(500)
		    click("A");
		    sleep(1000) 
		    click("关闭")
		    sleep(1000)
		    toast('关闭'+ n +'个弹题');
		    n=n+1;
	    }
	    if(text('1.0x').findOnce()) {
	        click("1.0x")
	        t+=1;
	        sleep(500);
	        click("1.25x");sleep(500);  
	        ui.run(function(){
	        	w.text.setText('第'+ t +'个视频');  
	        }); 
	    }
	    //if(t == 3) 。。。
	}

5.结束视频

	    if(t == 4) {
	      	if(id('ijk_layout_controller_cover_play_layout').findOnce().click()){
	             ui.run(function(){
               	 	w.text.setText('3个视频播放完毕,已暂停');
           		 });
	        }
	  
           	back()
            sleep(500);
            back()
            sleep(500);
            if(id('positiveButton').text("确定").findOnce()){
                log('确定退出');
                click("确定")
            }
	        back()
	        sleep(500);
	        back()
	        sleep(500);
	        home()
	        exit()
        }

总结

写东西果然很难啊,特别是码代码的习惯特别不好,导致整理的时候要花费很长时间,注释也懒得写了,感觉都是很简单的语句,看不懂就看功能流程哈,再看不懂就评论,我看到就会回复的。
全部代码在gitee,点这里跳转

坚持就是胜利!

你可能感兴趣的:(Autojs,javascript,android)