為頭腦王者微信小程序做一個外掛

0.背景

每逢周六,如果手頭項目不緊,有空閑的話,大家會醞釀一個weekend的小項目, 這個周六下午,大家聊起了"頭腦王者"這個微信小程序,大家討論的不亦樂乎,忽然有人提議為這款游戲做一款問題查詢輔助類的程序,算不上外掛,姑且叫助手之類的吧.
離下班還有一個小時,于是乎大家開干......

Screen Shot 2018-01-28 at 00.05.38.png

1.思路

既然開始了,馬上就有了思路:

  1. 截取手機(jī)的屏幕 ,獲取題目的圖片
  2. 裁剪圖片,獲取題目部分的圖片
  3. 圖片通過OCR識別成文字,這個就是題目關(guān)鍵字
  4. 把題目關(guān)鍵字通過搜索引擎查詢,把查詢結(jié)果顯示出來
截取手機(jī)的屏幕 ,獲取題目的圖片
裁剪后的圖片,只有題目
OCR返回文字 就是題目關(guān)鍵字
Screen Shot 2018-01-28 at 01.00.27.png
通過搜索引擎查詢出結(jié)果

2.運(yùn)行

因為是周末項目,只有一個小時的時間,做的比較匆忙,算是拋磚引玉吧.
本來像抓取過來搜索結(jié)果,再做正則表達(dá)式處理,沒想到遇到了百度https加密的小坑,就直接采用webbrowser.open的方式打開.
實測手機(jī)出現(xiàn)題目,執(zhí)行程序大概2秒鐘就可以返回查詢結(jié)果,這個要遠(yuǎn)遠(yuǎn)高于你手工的操作,程序自動處理手機(jī)截屏,題目關(guān)鍵字的OCR識別,自動打開瀏覽器并查詢關(guān)鍵字,全部自動化了,希望能在"頭腦王者"過關(guān)斬將中助你一臂之力!

3.總結(jié)

作為一個weekend的練手項目,主要是提高我們程序人員的興趣,擴(kuò)大大家的知識面,這個提升大家的開發(fā)水平有很大幫助.
另外,我們程序猿們不僅有尋找BUG的煩惱,也有享受編程的快樂和生活的樂趣, Hello, World!


兩枚程序猿祝你周末愉快!

4.代碼

'''
這款頭腦王者微信小程序,最近是特別的火,借助微信朋友圈的這把火燒的得更旺了
我們周末的一個weekend小項目,做了一個 頭腦王者小助手
'''


import os
from PIL import Image
from aip import AipOcr  # 引入baidu文字識別OCR SDK
from urllib.parse import quote

# 定義常量
APP_ID = '你的APP_ID'
API_KEY = '你的API_KEY'
SECRET_KEY = '你的SECRET_KEY'


# 讀取圖片
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()


'''
適用于安卓手機(jī),通過adb命令截屏,并把圖片傳給電腦
'''


def screencap():
    mcom = "adb shell /system/bin/screencap -p /sdcard/mscreen.png"
    os.system(mcom)
    mcom = "adb pull /sdcard/mscreen.png ./mscreen.png"
    os.system(mcom)


'''
裁剪圖片,只把題目部分的截圖保存

'''


def cropimg():
    im = Image.open("mscreen.png")
    img_size = im.size
    print("圖片寬度和高度分別是{}".format(img_size))
    x = 50
    y = 400
    w = 650
    h = 200
    region = im.crop((x, y, x+w, y+h))
    region.save("screen.png")
    return "screen.png"


def ocr(imgUrl):
    # 初始化ApiOcr對象
    aipOcr = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    # 調(diào)用通用文字識別接口
    result = aipOcr.basicGeneral(get_file_content(imgUrl))

    print(result['words_result_num'])
    s = ''
    for i in range(result['words_result_num']):
        s += result['words_result'][i]['words']
    print(s)
    return s


def baidu(word):
    url = "http://www.baidu.com/s?wd=%s" %  quote(word)
    print(url)
    import webbrowser
    webbrowser.open(url)



if __name__ == "__main__":

    # 通過adb命令截屏,并把圖片傳給電腦
    #screencap()

    # 裁剪圖片,只把題目部分的截圖保存
    url = cropimg()

    # 調(diào)用baidu通用文字識別接口,返回識別的文字
    s = ocr(url)
    print(s)
    # 打開默認(rèn)瀏覽器,百度一下獲取的題目內(nèi)容
    baidu(s)


注意:本代碼的百度API需要換成你自己的API參數(shù),這個不費(fèi)事也就分分鐘的事情申請一個就OK.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,725評論 25 709
  • 轉(zhuǎn)載鏈接 注:本文轉(zhuǎn)載知乎上的回答 作者:初雪 鏈接:https://www.zhihu.com/question...
    pengshuangta閱讀 29,279評論 9 295
  • 江南的五月,早已過了草長鶯飛的季節(jié),是綠肥紅瘦的時候了。而三晉大地以乎剛從冬夢中醒來,山頂上還浮著積雪,陰山溝里還...
    浮舟笑滄海閱讀 828評論 16 74
  • ———那年夏天,風(fēng)遇見云,花遇見樹,螢火蟲遇見星光,而我遇見同桌的你。 一段感情的出現(xiàn),便是生命中注定的...
    sunshine_小丸子閱讀 625評論 1 3
  • http://www.amobbs.com/forum.php?mod=viewthread&tid=547232...
    three_eyelid閱讀 315評論 0 1

友情鏈接更多精彩內(nèi)容