為頭腦王者微信小程序做一個(gè)外掛

0.背景

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

Screen Shot 2018-01-28 at 00.05.38.png

1.思路

既然開(kāi)始了,馬上就有了思路:

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

2.運(yùn)行

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

3.總結(jié)

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


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

4.代碼

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


import os
from PIL import Image
from aip import AipOcr  # 引入baidu文字識(shí)別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ī),通過(guò)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對(duì)象
    aipOcr = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    # 調(diào)用通用文字識(shí)別接口
    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__":

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

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

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


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

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

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

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

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