按键精灵快手、抖音直播间、橱窗商品口令采集脚本

按键精灵快手、抖音直播间、橱窗商品口令采集脚本

    Import "zm.luae" Import "jsdvip.luae" Import "ShanHai.lua" If jsdvip.StartServer() Then     TracePrint "恭喜你!!可以使用插件" Else     TracePrint "很遗憾!!!您的设备不支持jsd节点相关功能" End If /*----------------------------------------------*/ Dim Ret,Info(),记录值="",商品标题,商品口令,已完成,标题坐标(),顶部坐标(),底部坐标(),中心坐标(),分割,下标,是否变动,进入采集区,执行条件,h h=Thread.Start(弹窗处理线程) Call 主程序() Thread.Stop(h) Function 主程序()     Do         If jsdvip.FindNode("By.res('com.ss.android.ugc.aweme:id/qig').desc('商品列表')") Then             Call 抖音直播数据采集()         ElseIf jsdvip.FindNode("By.res('com.ss.android.ugc.aweme:id/fpa')") Then             Call 抖音橱窗数据采集()         ElseIf jsdvip.FindNode("By.res('com.smile.gifmaker:id/search_content')") and jsdvip.FindNode("By.text('商品')") Then             Call 快手商品页采集()         ElseIf jsdvip.FindNode("By.res('com.smile.gifmaker:id/skin_container')") Then             Call 快手直播页采集()         Else             ShowMessage "未检测到数据采集页面,请手动切换!"         End If         Delay 100     Loop End Function Function 抖音直播数据采集()     判断新页面 ("By.res('com.ss.android.ugc.aweme:id/qig').desc('商品列表')")     Do         顶部坐标 = jsdvip.GetRect("By.res('com.ss.android.ugc.aweme:id/haj')")         底部坐标 = jsdvip.GetRect("By.res('com.ss.android.ugc.aweme:id/rx_')")         中心坐标 = jsdvip.GetPoint("By.res('com.ss.android.ugc.aweme:id/rx_')")         If 顶部坐标 <> Null and 底部坐标 <> Null And 中心坐标 <> Null Then             Exit Do         Else             ShowMessage "获取坐标中~"         End If     Loop     Do Until 执行条件 = true         Ret = jsdvip.FindNodeS("By.res('com.ss.android.ugc.aweme:id/tv_title')","node")         If Ret Then             Info = jsdvip.GetNodeInfoAll("node")             If Info <> Null Then                 For i = 1 To UBOUND(Info[1]) + 1                     商品标题 = Info[1][i]                     是否变动 = jsdvip.FindNode("By.text('" & 商品标题 & "')")                     If InStr(1, 记录值, 商品标题) = 0 and 是否变动 Then                         记录值 = 记录值 & "----" & 商品标题                         TracePrint 商品标题                         Call 位置计算(商品标题,顶部坐标[4],底部坐标[4], 100)                         If 抖音直播进入商品页(商品标题)=True Then                             商品口令 = 获取口令()                             Call 保存口令(商品口令, "抖音橱窗数据-"&DateTime.Format("%Y-%m-%d"))                             Call DY返回商品主页("By.res('com.ss.android.ugc.aweme:id/qig').desc('商品列表')")                         End If                     ElseIf 是否变动 = Null Then                         Exit For                     End If                 Next             End If         End If         If jsdvip.FindNode("By.res('com.ss.android.ugc.aweme:id/qig').desc('商品列表')") Then             Call 抖音直播滑动(商品标题)             执行条件 = jsdvip.FindNode("By.res('com.ss.android.ugc.aweme:id/wp4')")         End If         Delay 100     Loop         End Function Function 抖音橱窗数据采集()     Do         顶部坐标 = jsdvip.GetRect("By.res('com.ss.android.ugc.aweme:id/y6=')")         底部坐标 = jsdvip.GetRect("By.res('com.ss.android.ugc.aweme:id/fpb')")         中心坐标 = jsdvip.GetPoint("By.res('com.ss.android.ugc.aweme:id/fpb')")         If 顶部坐标 <> Null and 底部坐标 <> Null And 中心坐标 <> Null Then             Exit Do         Else             ShowMessage "获取坐标中~"         End If     Loop     Do Until 执行条件 = True         Ret = jsdvip.FindNodeS("By.res('com.ss.android.ugc.aweme:id/tye')","node")         If Ret Then             Info = jsdvip.GetNodeInfoAll("node")             For i = 0 To UBOUND(Info[1])                 jsdvip.FindNode("By.res('com.ss.android.ugc.aweme:id/tye')",i,"nodetitle")                 jsdvip.FindChlid("nodetitle", "By.res('com.ss.android.ugc.aweme:id/ty0')", "newnode")                 商品标题 = jsdvip.GetText("newnode", 0)                 分割 = Split(商品标题, "\n")                 商品标题 = 分割[1]&分割[2]                 If InStr(1, 记录值, 商品标题) = 0 and 商品标题 <>"" Then                     记录值 = 记录值 & "----" & 商品标题                     TracePrint 商品标题                     Call DY位置计算 (i, 顶部坐标[4], 底部坐标[4], 150)                     Call DY橱窗进入商品页(i)                     商品口令 = 获取口令()                     TracePrint 商品口令                     Call 保存口令(商品口令, "抖音橱窗数据-"&DateTime.Format("%Y-%m-%d"))                     Call DY返回商品主页("By.res('com.ss.android.ugc.aweme:id/fpm')")                 End If             Next         End If         Call DY橱窗滑动()         执行条件 = jsdvip.FindNode("By.res('com.ss.android.ugc.aweme:id/fn8')")     Loop End Function Function 抖音直播滑动(商品标题)     Dim 底部坐标(),盒高()     盒高 = jsdvip.GetRect("By.res('com.ss.android.ugc.aweme:id/jie')")     If 盒高 <> null Then         TouchDown 盒高[3]/2, 盒高[4],1         TouchMove 盒高[3]/2, 盒高[2],1,1000         TouchUp 1     Else         ShowMessage "未获取到有效坐标"     End If End Function Function 抖音直播进入商品页(商品标题)     Dim 坐标(),开始时间     jsdvip.Click ("By.text('" & 商品标题 & "')")     开始时间 = TickCount()     Do         If jsdvip.FindNode("By.res('com.ss.android.ugc.aweme:id/vbh')") Then //抖音分享点击             坐标 = jsdvip.GetPoint("By.res('com.ss.android.ugc.aweme:id/vbh')")             If 坐标 <> Null Then                 Tap 坐标[1] + 20, 坐标[2]             End If         ElseIf jsdvip.FindNode("By.res('com.ss.android.ugc.aweme:id/abe')") Then //抖音商品页面进入             坐标 = jsdvip.GetRect("By.res('com.ss.android.ugc.aweme:id/abe')")             If 坐标 <> Null Then                 Swipe 坐标[1]+100, 坐标[2]-100, 坐标[1]+100, 坐标[2] - 600, 500             End If         ElseIf jsdvip.FindNode("By.res('com.ss.android.ugc.aweme:id/sz-').text('复制链接')")//复制链接             jsdvip.Click ("By.res('com.ss.android.ugc.aweme:id/sz-').text('复制链接')")             抖音直播进入商品页 = True             Exit Do         ElseIf jsdvip.FindNode("By.text('请勿离开直播间,否则抽奖资格失效')") Then//福袋抽奖             KeyPress "Back"             抖音直播进入商品页 = False             Call DY返回商品主页("By.res('com.ss.android.ugc.aweme:id/qig').desc('商品列表')")             Exit Do         Else             If TickCount() - 开始时间 > 5000 Then                 ShowMessage "超时返回"                 抖音直播进入商品页 = False                 Exit Do             ElseIf jsdvip.GetText("By.clazz('android.widget.TextView').depth('14')", 0) <> 商品标题 and jsdvip.GetText("By.clazz('android.widget.TextView').depth('14')", 0) <>Null Then                 ShowMessage "目标不匹配"                 Call DY返回商品主页("By.res('com.ss.android.ugc.aweme:id/qig').desc('商品列表')")                 Exit Do             End If         End If         Delay 100     Loop End Function Function DY位置计算(下标,顶部坐标Y,底部坐标Y,容错)     标题坐标 = jsdvip.GetPoint("By.res('com.ss.android.ugc.aweme:id/tye')",下标)     If 标题坐标 <> Null Then         If 标题坐标[2] < 顶部坐标Y Then             TouchDown 中心坐标[1], 中心坐标[2],1             TouchMove 中心坐标[1], 中心坐标[2]+(顶部坐标Y-标题坐标[2])+容错,1,500             TouchUp 1         ElseIf 标题坐标[2] > 底部坐标Y Then             TouchDown 中心坐标[1], 中心坐标[2],1             TouchMove 中心坐标[1], 中心坐标[2]-(标题坐标[2]-底部坐标Y)-容错,1,500             TouchUp 1         End If     End If End Function Function DY橱窗滑动()     If 底部坐标 <> null and 顶部坐标 <> null Then         TouchDown 底部坐标[3] -250, 底部坐标[4] - 50, 1         TouchMove 顶部坐标[1], 顶部坐标[2]-50,1,1500         TouchUp 1     Else         Swipe(GetScreenX()/2,GetScreenY()/2,GetScreenX()/2,GetScreenY()/2-200,1000)     End If End Function Function DY橱窗进入商品页(下标)     Dim 坐标()     jsdvip.Click ("By.res('com.ss.android.ugc.aweme:id/tye')",下标)     Do         If jsdvip.FindNode("By.res('com.ss.android.ugc.aweme:id/vbh')") Then //抖音分享点击             坐标 = jsdvip.GetPoint("By.res('com.ss.android.ugc.aweme:id/vbh')")             If 坐标 <> Null Then                 Tap 坐标[1]+20,坐标[2]             End If         ElseIf jsdvip.FindNode("By.res('com.ss.android.ugc.aweme:id/sz-').text('复制链接')") Then             jsdvip.Click("By.res('com.ss.android.ugc.aweme:id/sz-').text('复制链接')")                     Exit Do         Else             ShowMessage "等待加载中"         End If             Loop     End Function Function DY返回商品主页(退出节点)     Do         If jsdvip.FindNode("By.res('com.ss.android.ugc.aweme:id/iwc')") Then             jsdvip.Click ("By.res('com.ss.android.ugc.aweme:id/iwc')")//关闭分享         ElseIf jsdvip.FindNode("By.res('com.ss.android.ugc.aweme:id/adt')") Then             jsdvip.Click ("By.res('com.ss.android.ugc.aweme:id/adt')")//详情页面返回         ElseIf jsdvip.FindNode("By.text('请勿离开直播间,否则抽奖资格失效')") Then//福袋抽奖             TracePrint "By.text('一键发表评论')"             KeyPress "Back"         ElseIf jsdvip.FindNode(退出节点) Then             Exit Do//商品主页退出         Else             ShowMessage "等待返回首页"         End If     Loop End Function Function 快手商品页采集()     判断新页面 ("By.res('com.smile.gifmaker:id/search_content')")     判断新页面 ("By.text('商品')")     Do         顶部坐标 = jsdvip.GetRect("By.clazz('android.view.ViewGroup').pkg('com.smile.gifmaker').depth('35')",0)         底部坐标 = jsdvip.GetRect("By.clazz('android.widget.FrameLayout').pkg('com.smile.gifmaker').depth('8')",3)         中心坐标 = jsdvip.GetPoint("By.res('com.smile.gifmaker:id/krn_content_container')")         If 顶部坐标 <> Null and 底部坐标 <> Null And 中心坐标 <> Null Then             Exit Do         Else             ShowMessage "获取坐标中~"         End If     Loop     Do Until 执行条件 = True         Ret = jsdvip.FindNodeS("By.depth('42').clazz('android.widget.TextView')","node")         If Ret Then             Info = jsdvip.GetNodeInfoAll("node")             For i = 1 To UBOUND(Info[1]) + 1                 If jsdvip.FindLv("By.text('" & Info[1][i] & "').depth('42')", 0, "node1")=True Then                     商品标题 = jsdvip.GetText("node1",0)                     If InStr(1, 记录值, 商品标题) = 0 and IsNumeric(Right(商品标题,Len(商品标题)-1)) = False Then                         TracePrint 商品标题                         Call 位置计算(商品标题,顶部坐标[4],底部坐标[2],150)                         进入采集区 = 进入商品页(商品标题)                         If 进入采集区 = true Then                             Delay 500                             商品口令 = 获取口令()                             Call 保存口令(商品口令, "快手店铺数据-" & DateTime.Format("%Y-%m-%d"))                             记录值 = 记录值 & "----" & 商品标题                             Call 返回商品主页("By.text('商品').clazz('android.widget.TextView')")                         Elseif 进入采集区 = False Then                             Call 返回商品主页("By.text('商品').clazz('android.widget.TextView')")                         End If                     End If                 End If             Next         End If         Call 快手店铺滑动(商品标题)         执行条件 = jsdvip.FindNode("By.text('没有更多内容啦').depth('35')")     Loop End Function Function 快手直播页采集()     判断新页面 ("By.res('com.smile.gifmaker:id/skin_container')")     Do         顶部坐标 = jsdvip.GetRect("By.res('com.smile.gifmaker:id/view_pager_container')")         底部坐标 = jsdvip.GetRect("By.res('com.smile.gifmaker:id/view_pager_container')")         中心坐标 = jsdvip.GetPoint("By.res('com.smile.gifmaker:id/view_pager_container')")         If 顶部坐标 <> Null and 底部坐标 <> Null And 中心坐标 <> Null Then             Exit Do         Else             ShowMessage "获取坐标中~"         End If     Loop     Do Until  执行条件 = True         Ret = jsdvip.FindNodeS("By.depth('25').clazz('android.widget.TextView')","node")         If Ret Then             Info = jsdvip.GetNodeInfoAll("node")             For i = 1 To UBOUND(Info[1]) + 1                 If Info[1][i] <> "看讲解" And Info[1][i] <> "讲解中" And Info[1][i] <> "求讲解" And IsNumeric(Info[1][i]) = false Then                     商品标题 = Info[1][i]                     If InStr(1, 记录值, 商品标题) = 0 Then                         TracePrint 商品标题                         Call 位置计算(商品标题, 顶部坐标[2], 底部坐标[4], 150)                         进入采集区 = 进入商品页(商品标题)                         If 进入采集区 = true Then                             Delay 500                             商品口令 = 获取口令()                             TracePrint 商品口令                             Call 保存口令 (商品口令, "快手直播数据-" & DateTime.Format("%Y-%m-%d"))                             记录值 = 记录值 & "----" & 商品标题                             Call 返回商品主页("By.res('com.smile.gifmaker:id/skin_container')")                         Elseif 进入采集区 = False Then                             Call 返回商品主页 ("By.res('com.smile.gifmaker:id/skin_container')")                         End If                     End If                 End If             Next         End If         Call 快手直播滑动 (商品标题)         执行条件 = jsdvip.FindNode("By.res('com.smile.gifmaker:id/no_more_tv').text('划到底了,赶快下单吧')")     Loop End Function Function 快手店铺滑动(商品标题)     TracePrint "店铺采集滑动"     If 底部坐标 <> Null And 顶部坐标 <> Null Then         TouchDown GetScreenX()/2, 底部坐标[2]-50,1         TouchMove GetScreenX()/2, 顶部坐标[4]+50,1,1000         TouchUp 1     End If End Function Function 快手直播滑动(商品标题)     TracePrint "直播采集滑动"     If 底部坐标 <> Null And 顶部坐标 <> Null Then         TouchDown GetScreenX()/2, 底部坐标[4] - 10, 1         TouchMove GetScreenX()/2, 顶部坐标[2]-10,1,1000         TouchUp 1     End If End Function Function 进入商品页(商品标题)     Dim 坐标(), 点击进入=false,点击分享 = false, 详情页缩小 = false, 复制链接 = false, 商品回放 = false,newtitle     Do         If 点击进入 = false Then             If jsdvip.Click("By.text('" & 商品标题 & "')") Then                 点击进入 = True             Else                 进入商品页 = False                 Exit Do             End If         End If               If 商品回放 = false Then             If jsdvip.FindNode("By.res('com.smile.gifmaker:id/title_tv').text('商品讲解回放')") Then //有商品回放点击商品链接                 If jsdvip.Click("By.text('" & 商品标题 & "')") Then                     商品回放 = True                 End If             End If         End If         If 点击分享 = false Then             If jsdvip.FindNode("By.res('com.smile.gifmaker:id/share_btn_opaque')") Then //点击分享                 If jsdvip.Click ("By.res('com.smile.gifmaker:id/share_btn_opaque')") Then                     点击分享 = True                 End If             End If         End If         If 详情页缩小 = false And 点击分享 = false Then             If jsdvip.FindNode("By.res('com.smile.gifmaker:id/detail_V2_root_main_bottom_id')")  Then //详情页缩小的要滑动一下                 坐标 = jsdvip.GetRect("By.res('com.smile.gifmaker:id/detail_V2_root_main_bottom_id')")                 If 坐标 <> Null Then                     Swipe 坐标[1] + 100, 坐标[2] - 100, 坐标[1] + 100, 坐标[2] - 600, 500                     详情页缩小 = True                 End If             ElseIf jsdvip.FindNode("By.res('com.smile.gifmaker:id/self_detail_bottom_bar_action_layout')")//详情页缩小的要滑动一下                 坐标 = jsdvip.GetRect("By.res('com.smile.gifmaker:id/self_detail_bottom_bar_action_layout')")                 If 坐标 <> Null Then                     Swipe 坐标[1] + 100, 坐标[2] - 150, 坐标[1] + 100, 坐标[2] - 650, 500                     详情页缩小 = True                 End If             End If         End If         If 复制链接 = false and 点击分享 = True Then //复制链接             If jsdvip.FindNode("By.res('com.smile.gifmaker:id/title').text('复制链接')") Then                 jsdvip.Click("By.res('com.smile.gifmaker:id/title').text('复制链接')")                 复制链接 = true                 进入商品页 = True                 Exit Do             End If         End If         ShowMessage "等待加载中"     Loop    End Function Function 位置计算(商品标题,顶部坐标Y,底部坐标Y,容错)     TracePrint "位置计算:",顶部坐标Y,底部坐标Y     标题坐标 = jsdvip.GetPoint("By.text('" & 商品标题 & "')")     If 标题坐标 <> Null Then         If 标题坐标[2] < 顶部坐标Y Then             TracePrint "太靠上了,下移一点"             TouchDown 中心坐标[1], 中心坐标[2],1             TouchMove 中心坐标[1], 中心坐标[2]+(顶部坐标Y-标题坐标[2])+容错,1,500             TouchUp 1         ElseIf 标题坐标[2] > 底部坐标Y Then             TracePrint "太靠下了,上移一点"             TouchDown 中心坐标[1], 中心坐标[2],1             TouchMove 中心坐标[1], 中心坐标[2]-(标题坐标[2]-底部坐标Y)-容错,1,500             TouchUp 1         End If     End If End Function Function 返回商品主页(退出节点)     Do         If jsdvip.FindNode("By.res('com.smile.gifmaker:id/back_btn_trans')") Then             jsdvip.Click ("By.res('com.smile.gifmaker:id/back_btn_trans')")//回放详情页返回         ElseIf jsdvip.FindNode("By.res('com.smile.gifmaker:id/title_tv').text('商品讲解回放')") Then             jsdvip.Click ("By.res('com.smile.gifmaker:id/right_btn')")//回放页面返回         ElseIf jsdvip.FindNode("By.res('com.smile.gifmaker:id/back_btn_opaque')") Then             jsdvip.Click("By.res('com.smile.gifmaker:id/back_btn_opaque')")//无回放页面返回         ElseIf jsdvip.FindNode(退出节点) Then             Exit Do//商品主页退出         Else             ShowMessage "等待返回首页"         End If     Loop End Function Function 获取口令()     Dim 商品口令     商品口令 = Sys.GetClipText()     If 商品口令 <> "" Then         获取口令() = 商品口令     Else         商品口令 = Dialog.InputBox("口令处理:")         获取口令() = 商品口令        End If End Function Function 保存口令(商品口令, 文件名)     Dim 文件路径,是否存在     文件路径 = "/sdcard/AnjianPdata/" & 文件名 & ".txt"     是否存在 = Dir.Exist(文件路径)     If 是否存在 = 2 Then         zm.FileCreate(文件路径)     ElseIf 是否存在 = 0 Then         zm.DirCreate("/sdcard/AnjianPdata/")         zm.FileCreate(文件路径)     End If     zm.FileWriteAppend(文件路径, 商品口令) End Function Function 判断新页面(节点)     Do         If jsdvip.FindNode(节点) Then             判断新页面 = True             Exit Do         ElseIf jsdvip.FindNode("By.res('com.ss.android.ugc.aweme:id/hdl')") Then             jsdvip.Click ("By.res('com.ss.android.ugc.aweme:id/hdl')")//抖音关闭直播小窗体         Else             ShowMessage "等待新页面"         End If     Loop End Function Sub 弹窗处理线程()     dim 运行条件     jsdvip.StartServer()     Do         If jsdvip.FindNode("By.text('口令处理:')") Then             If jsdvip.LongClick("By.clazz('android.widget.EditText')", 2000) Then                 If jsdvip.Click("By.clazz('android.widget.TextView').text('粘贴')") Then                     Delay 500                     jsdvip.Click ("By.clazz('android.widget.Button').text('确定')")                                End If                                 End If         End If         Delay 100     Loop End Sub
所有评论 0
您需要登录后才可以回档 登录 | 立即注册