微信读书有一个鼓励机制, 一周阅读 5 小时可兑换 10 书币, 每周日晚清空一周的总读书时长, 没兑换的时长不计入下一周(1 书币 == 1 块钱)
作为一个经常加班的程序猿, 一周刷 5 个小时, 有点困难, 所以只好请一些自动化测试工具来帮忙(刷时长真是一个古老而有效的技能), 花了一天的时间, 终于完成了~
最终效果
第一步: 安装网易 mumu, 通过应用中心安装微信读书
网页 mumu 下载地址: http://mumu.163.com/
在网易 mumu 模拟器内安装微信读书
第二步: 下载安装 python 环境
下载地址: https://www.python.org/downloads/
通过 python 自带的 pip 安装依赖包 uiautomator
pip install uiautomator
第三步: 获取 adb, 将 adb 连接到 mumu 所在的 127.0.0.1:7555
adb 相当于 mumu 的驱动, 我找到了一个无需安装的版本, 解压即用, adb 压缩包里的文件如下图(文末提供了下载的链接)
测试: 启动 mumu, 右键 cmd.exe, 以管理员身份启动, 在终端内输入
adb connect 127.0.0.1:7555
, adb 即可成功连接到 mumu(注意: 这里一定要先启动 mumu, 再输入
adb connect 127.0.0.1:7555
, 否则 adb 无法连接成功)
第四步: 启动脚本, 刷时长
为了方便, 我把脚本 wx_read_auto.py 放到了 adb 的目录下
打开 mumu 内的微信读书的某一页, 启动脚本
源码: 刷时长脚本 wx_read_auto.py
- from uiautomator import device as d
- import time
- import datetime
- import random
- # 点亮屏幕
- def lightScreen():
- d.screen.on()
- # 自动翻页, 翻页后休息 5-10 秒钟
- def autoSwipe():
- # 假装看书 45-55 秒钟(假装是人类在看书...)
- read_time = random.randint(45,50)
- time.sleep(read_time)
- print("阅读花费:",read_time,"秒")
- # 从 (1000,500) 到(30,500)
- d.swipe(1000, 500, 30, 500) #这里需要根据你的模拟器的具体坐标测试
- # 休息一段时间(休息的时间 = 60 秒 - 看书的秒数)
- time.sleep(60-read_time)
- print("休息",60-read_time,"秒, 放松下眼睛~")
- # 执行 5 小时(300 分钟)
- if __name__ == '__main__':
- all_time = 300
- user_input_time = input("请输入需要阅读的分钟数(请输入正整数):")
- try:
- user_input_time = int(user_input_time)
- if (user_input_time> 0):
- print("程序将会执行",user_input_time,"分钟")
- all_time = user_input_time
- except:
- print("您输入的值不合法, 将使用默认参数 300, 程序将会自动执行 5 小时")
- pass
- for i in range(all_time):
- lightScreen()
- print("自动点亮屏幕, 开始阅读...")
- autoSwipe()
- print("==>已经阅读", i+1 ,"分钟", "还差", all_time-i-1,"分钟完成阅读")
小结:
来源: http://www.jianshu.com/p/fffaf97ccf11