程式設計師如何玩轉《衝頂大會》?

livc發表於2019-02-27

程式設計師如何玩轉《衝頂大會》?

衝頂大會是最近很火的一款直播答題遊戲,每天指定時間開放,12 道題,每題 3 個選項,10 秒作答,所有通關者分享獎金(每場獎金五萬元或十萬元),邀請好友可以獲得復活資格。類似的遊戲還有很多比如頭條、映客、花椒直播等都推出了自己的答題遊戲,這類模式的鼻祖是美國去年 8 月上線的 HQ Trivia。

看到這你可能會想,這尼瑪不就是《開心辭典》搬到手機上了嗎?這也能賺錢?沒錯,就是這樣。

我這幾天玩了幾場,經過觀察發現每場人數在三十萬到五十萬之間,現在網際網路流量這麼貴,花幾萬塊錢就能在這麼短時間帶來這麼多使用者,相當值啊。羅振宇在跨年演講時引用了德魯克的一句話:“對創新的最大讚美,莫過於人們說——這太顯而易見了,為什麼我就沒有想到呢?”,我想直播答題就是這樣的現象級創新產品,而且它還有很多非常值得探索的盈利模式。

程式設計師如何玩轉《衝頂大會》?

道高一尺,魔高一丈,我們看看有哪些可以 Hack 的方法。

題目出現再去搜尋肯定是來不及的(除非你單身 40 年的手速),廣大人民的作弊策略也是層出不窮。最簡單的是一群人一起玩,可以利用網路延遲有多幾秒的讀題時間,遇到不會的每個人分開選,這樣你只需要 3^12=531441 臺手機即可通關。還可以使用兩臺裝置,一個手機等主播讀題,另一個利用百度的語音搜尋也能查出答案,但是感覺這種速度要比較慢。

那麼程式設計師應該如何玩呢?

首先用 WDA 來獲取螢幕截圖。WDA 本是 Facebook 開發的一套 iOS 測試框架,前幾天看見大家都用來做微信“跳一跳”的外掛,便特意去了解了一下,發現也能用在衝頂大會上。

之後 crop 出題目所在的位置(可能需要適配手機螢幕),然後呼叫開放的 OCR 介面讀取出文字文字,最後呼叫搜尋引擎,就可以達到之前 gif 圖的效果。這套環境是 iOS + Mac,如果是安卓應該有更方便的方法。

其實最初的想法是希望搜尋+選擇答案全部自動化完成的,思路是 OCR 題目和候選答案,組成三個組合扔到百度或谷歌裡搜尋,然後哪個組合的結果出現次數最多就選擇哪個。試了幾個問題後發現並不是這樣,比如上面圖片的“駱駝的駝峰是儲存什麼的?”,可能多數人都會認為是水,因此出現的次數最多,其實是錯誤答案。

最後還有兩個痛點:

  1. 免費 OCR 介面呼叫次數有限,所以不能一直去截圖識別,只能等題目出現時執行程式。
  2. 官方也很套路,有的問題是沒法搜尋的。。比如這種:

程式設計師如何玩轉《衝頂大會》?

附上程式碼,不知大家有沒有更好的想法:

# python3
import wda
import io
import urllib.parse
import webbrowser
import requests
import time
import base64
from PIL import Image

c = wda.Client()
# 百度OCR API
api_key = ''
api_secret = ''
token = ''


while True:
    time.sleep(0.5)
    c.screenshot('1.png')
    im = Image.open("./1.png")
    region = im.crop((75, 315, 1167, 789)) # iPhone 7P
    imgByteArr = io.BytesIO()
    region.save(imgByteArr, format='PNG')
    image_data = imgByteArr.getvalue()
    base64_data = base64.b64encode(image_data)
    r = requests.post('https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic',
                      params={'access_token': token}, data={'image': base64_data})
    result = ''
    for i in r.json()['words_result']:
        result += i['words']
    result = urllib.parse.quote(result)
    webbrowser.open('https://baidu.com/s?wd='+result)
    break
複製程式碼

Source: livc.io/blog/204

相關文章