go實現西瓜視訊花椒直播等平臺智慧答題

chain發表於2018-01-16

本文為轉載,原文:go 實現西瓜視訊花椒直播等平臺智慧答題

Golang

本文原始碼

本文原始碼

介紹

最近出了很多答題平分獎金的直播,只要能夠連續答對 12 道題,就能與所有答對的人一起平分獎池裡的獎金,20 萬到 500 萬不等。當這個時候,我才體會到 “書到用時方恨少” 這句至理名言。這時突然想到,咦!我們不是有無所不知的網際網路嗎,題目拿到百度中一搜不就完了。可是一看答題時間只有 10 秒,儘管我有著單身 20 多年的手速,也愣是做不到呀。再一想,我特麼是程式猿呀,這種事還需要我親自動手? 於是一通百度,找到了個大神的 java 智慧答題的原始碼,這裡把大神的原始碼地址貼出來供大家參考:https://github.com/lingfengsan/MillionHero

然而,我學了這麼一大段時間的 go 語言,能不能用 go 來實現一下呢。 於是就動手嘗試了一下,思路與前面提到的 java 的工具差不多。下面就來說道說道我是怎麼實現的。

思路

  1. 手機與電腦連線,並開啟直播頁面
  2. 當頁面出題時,通過 adb 截圖並儲存到電腦
  3. 通過百度 AI 文字識別,提取圖片中的題目和選項的文字
  4. 使用百度搜尋並,然後統計搜尋得到結果數量
  5. 比較搜尋到的結果數量並排序
  6. 否定的問題選擇數量最少的選項,肯定的問題選數量最多的選項。

環境

硬體

  • windows 電腦一臺
  • 安卓手機一部
  • 安卓資料線一根

軟體

  • golang 開發環境
  • adb 安卓除錯驅動

其他

  • 百度 AI 開發者平臺建立一個文字識別的應用

環境搭建

硬體就沒有什麼好說的了。這裡主要說下軟體。

golang 開發環境

首先,肯定是要下載安裝包啦,這裡給個下載地址,自己根據情況選擇版本下載:golang 安裝包 (i386 表示 x86,amd64 表示 x64)。

安裝完 Go 之後,我們最好還是檢查一些所有的環境變數是否正常。主要的環境變數有以下幾個:

  • GOROOT:Go 的安裝目錄
  • GOPATH:用於存放 Go 語言 Package 的目錄,這個目錄不能在 Go 的安裝目錄中
  • GOBIN:Go 二進位制檔案存放目錄,寫成%GOROOT%\bin 就好
  • PATH:需要將%GOBIN% 加在 PATH 變數的最後,方便在命令列下執行 Go

完成之後在 cmd 視窗輸入:go version

go version

如圖所示,表示我們已經安裝配置成功。

然後就是 IDE 了,這個就更簡單了。直接用記事本都可以,當然也可以用些輕量的編輯器,vscode, vim 都是可以的。也可以用 goland 等。這些看自己的愛好。反正我是用的 vscode。

adb 安裝

adb 的全稱為 Android Debug Bridge 除錯橋,是連線 Android 手機與 PC 端的橋樑,通過 adb 可以管理、操作模擬器和裝置,如安裝軟體、檢視裝置軟硬體引數、系統升級、執行 shell 命令等。 這裡先給一個下載地址:adb 下載地址 (有積分的大佬們從我這裡下吧,我一分都沒有了,想賺點分) 下載完成後安裝好即可。然後把安裝好的路徑配置到環境變數中去,方便我們在 cmd 視窗下使用 adb 命令。配置好後,可以在 cmd 視窗下執行adb devices 命令:

adb devices

從圖中可以看到,這裡我們啟動了 adb,並且給了個裝置列表,因為我沒有連線安卓裝置,所以沒有東西顯示。 這個時候,我們把安卓手機用資料線連線到電腦,並在手機上開啟 USB 除錯選項。設定->開發者選項->USB除錯,不同的品牌的手機可能有差別,百度一下你就知道。 有時候可能做到這些還是列不出你的裝置。這時候再需要做以下事情:

  1. 在計算機管理中裝置管理中找到你的裝置,然後右擊->屬性->詳細資訊->在詳細資訊頁面的屬性中找到硬體 ID,再複製的硬體 ID,我的手機是魅族,我的硬體 ID 是:2A45
  2. C:\Users\你的使用者名稱\.android目錄下找到 adb_usb.ini 檔案,如果沒有自己新建。然後把你剛剛複製的硬體 ID 寫進去,由於這個 ID 是 16 進位制的,所以前面加上 0x, 即:0x2A45
  3. 重啟 adb,停止 Adb:adb kill-server,啟動 adb:adb start-server。 完成這些應該就可以了。如果還是不行,請自行百度。

至此,我們的環境算是完成了。

實驗

實驗之前,肯定是下載原始碼嘍,當然還有少不了的依賴包。 這裡我用了個 baidu-ai-sdk 的包。 可以通過以下命令完成安裝:

go get github.com/chenqinghe/baidu-ai-go-sdk

然後通過 git 下載我的原始碼:

git clone https://github.com/Chain-Zhang/answer_ai.git

我們先看下 main 函式的內容

func main(){
    for {
        var cmd string
        fmt.Printf("> ")
        fmt.Scan(&cmd)
        switch cmd{
        case "1":
            ai.Start()
        case "2":
            ai.ExeCommand("cmd", []string{"/c", "adb", "devices"})
        case "exit":
            os.Exit(1)
        }
    }
}

從程式碼中可以看到,在程式執行的時候會等待使用者的輸入。

  1. 當輸入 1 時會進行截圖答題的操作。
  2. 當輸入 2 時會列出與電腦連線的裝置
  3. 當輸入 exit 時會退出程式。

下面我們在 cmd 視窗中進入我們程式碼的目錄,執行以下命令來執行我們的程式:

go run main.go

然後輸入 2,看下是否有裝置連線: 檢視裝置

然後手機開啟直播,當主播出題時,輸入 1 回車,這裡實驗所以手機直接開啟一張圖片,手機介面如下圖: 手機介面

經過一系列的分析後,返回以下結果: 答題結果

根據 否定的問題選擇數量最少的選項,肯定的問題選數量最多的選項 所以這一題選擇: 2-c 哩 c 哩舞。

原始碼

本文原始碼

轉載請註明出處: go 實現西瓜視訊花椒直播等平臺智慧答題

更多原創文章乾貨分享,請關注公眾號
  • go實現西瓜視訊花椒直播等平臺智慧答題
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章