极客秀
搜索

程序员告诉你如何用技术手段玩转《百万英雄》

最近一两天,“直播答题”已席卷互联网。王思聪力推《冲顶大会》、周鸿
祎的花椒直播上线《百万作战》、今日头条&西瓜视频推出《百万英雄》、映客在线答题《芝士超人》、一直播的《黄金十秒》……仿佛一夕之间,众多互联网直播版《开心辞典》冒了出来。

这些直播答题的题目范围涉及很广,天文地理历史科学娱乐影视音乐诗歌礼仪等,每次活动共 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。
辅助工具只能够提升准确率,对于一些很坑很怪的问题可能依然会存在一定问题,后面会不断对判断策略进行优化,也欢迎大家提出一些更优的策略。
(本文来源CSDN,作者杨光)
代码地址:

https://github.com/steveyg/AnswerHelper

1.转载请保留原文链接谢谢!
2.本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
3.本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
4.本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
5.联系方式(#替换成@):pm#vimge.com

  相关内容