发帖
充值
 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
首页源码分享懒人精灵_某学习APP阅览视频脚本源码V2.0 ...

懒人精灵_某学习APP阅览视频脚本源码V2.0

15
回复
8954
查看
 关闭 [ 复制链接 ]
已绑定手机

46

主题

118

回帖

2831

积分

版主

积分
2831
2021-11-19 20:41:56 显示全部楼层 阅读模式
本帖最后由 Aitlo 于 2022-5-13 09:20 编辑

基于学习APP基础上在增加了某学堂APP的脚本拓展功能.
可下载项目源码压缩包:
上传的附件: 学习APPV2.0.zip (31.66 KB, 下载次数: 22, 售价: 1 金钱)

直接复制运行需要更改某些参数,所有以下代码只作为展示,如果需要运行请下载源码压缩包,并导入项目文件即可.

  1. require("common")

  2. function startPlay()
  3.     -- 开始执行阅读播放操作
  4.     --{class="android.widget.TextView",id="edu.www.qsxt:id/branchview_title",index="0",level="15",package="edu.www.qsxt"}
  5.    
  6.     local arr = GetAllNode({class="android.widget.TextView",id="edu.www.qsxt:id/branchview_title",index="0",level="15",package="edu.www.qsxt"},"章")
  7.     local reslut = RemovePlayCourse(arr,"已学习",nil,nil)
  8.    
  9.     for k,v in pairs(reslut) do
  10.         GetParentClick(v)
  11.         
  12.         sleep(rnd(1500,2000))
  13.         
  14.         
  15.         
  16.         local ret = nodeLib.findOne({class="android.widget.Image",id="",index="0",level="12",package="edu.www.qsxt"},true)
  17.         if ret ~= nil then
  18.             print("进入对应的章节")
  19.             
  20.             
  21.             if ClickNode({class="android.view.View",id="",text="【听讲】"}) then
  22.                 -- 点击阅读或播放
  23.                 -- 等待随机5至10分钟时长
  24.                 -- SleepTime(5,10)
  25.                
  26.                 sleep(rnd(2000,2500))
  27.                 local reslut,time = IfTwoNode({class="android.widget.TextView",id="edu.www.qsxt:id/player_audio_current_time",level="12"},{class="android.widget.TextView",id="edu.www.qsxt:id/player_audio_total_time",level="12"},":")
  28.                 if reslut then
  29.                     exec("input keyevent 4 ")
  30.                 else
  31.                     -- local m = GetNodeTime({class="android.widget.TextView",id="edu.www.qsxt:id/player_audio_total_time",index="2",level="12",package="edu.www.qsxt"})
  32.                     SleepTime(time,time+1)
  33.                     exec("input keyevent 4 ")
  34.                     
  35.                 end
  36.                
  37.                 sleep(rnd(1200,2000))
  38.             else
  39.                 -- 随机等待几分钟 可以自行修改
  40.                 --SleepTime(5,10)
  41.                 SleepTime(5,10)
  42.                 exec("input keyevent 4 ")
  43.                
  44.                 --end
  45.                 sleep(rnd(1200,2000))
  46.             end
  47.             
  48.             
  49.             
  50.         end
  51.         -- 进入可播放课程,找播放按钮
  52.         if FindAllNode({class="com.feifanuniv.libplayer.views.TextureRenderView",id=""}) then
  53.             if FindNode({class="android.widget.ImageView",id="edu.www.qsxt:id/play_btn_center"}) then
  54.                 exec("input keyevent 4 ")
  55.                 sleep(rnd(1200,2000))
  56.             else
  57.                 SleepTime(5,10)
  58.                 exec("input keyevent 4 ")
  59.                
  60.                 --end
  61.                 sleep(rnd(1200,2000))
  62.             end
  63.         end
  64.         
  65.         
  66.         
  67.     end
  68.    
  69.    
  70. end

  71. function RemovePlayCourse(class_tab,findstr1,findstr2,time)
  72.     -- 找查节点父节点后找父节点的子节点,获取已学习的章节节点信息,删除已经播放的课程
  73.     local nodetab = class_tab
  74.    
  75.     for k,v in pairs(nodetab) do
  76.         local ret = nodeLib.findNextNode(v,true)
  77.         if ret ~= nil then
  78.             if Splitstring(ret.text,findstr1) then
  79.                 nodetab[k] = nil
  80.                 --[===[if Split(ret.text,findstr1,findstr2,time) then
  81.                 nodetab[k] = nil
  82.                 end]===]
  83.             end
  84.             
  85.         end
  86.         
  87.     end
  88.     return nodetab
  89.    
  90. end

  91. function clickPlay(x1,y1,x2,y2,picname,massage)
  92.     -- 查找阅览的课程执行播放或阅读

  93.     sleep(rnd(100,150)*10)
  94.     if FindPic(x1,y1,x2,y2,picname) >1 then
  95.         -- 找到播放图标判断当前位置是不是已学习,不行则点击
  96.         print(string.format("准备点击%s",massage))
  97.         startPlay()
  98.     end
  99.    
  100.    
  101. end

  102. function clickVideo()
  103.     -- 点击视频
  104.         -- 目前无调用
  105.     sleep(rnd(100,150)*10)
  106.     if FindPic(3,220,176,1926,"播放图标") >1 then
  107.         -- 找到播放图标判断当前位置是不是已学习,不行则点击
  108.         print(string.format("准备点击%s",massage))
  109.         startPlay()
  110.     else
  111.         return
  112.     end
  113. end

  114. function clickArticle()
  115.     -- 点击文章
  116.     -- 目前无调用
  117.     sleep(rnd(100,150)*10)
  118.     if FindPic(3,220,176,1926,"青书学堂文章图标") >1 then
  119.         -- 找到播放图标判断当前位置是不是已学习,不行则点击
  120.         print("准备点击文章")
  121.         startPlay()
  122.     else
  123.         return
  124.     end
  125. end

  126. function readyPaly()
  127.     -- 准备阅读或播放
  128.     -- 下拉按钮坐标
  129.     sleep(rnd(100,200)*10)
  130.    
  131.     for i=1,10 do
  132.         local x,y = FindPic(906,216,1066,1906,"课程子菜单下拉按钮")
  133.         if x > 1 then
  134.             tap(rnd(1,5)+x,rnd(1,5)+y)
  135.             toast("●",x,y,12)
  136.             swipe(433+rnd(-5,5),371+rnd(-5,5),518+rnd(-5,5),1556+rnd(-5,5),500+rnd(100,150))
  137.             sleep(rnd(200,250)*10)
  138.         end
  139.         
  140.     end
  141.    
  142.    
  143.     while 1 do
  144.         clickPlay(3,220,176,1926,"播放图标","播放")
  145.         clickPlay(3,220,176,1926,"文章图标","文章")
  146.         
  147.         swipe(518+rnd(-5,5),1556+rnd(-5,5),433+rnd(-5,5),371+rnd(-5,5),500+rnd(100,150))
  148.         
  149.     end
  150. end

  151. function courseVideo(findstr)
  152.     -- 查找匹配的课程并点击
  153.     s1 = utf8.left(findstr,2)
  154.     -- 找查学习界面,主课程页面 是否包含UI输入框返回的字符串 进入对应的课程
  155.     ret = FindAllNode({class="android.widget.TextView",id="edu.www.qsxt:id/title"})
  156.     if GetNodeText(ret,s1)then
  157.         -- 点击 课件学习
  158.         ClickNode({class="android.widget.TextView",id="edu.www.qsxt:id/title",index="1",level="13",package="edu.www.qsxt",text="课件学习"})
  159.         -- 点击课程讲授
  160.         ClickNode({class="android.widget.TextView",id="edu.www.qsxt:id/name",index="1",level="13",package="edu.www.qsxt",text="课程讲授"})
  161.         if ClickNode({class="android.widget.TextView",id="edu.www.qsxt:id/right_text",index="0",level="13",package="edu.www.qsxt",text="下载全部"}) then
  162.             -- 点击 全部下载
  163.             ClickNode({class="android.widget.TextView",id="edu.www.qsxt:id/confirm_btn",text="下载"})
  164.         end
  165.         readyPaly()
  166.     end
  167. end

  168. function runing(findstr)
  169.     -- 主程序函数
  170.     --runApp("com.chaoxing.mobile",'',true)
  171.     print('启动APP')
  172.     --sleep(12000)
  173.    
  174.     -- 点击学习界面
  175.     ClickNode({class="android.widget.TextView",id="edu.www.qsxt:id/tab_course",index="1",level="11",text="学习"})
  176.     for i=1,#findstr do
  177.         print('进入对应课程')
  178.         courseVideo(findstr[i])
  179.         sleep(rnd(1500,2000))
  180.         
  181.     end
  182.    
  183. end


  184. function _start(uidata)
  185.     -- 主程序函数
  186.     -- runing(uidata.idEdit1)        -- 自动阅览
  187.     startPlay()                -- 半自动 需要打开对应课程子菜单后执行
  188.    
  189. end
复制代码

PS:以上代码仅供学习交流使用,请使用者遵守相应规章法则.



使用道具
举报

4

主题

14

回帖

134

积分

注册会员

积分
134
大佬牛逼!!!!
回复
使用道具
举报

0

主题

26

回帖

50

积分

注册会员

积分
50
大佬牛逼!!!!
回复
使用道具
举报
已绑定手机

0

主题

33

回帖

115

积分

注册会员

积分
115
大佬就是大佬,真棒
回复
使用道具
举报

0

主题

34

回帖

58

积分

注册会员

积分
58
大佬牛逼 真是乐于分享
回复
使用道具
举报

4

主题

84

回帖

309

积分

中级会员

积分
309
QQ
大佬牛逼 真是乐于分享

安卓脚本,苹果脚本
脚本定制接单;自动化操作;手动能完成的都能做;
Q: 9451045
回复
使用道具
举报
已绑定手机

0

主题

28

回帖

199

积分

注册会员

积分
199

感谢大佬分享
回复
使用道具
举报

0

主题

24

回帖

167

积分

注册会员

积分
167
大佬牛逼 真是乐于分享
回复
使用道具
举报

0

主题

31

回帖

84

积分

注册会员

积分
84

大佬牛逼!!!
回复
使用道具
举报

1

主题

12

回帖

47

积分

新手上路

积分
47
感谢大佬分享
回复
使用道具
举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则