打python&adb組合拳,實現微信讀書永久免費讀

用過「微信讀書」的朋友都知道,若是咱們想閱讀全本的付費書籍,除了購買整本(使用書幣)外,還可使用無限卡。可不管是購買全書仍是無限卡,歸根結底都是要花銀子的。
除此以外,還有一種方式——用閱讀時長兌換書幣。根據目前微信讀書的兌換策略,閱讀半個小時,便可兌換1枚贈幣,每週最多可兌換10枚贈幣。所以,理論上每週咱們可使用5個小時的時間,得到最多10元等價書幣。
本篇文章博主就教你們一種方法,經過模擬書籍的手動翻頁,快速免費得到書幣的方法,該方法僅適用於Android平臺。
首先要配置好Android SDK環境變量和Python環境,最關鍵的是能夠正常使用adb命令。這一步就再也不贅述了,這裏簡要說明一下模擬翻頁的原理,注意看下面一行命令:shell

adb shell input swipe 1000 600 200 600bash

這一行指令包含兩部分操做:微信

  • adb shell:進入設備的Shell命令行;
  • input swipe 1000 600 200 600:模擬屏幕滑動,從x=1000,y=600座標處滑動到x=200,y=600座標處。即從右向左滑屏,也就是翻頁的觸摸操做; 好了,理解了這行命令後,剩下的事情就好辦多了。咱們只須要間隔一段時間,循環執行這句話便可。即將下面兩行命令放在循環中,循環的次數由書籍的未讀頁數決定。
time.sleep(random.uniform(rv_t1,rv_t2))
run('adb shell input swipe 1000 600 200 600', shell=True)
複製代碼

爲了儘可能模擬人類閱讀的真實性,這裏的時間間隔是給定時間範圍內的隨機值。
最後,爲了更方便地使用這個腳本,除了正序(即從右向左滑屏)外,還增長了倒序(即從左向右滑屏)和無盡模式(即正序結束後自動倒序,倒序結束後自動正序,循環往復)。完整的Python腳本以下:dom

# encoding:utf-8


from subprocess import run
import time
import random
import os

def book(rv_sel, rv_page_num, rv_t1, rv_t2):
    rv_sel = int(rv_sel)
    if rv_sel == 1:
        print('程序運行中')
        for i in range(rv_page_num):
            time.sleep(random.uniform(rv_t1,rv_t2))
            run('adb shell input swipe 1000 600 200 600', shell=True)
            n = i + 1
            print('總計需翻閱 %d 頁,已翻閱 %d 頁,剩餘 %d 頁' % (rv_page_num, n, rv_page_num - n))
        exit()
    elif rv_sel == 2:
        print('程序運行中')
        for i in range(rv_page_num):
            time.sleep(random.uniform(rv_t1,rv_t2))
            run('adb shell input swipe 200 600 1000 600', shell=True)
            n = i + 1
            print('總計需翻閱 %d 頁,已翻閱 %d 頁,剩餘 %d 頁' % (rv_page_num, n, rv_page_num - n))
        exit()
    else:
        print()
        print('* ' * 8, '1.正循環-倒循環,無限循環', '* ' * 8)
        print('* ' * 8, '2.倒循環-正循環,無限循環', '* ' * 8)
        print()
        loop = int(input('請選擇循環方式:'))
        print('程序運行中')
        if loop == 1:
            while 1:
                for i in range(rv_page_num):
                    time.sleep(random.uniform(rv_t1,rv_t2))
                    run('adb shell input swipe 1000 600 200 600', shell=True)
                    n = i + 1
                    print('總計需翻閱 %d 頁,已翻閱 %d 頁,剩餘 %d 頁' % (rv_page_num, n, rv_page_num - n))
                for i in range(rv_page_num):
                    time.sleep(random.uniform(rv_t1,rv_t2))
                    run('adb shell input swipe 200 600 1000 600', shell=True)
                    n = i + 1
                    print('總計需翻閱 %d 頁,已翻閱 %d 頁,剩餘 %d 頁' % (rv_page_num, n, rv_page_num - n))
        else:
            while 1:
                for i in range(rv_page_num):
                    time.sleep(random.uniform(rv_t1,rv_t2))
                    run('adb shell input swipe 200 600 1000 600', shell=True)
                    n = i + 1
                    print('總計需翻閱 %d 頁,已翻閱 %d 頁,剩餘 %d 頁' % (rv_page_num, n, rv_page_num - n))
                for i in range(rv_page_num):
                    time.sleep(random.uniform(rv_t1,rv_t2))
                    run('adb shell input swipe 1000 600 200 600', shell=True)
                    n = i + 1
                    print('總計需翻閱 %d 頁,已翻閱 %d 頁,剩餘 %d 頁' % (rv_page_num, n, rv_page_num - n))

def rand_time(rv_xh):
    if int(rv_xh) == 1:
        return 10,20
    else:
        while 1:
            t1 = int(input('請輸入最小等待時間:'))
            t2 = int(input('請輸入最大等待時間:'))
            if t2 >= t1:
                return t1,t2
                break
            else:
                print('最小時間不得小於最大時間,請從新輸入')

print('* ' * 50,)
print('請選擇翻頁間隔時間:')
print('1.預設(10秒 - 20秒之間):')
print('2.自定義(大於0):',)
print('* ' * 50,)
while 1:
    xh = input('請輸入序號:')
    if xh == '':
        print('輸入有誤,請從新輸入')
    elif xh in str([1,2]):
        t1,t2 = rand_time(xh)
        break
    else:
        print('輸入有誤,請從新輸入')
while 1:
    print()
    print('* ' * 8, '1.正序', '* ' * 8)
    print('* ' * 8, '2.倒序', '* ' * 8)
    print('* ' * 8, '3.無盡', '* ' * 8)
    print()
    sel = input('請選擇翻書方式:')
    if sel in str([1,2,3]):
        page_num = int(input('請輸入書籍總頁數:'))
        book(sel,page_num,t1,t2)
    elif sel == '':
        print('輸入錯誤')
    else:
        print('輸入錯誤')
複製代碼

下面開始鏈接真機,而後啓動App,隨便打開一本書,最後打開命令行,運行這個Python腳本吧!提醒一下:不要忘了去兌換書幣,不然這些努力就白費了。
最後,請廣大讀者在經濟容許的狀況下購買正版書籍,支持做者和出版社。oop

相關文章
相關標籤/搜索