當前位置:
首頁 > 知識 > 程序員告訴你如何用技術手段玩轉沖頂大會

程序員告訴你如何用技術手段玩轉沖頂大會

作者簡介:楊光,CSDN 博客專家,中科院軟體所研發工程師,曾參與網易熱、網易花田的研發工作,擅長移動應用開發,平時喜歡彈琴,也經常在博客中寫一些技術文章,歡迎一起交流討論。博客:http://blog.csdn.net/steveyg

聲明:本文精選自 CSDN 博客,已獲作者授權,內容僅供技術學習交流。

最近一兩天,「直播答題」已席捲互聯網。王思聰力推《沖頂大會》、周鴻禕的花椒直播上線《百萬作戰》、今日頭條&西瓜視頻推出《百萬英雄》、映客在線答題《芝士超人》、一直播的《黃金十秒》……彷彿一夕之間,眾多互聯網直播版《開心辭典》冒了出來。

程序員告訴你如何用技術手段玩轉沖頂大會

這些直播答題的題目範圍涉及很廣,天文地理歷史科學娛樂影視音樂詩歌禮儀等,每次活動共 12 道題,也難怪王思聰會挑釁地說「覺得自己很聰明可以來試試」,反正,規則就是 10 秒中之內未答題和答錯題都將被淘汰,且無法角逐當期的獎金。

雖然通過邀請好友可以獲得復活次數,但是畢竟復活很寶貴,而且每輪只能復活一次,如果復活之後答錯會更加可惜。那麼怎麼樣才能夠短時間內提升我們的準確率呢?

原理說明

1. 手機進入沖頂大會(或其他答題類 App);

2. 獲取屏幕截圖:

  • iPhone 可以通過 WDA 進行圖片截取,或者通過 AirPlay/QuickTime 投影到電腦上截取,Mac 顯示 iPhone 屏幕可參考教程:https://jingyan.baidu.com/article/64d05a02514064de54f73b7c.html

  • Android 可以通過 adb 截圖並拉取到本地。

#adb進行截圖 adb shell screencap -p /sdcard/autojump.png
adb pull /sdcard/autojump.png .

3. 通過 OCR 將題目和選項識別出來,此處使用了百度的 OCR,你也可以選用任意你喜歡的 OCR,如 tesseract-ocr 等;

4. 使用三種方法對識別出的問題進行判斷。

#直接用瀏覽器打開問題 def open_wabpage(question): webbrowser.open("https://baidu.com/s?wd=" + question) #根據問題搜索結果計算每個選項出現的次數 def words_count(question,answers): print "根據詞頻:" req = requests.get(url="http://www.baidu.com/s", params={"wd": question}) body = req.text counts = [] for answer in answers: num = body.count(answer) counts.append(num) print answer + " ---> " + str(num) return counts; #計算問題+每個選項搜索的結果數 def search_count(question,answers): print "根據結果數量:" counts = [] for answer in answers: req = requests.get(url="http://www.baidu.com/s", params={"wd": question +"%20"+answer}) body = req.text start = body.find(u"百度為您找到相關結果約") + 11 body = body[start:] end = body.find(u"個") num = body[:end] num = num.replace(",", "") counts.append(num) print answer + " ---> " + str(num)
return counts

第一種方式是最直接的,但是打開瀏覽器比較耗時,而且不方便,所以將它作為優先順序最低的可選操作。後兩種方式能夠較為準確的得出問題和每個選項之間的關聯關係,綜合他們的結果進行選擇。

使用教程

1. 下載代碼並安裝 Python 2.7 環境,代碼地址見文末;

2. 安裝百度 ORC 庫;

pip install baidu-aip

3. 在百度雲(https://cloud.baidu.com/product/ocr.html)中創建一個項目,獲取相應的 App ID、API Key 以及 secret_key,在 config.py 中進行替換;

4. 在 img_utils 中選擇你喜歡的獲取圖片的方式,並且調整截圖區域;

5. 在終端中運行。

python main.py

搜索相應的問題吧!

運行截圖

程序員告訴你如何用技術手段玩轉沖頂大會

更新

2018.01.11 沖頂大會增加了 API 直接抓題功能,幾乎無需配置即可分析答案,詳情見文末 GitHub。

輔助工具只能夠提升準確率,對於一些很坑很怪的問題可能依然會存在一定問題,後面會不斷對判斷策略進行優化,也歡迎大家提出一些更優的策略。

代碼地址:https://github.com/steveyg/AnswerHelper

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

TAG:CSDN |