在某一天赶课比较着急,奈何找不到人可以帮我,于是自己动手写了一个简单的脚本来学习

准备工作:

1、需要一个你不用的手机,打开手机的adb,因为需要用到adb来操作手机

2、进入百度智能云,申请一个 通用的文字识别带位置的,新用户好像是送1000次,对我来说够用了



3、电脑配置好adb的环境

关于python和adb的版本:

关于百度智能云的调用,百度给出了一个详细的指导

下面是自己写的一个小脚本,仅供参考学习

我能力有限,有很多细节没有处理好,比如,有的时候一个章节会学习两遍,但对于我来说不耽误事就行。可以自己修改完善

大佬轻喷,感谢

  1. # encoding:utf-8
  2. import sys
  3. import os
  4. import copy
  5. import requests
  6. import base64
  7. import time
  8. import json
  9. import re
  10. class xuexitong:
  11. def PngGrab(): #抓取图片
  12. os.system("adb exec-out screencap -p > C:\\Users\\Administrator\\Desktop\\photo\\hhh.png")
  13. print("抓取图片成功")
  14. time.sleep(2)
  15. def ReturnKek():#返回键
  16. os.system("adb shell input keyevent 4")
  17. print("按下返回键")
  18. time.sleep(2)
  19. def ClickPlay():#点击屏幕中间进行播放
  20. os.system("adb shell input tap 402 527")
  21. print("点击屏幕播放")
  22. time.sleep(2)
  23. def SlideScreen():#向下滑动
  24. os.system("adb shell input swipe 500 900 500 850")
  25. print("向下滑动")
  26. def SleepTimes(usertime):#等待时间
  27. waittime = usertime*60
  28. time.sleep(waittime)
  29. def ClickButton(p_top,p_left,p_width,p_height): #点击获取到的坐标
  30. p_x = int(p_left + (p_width - p_width/3))
  31. p_y = int(p_top + p_height/2)
  32. strposition = "adb shell input tap "+str(p_x)+" "+str(p_y)
  33. os.system(strposition)
  34. time.sleep(8)
  35. def AnalysisText():#对解析的字符串进行处理
  36. '''
  37. 0,为列表界面
  38. 1,为播放界面
  39. 2,为没有内容
  40. '''
  41. flag = -1
  42. m_PngAnalysisStr = xuexitong.PngAnalysis()
  43. if(m_PngAnalysisStr.find("高清")!=-1):
  44. flag = 1
  45. print("当前模式为播放视频模式")
  46. else:
  47. flag = 0
  48. print("当前模式为界面模式")
  49. if(m_PngAnalysisStr.find("未编辑内容") > 0):
  50. flag = 2
  51. print("该小章节没有内容")
  52. if(m_PngAnalysisStr == "false"):
  53. print("解析错误,直接返回")
  54. exit(0)
  55. if(flag==-1):
  56. print("不清楚此刻的状态,返回")
  57. exit(0)
  58. if(flag==1):
  59. json_str = m_PngAnalysisStr.replace("'",'"')
  60. result = json.loads(json_str)
  61. num = result['words_result_num']
  62. for i in range(0,num):
  63. str_search = result['words_result'][i]['words']
  64. regex = re.compile('[0-9][0-9]:[0-9][0-9]/[0-9][0-9]:[0-9][0-9]')
  65. if(regex.findall(str_search)):
  66. str_search = str_search[6:8]
  67. sleeptimenum = int(str_search)+1
  68. print("解析成功,请等待时间:",sleeptimenum)
  69. xuexitong.SleepTimes(sleeptimenum)
  70. print("播放结束")
  71. return 1
  72. if(flag==0):
  73. json_str = m_PngAnalysisStr.replace("'",'"')
  74. result = json.loads(json_str)
  75. num = result['words_result_num']
  76. for i in range(7,num):
  77. str_search = result['words_result'][i]['words']
  78. regex = re.compile('[0-9]\.[0-9]\w*')
  79. if(regex.findall(str_search)):
  80. if(str_search.find("本章测验")==-1):
  81. print("找到需要学习的章节:",str_search)
  82. #def ClickButton(p_top,p_left,p_width,p_height): #点击获取到的坐标
  83. m_top = result['words_result'][i]['location']['top']
  84. m_left = result['words_result'][i]['location']['left']
  85. m_width = result['words_result'][i]['location']['width']
  86. m_height = result['words_result'][i]['location']['height']
  87. xuexitong.ClickButton(m_top,m_left,m_width,m_height)
  88. break
  89. if(flag==2):
  90. return 2
  91. def PngAnalysis():#解析当前的图片
  92. request_url = "百度api的网址"
  93. # 二进制方式打开图片文件
  94. imgPath = "C:\\Users\\Administrator\\Desktop\\photo\\hhh.png"
  95. f = open(imgPath,'rb')
  96. img = base64.b64encode(f.read())
  97. params = {"image":img}
  98. access_token = '这里是你的access_token'
  99. request_url = request_url + "?access_token=" + access_token
  100. headers = {'content-type': '百度中有详细说明'}
  101. response = requests.post(request_url, data=params, headers=headers)
  102. if response:
  103. return response.text
  104. else:
  105. return "false"
  106. if __name__=='__main__':
  107. '''
  108. 1、正常播放看完
  109. 2、里面没有内容
  110. '''
  111. obj1 = xuexitong
  112. while(1):
  113. time.sleep(2)
  114. print("开始抓取界面列表")
  115. xuexitong.PngGrab()
  116. print("开始分析界面")
  117. time.sleep(5)
  118. xuexitong.AnalysisText()
  119. xuexitong.ClickPlay() #点击播放
  120. print("判断是否有内容")
  121. time.sleep(5)
  122. xuexitong.ClickPlay() #点击显示
  123. xuexitong.PngGrab()
  124. implementResult = xuexitong.AnalysisText()
  125. if(implementResult == 1):
  126. xuexitong.ReturnKek()
  127. xuexitong.ReturnKek()
  128. if(implementResult == 2):
  129. xuexitong.ReturnKek()
  130. xuexitong.SlideScreen()

使用python和adb来学习(学习通)的更多相关文章

  1. (转)Python之路,Day6 - 面向对象学习

    本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.     引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战> ...

  2. 编写高质量代码改善python程序91个建议学习01

    编写高质量代码改善python程序91个建议学习 第一章 建议1:理解pythonic的相关概念 狭隘的理解:它是高级动态的脚本编程语言,拥有很多强大的库,是解释从上往下执行的 特点: 美胜丑,显胜隐 ...

  3. Python自动化培训第一周学习总结

    Python自动化培训第一周学习结束,看视频复习,把作业完成了. 总体来说,开卷有益. 首先,工具真是好东西,能够极大提升效率,也是人区别于动物所在.想起前任大领导对工具的不屑,本质也是对效率的不屑, ...

  4. python实用库:PrettyTable 学习

    python实用库:PrettyTable 学习 PrettyTable说明 PrettyTable 是python中的一个第三方库,可用来生成美观的ASCII格式的表格,十分实用. 以下为官方介绍: ...

  5. Python 日期时间处理模块学习笔记

    来自:标点符的<Python 日期时间处理模块学习笔记> Python的时间处理模块在日常的使用中用的不是非常的多,但是使用的时候基本上都是要查资料,还是有些麻烦的,梳理下,便于以后方便的 ...

  6. 《Think Python》第17章学习笔记

    目录 <Think Python>第17章学习笔记 17.1 面向对象的特性(Object-oriented features) 17.2 打印对象(Printing objects) 1 ...

  7. 《Think Python》第16章学习笔记

    目录 <Think Python>第16章学习笔记 16.1 Time 16.2 纯函数(Pure functions) 16.3 修改器(Modifiers) 16.4 原型 vs. 方 ...

  8. 《Think Python》第15章学习笔记

    目录 <Think Python>第15章学习笔记 15.1 程序员定义的类型(Programmer-defined types) 15.2 属性(Attributes) 15.3 矩形( ...

  9. 马哥教育python网络班19期 学习目标

    马哥教育python网络班19期 学习目标: (1)按群里的学习进度表,来自行学习,学完时间6个月. (2)学完后,薪资能达到20K+每月.

  10. 孤荷凌寒自学python第八十一天学习爬取图片1

    孤荷凌寒自学python第八十一天学习爬取图片1 (完整学习过程屏幕记录视频地址在文末) 通过前面十天的学习,我已经基本了解了通过requests模块来与网站服务器进行交互的方法,也知道了Beauti ...

随机推荐

  1. 用Echarts实现SpreadJS引用从属关系可视化

    在金融行业,我们经常会有审计审查的需求,对某个计算结果进行审查,但是这个计算结果可能依赖多个单元格,而且会有会有多级依赖的情况,如果让我们的从业人员靠眼睛找,工作量巨大,而且准确性存疑,基本上死路一条 ...

  2. 数据结构 传统链表实现与Linux内核链表

    头文件: #pragma once #include<stdlib.h> //链表结点 struct LinkNode{ void *data; struct LinkNode *next ...

  3. Windows 11 内核新调试器「GitHub 热点速览 v.23.01」

    本周热点趋势榜虽然新项目不多,但是还是有几个不错值得收藏的工具项目,比如用来做文本转语音的 tortoise-tts 能生成更加贴近真实人声的语音,让 Golang 并发更出色的 conc,以及通过 ...

  4. P8796 [蓝桥杯 2022 国 AC] 替换字符

    题面 给定一个仅含小写英文字母的字符串 \(s\) 和 \(m\) 次操作,每次操作选择一个区间 \([l_i,r_i]\) 将 \(s\) 的该区间中的所有字母 \(x_i\) 全部替换成字母 \( ...

  5. 最大公约数gcd和最小公倍数lcm

    迭代版本 int gcd(int a, int b) { while (b != 0) { int r = a % b; a = b; b = r; } return a; } int lcm(int ...

  6. 从0-1超详细教你实现前端读取excel表格并渲染到界面

    @ 目录 说明 前提 代码仓库 步骤一:准备工作 步骤二:实现导入表格解析 步骤三:实现表格渲染 结语 本文旨在解决无需调用后端接口,实现前端读取表格文件,获取文件内容,渲染到界面的需求 我的其他文章 ...

  7. angular2-qrcode 引用报错 error NG8001: 'qr-code' is not a known element:

    error NG8001: 'qr-code' is not a known element: 解决方案 假如你的组件模块叫做a-demo.module,你的组件叫做print.component.t ...

  8. 11月29日内容总结——SQL注入问题、视图、触发器、事务、存储过程、函数、流程控制、索引、慢查询、数据库三大范式

    目录 一.SQL注入问题 SQL注入问题引入 SQL注入概念和解决方案 二.视图 三.触发器 定义 代码 1.触发器命名有一定的规律 2.临时修改SQL语句的结束符 四.事务 事务的四大特性(ACID ...

  9. 编程哲学之 C# 篇:003——为什么选择 C#

    国内开设C#课程的学校或培训机构是越来越少,使用C#作为开发的语言企业也是越来越少.企业要招C#的开发人员越来越难,会C#的要开发人员要找工作也是越来越难,然后我还是选择C#作为本系列的主要语言,我给 ...

  10. mvn引用本地包

    <dependency> <groupId>jna</groupId> <artifactId>jna</artifactId> <s ...