社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python 获取微信读书免费机会!

编程派 • 5 年前 • 691 次点击  

微信读书 App 的体验不错,也有很多的福利。但是如果你想完全免费阅读的话,就只能有书币兑换和赠一得一这两种途径了。本文介绍了自动化阅读获取书币的一个方案,有时间有兴趣的朋友可以尝试。

但是,这种方案的投产比还是很低的。基本都要挂 2周以上才能兑换一本自己喜欢的书。

文 | 萧文翰 出处 |     前端开发实用技巧公众号

用过“微信读书”的朋友都知道,如果我们想阅读全本的付费书籍,除了购买整本(使用书币)外,还可以使用无限卡。可无论是购买全书还是无限卡,归根结底都是要花银子的。

除此之外,还有一种方式——用阅读时长兑换书币。

根据目前微信读书的兑换策略,阅读半个小时,即可兑换1枚赠币,每周最多可兑换10枚赠币。因此,理论上每周我们可以使用5个小时的时间,获得最多10元等价书币。

本篇文章博主就教大家一种方法,通过模拟书籍的手动翻页,快速免费获得书币的方法,该方法仅适用于Android平台。

首先要配置好Android SDK环境变量和Python环境,最关键的是可以正常使用adb命令。这一步就不再赘述了,这里简要说明一下模拟翻页的原理,注意看下面一行命令:

adb shell input swipe 1000 600 200 600

这一行指令包含两部分操作:

  1. adb shell:进入设备的Shell命令行;

  2. input swipe 1000 600 200 600:模拟屏幕滑动,从x=1000,y=600坐标处滑动到x=200,y=600坐标处。即从右向左滑屏,也就是翻页的触摸操作;

好了,理解了这行命令后,剩下的事情就好办多了。我们只需要间隔一段时间,循环执行这句话即可。即将下面两行命令放在循环中,循环的次数由书籍的未读页数决定。

  1. time.sleep(random.uniform(rv_t1,rv_t2))

  2. run('adb shell input swipe 1000 600 200 600', shell=True)

为了尽量模拟人类阅读的真实性,这里的时间间隔是给定时间范围内的随机值。

最后,为了更方便地使用这个脚本,除了正序(即从右向左滑屏)外,还增加了倒序(即从左向右滑屏)和无尽模式(即正序结束后自动倒序,倒序结束后自动正序,循环往复)。

完整的Python脚本如下:

  1. # encoding:utf-8



  2. from subprocess import run

  3. import time

  4. import random

  5. import os


  6. def book(rv_sel, rv_page_num, rv_t1, rv_t2):

  7. rv_sel = int(rv_sel)

  8. if rv_sel == 1:

  9. print('程序运行中')

  10. for i in range (rv_page_num):

  11. time.sleep(random.uniform(rv_t1,rv_t2))

  12. run('adb shell input swipe 1000 600 200 600', shell=True)

  13. n = i + 1

  14. print('总计需翻阅 %d 页,已翻阅 %d 页,剩余 %d 页' % (rv_page_num, n, rv_page_num - n))

  15. exit()

  16. elif rv_sel == 2:

  17. print('程序运行中')

  18. for i in range(rv_page_num):

  19. time.sleep(random.uniform(rv_t1,rv_t2))

  20. run('adb shell input swipe 200 600 1000 600', shell=True)

  21. n = i + 1

  22. print('总计需翻阅 %d 页,已翻阅 %d 页,剩余 %d 页' % (rv_page_num, n, rv_page_num - n))

  23. exit()

  24. else:

  25. print()

  26. print('* ' * 8, '1.正循环-倒循环,无限循环', '* ' * 8)

  27. print('* ' * 8, '2.倒循环-正循环,无限循环', '* ' * 8)

  28. print()

  29. loop = int(input('请选择循环方式:'))

  30. print('程序运行中')

  31. if loop == 1:

  32. while 1:

  33. for i in range(rv_page_num):

  34. time.sleep(random.uniform(rv_t1,rv_t2))

  35. run('adb shell input swipe 1000 600 200 600', shell=True)

  36. n = i + 1

  37. print('总计需翻阅 %d 页,已翻阅 %d 页,剩余 %d 页' % (rv_page_num, n, rv_page_num - n))

  38. for i in range(rv_page_num):

  39. time.sleep(random.uniform(rv_t1,rv_t2))

  40. run('adb shell input swipe 200 600 1000 600', shell =True)

  41. n = i + 1

  42. print('总计需翻阅 %d 页,已翻阅 %d 页,剩余 %d 页' % (rv_page_num, n, rv_page_num - n))

  43. else:

  44. while 1:

  45. for i in range(rv_page_num):

  46. time.sleep(random.uniform(rv_t1,rv_t2 ))

  47. run('adb shell input swipe 200 600 1000 600', shell=True)

  48. n = i + 1

  49. print('总计需翻阅 %d 页,已翻阅 %d 页,剩余 %d 页' % (rv_page_num, n, rv_page_num - n))

  50. for i in range(rv_page_num):

  51. time.sleep(random.uniform(rv_t1,rv_t2))

  52. run ('adb shell input swipe 1000 600 200 600', shell=True)

  53. n = i + 1

  54. print('总计需翻阅 %d 页,已翻阅 %d 页,剩余 %d 页' % (rv_page_num, n, rv_page_num - n))


  55. def rand_time(rv_xh):

  56. if int(rv_xh) == 1:

  57. return 10,20

  58. else:

  59. while 1:

  60. t1 = int(input('请输入最小等待时间:'))

  61. t2 = int(input('请输入最大等待时间:'))

  62. if t2 >= t1:

  63. return t1,t2

  64. break

  65. else:

  66. print('最小时间不得小于最大时间,请重新输入' )


  67. print('* ' * 50,)

  68. print('请选择翻页间隔时间:')

  69. print('1.预设(10秒 - 20秒之间):')

  70. print('2.自定义(大于0):',)

  71. print('* ' * 50,)

  72. while 1:

  73. xh = input('请输入序号:')

  74. if xh == '':

  75. print('输入有误,请重新输入')

  76. elif xh in str([1,2]):

  77. t1,t2 = rand_time(xh)

  78. break

  79. else:

  80. print('输入有误,请重新输入')

  81. while 1:

  82. print()

  83. print( '* ' * 8, '1.正序', '* ' * 8)

  84. print('* ' * 8, '2.倒序', '* ' * 8)

  85. print('* ' * 8, '3.无尽', '* ' * 8)

  86. print()

  87. sel = input('请选择翻书方式:')

  88. if sel in str([1,2,3]):

  89. page_num = int(input('请输入书籍总页数:'))

  90. book(sel,page_num,t1,t2)

  91. elif sel == '':

  92. print('输入错误')

  93. else:

  94. print('输入错误')

下面开始连接真机,然后启动App,随便打开一本书,最后打开命令行,运行这个Python脚本吧!提醒一下:不要忘了去兑换书币,否则这些努力就白费了。

最后,请广大读者在经济允许的情况下购买正版书籍,支持作者和出版社。


回复下方「关键词」,获取优质资源


回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「入门资料」,立即获取主页君整理的 10 本 Python 入门书的电子版

回复关键词「m」,立即获取Python精选优质文章合集

回复关键词「book 数字」,将数字替换成 0 及以上数字,有惊喜好礼哦~


推荐阅读



题图:pexels,CC0 授权。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49948
 
691 次点击