小程序模板網(wǎng)

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

發(fā)布時(shí)間:2018-05-04 15:54 所屬欄目:小程序開(kāi)發(fā)教程

背景

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

 

1.思路

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

截取手機(jī)的屏幕 ,獲取題目的圖片 
裁剪圖片,獲取題目部分的圖片 
圖片通過(guò)OCR識(shí)別成文字,這個(gè)就是題目關(guān)鍵字 
把題目關(guān)鍵字通過(guò)搜索引擎查詢(xún),把查詢(xún)結(jié)果顯示出來(lái)

截取手機(jī)的屏幕 ,獲取題目的圖片 

裁剪后的圖片,只有題目 

OCR返回文字 就是題目關(guān)鍵字 

通過(guò)搜索引擎查詢(xún)出結(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秒鐘就可以返回查詢(xún)結(jié)果,這個(gè)要遠(yuǎn)遠(yuǎn)高于你手工的操作,程序自動(dòng)處理手機(jī)截屏,題目關(guān)鍵字的OCR識(shí)別,自動(dòng)打開(kāi)瀏覽器并查詢(xún)關(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è) 頭腦王者小助手

 

  1. import os
  2. from PIL import Image
  3. from aip import AipOcr # 引入baidu文字識(shí)別OCR SDK
  4. from urllib.parse import quote
 

  1. # 定義常量
  2. APP_ID = '你的APP_ID'
  3. API_KEY = '你的API_KEY'
  4. SECRET_KEY = '你的SECRET_KEY'
 

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

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

 

  1.  
  2.  
  3. def screencap():
  4. mcom = "adb shell /system/bin/screencap -p /sdcard/mscreen.png"
  5. os.system(mcom)
  6. mcom = "adb pull /sdcard/mscreen.png ./mscreen.png"
  7. os.system(mcom)
  8.  

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

 

  1.  
  2.  
  3. def cropimg():
  4. im = Image.open("mscreen.png")
  5. img_size = im.size
  6. print("圖片寬度和高度分別是{}".format(img_size))
  7. x = 50
  8. y = 400
  9. w = 650
  10. h = 200
  11. region = im.crop((x, y, x+w, y+h))
  12. region.save("screen.png")
  13. return "screen.png"
  14.  
  15.  
  16. def ocr(imgUrl):
  17. # 初始化ApiOcr對(duì)象
  18. aipOcr = AipOcr(APP_ID, API_KEY, SECRET_KEY)
  19. # 調(diào)用通用文字識(shí)別接口
  20. result = aipOcr.basicGeneral(get_file_content(imgUrl))
  21.  
  22. print(result['words_result_num'])
  23. s = ''
  24. for i in range(result['words_result_num']):
  25. s += result['words_result'][i]['words']
  26. print(s)
  27. return s
  28.  
  29.  
  30. def baidu(word):
  31. url = "http://www.baidu.com/s?wd=%s" % quote(word)
  32. print(url)
  33. import webbrowser
  34. webbrowser.open(url)
  35.  
  36.  
  37.  
  38. if __name__ == "__main__":
  39.  
  40. # 通過(guò)adb命令截屏,并把圖片傳給電腦
  41. #screencap()
  42.  
  43. # 裁剪圖片,只把題目部分的截圖保存
  44. url = cropimg()
  45.  
  46. # 調(diào)用baidu通用文字識(shí)別接口,返回識(shí)別的文字
  47. s = ocr(url)
  48. print(s)
  49. # 打開(kāi)默認(rèn)瀏覽器,百度一下獲取的題目?jī)?nèi)容
  50. baidu(s)

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



易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開(kāi)源 碼云倉(cāng)庫(kù):starfork
本文地址:http://22321a.com/wxmini/doc/course/24232.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢(xún):800182392 點(diǎn)擊咨詢(xún)
QQ在線咨詢(xún)