酷! 程序员用Python带你玩转冲顶大会


Posted in Python onJanuary 17, 2018

2018年1月3日,王思聪被迫动用自己的微博,为一个诞生不到10天的App打了广告,“每天我都发奖金,今晚9点就发10万”。对他而言,这天的微博并非生日宴会,而是战场。王思聪的一则微博开启了“全民竞答”类APP的爆红之路。

酷! 程序员用Python带你玩转冲顶大会

一时间,直播巨头们都跟上“王校长”的节奏,“冲顶大会”之外,映客旗下的“芝士超人”、今日头条旗下的“百万英雄”和花椒直播旗下的“百万作战”纷纷亮相,每天狂撒百万现金。

酷! 程序员用Python带你玩转冲顶大会

“冲顶大会”、“芝士超人”、“百万英雄”等知识竞答游戏火了,奖金数额也从最初的人民币5万、10万涨到了100万、101万。

为了能够全部答对12道题,平分数额如此庞大的奖金池,参赛者开始想方设法提高自己答题的正确率。

正如节目主持人介绍的一样,许多答题者开始寻找身边的朋友共同答题,以求覆盖到更多类型的知识点,提高通关的几率。

各种各样的微信、QQ答题群诞生,每个人都在群聊里分享自己认为正确的答案。

酷! 程序员用Python带你玩转冲顶大会

让你猜不到的是,答题游戏居然也有外挂!

为了能够全部答对12道题,平分数额如此庞大的奖金池,参赛者开始想方设法提高自己答题的正确率。

已经有程序员设计了“辅助程序”,用于快速检索答案。

酷! 程序员用Python带你玩转冲顶大会

这个用Python程序可以修剪并识别图片中的文字内容(问题和选项),然后通过百度进行搜索关键字出现的次数,最后将统计的信息展示出来。这样一来,答题者就可以根据统计数据来选择相应的答案,极大提高了答题的正确率。

那么程序员到底应该如何玩呢?

首先用 WDA 来获取屏幕截图。WDA 本是 Facebook 开发的一套 iOS 测试框架,前几天看见大家都用来做微信“跳一跳”的外挂,便特意去了解了一下,发现也能用在冲顶大会上。

之后 crop 出题目所在的位置(可能需要适配手机屏幕),然后调用开放的 OCR 接口读取出文字文本,最后调用搜索引擎,就可以达到之前 gif 图的效果。这套环境是 iOS + Mac,如果是安卓应该有更方便的方法。

其实最初的想法是希望搜索+选择答案全部自动化完成的,思路是 OCR 题目和候选答案,组成三个组合扔到百度或谷歌里搜索,然后哪个组合的结果出现次数最多就选择哪个。试了几个问题后发现并不是这样,比如上面图片的“骆驼的驼峰是存储什么的?”,可能多数人都会认为是水,因此出现的次数最多,其实是错误答案。

最后还有两个痛点:

免费 OCR 接口调用次数有限,所以不能一直去截屏识别,只能等题目出现时运行程序。
官方也很套路,有的问题是没法搜索的。比如这种:

酷! 程序员用Python带你玩转冲顶大会

最后附上代码:

# 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

(代码来源:https://livc.io/blog/204)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
一个基于flask的web应用诞生 记录用户账户登录状态(6)
Apr 11 Python
Python实现螺旋矩阵的填充算法示例
Dec 28 Python
matplotlib绘制动画代码示例
Jan 02 Python
Python中单例模式总结
Feb 20 Python
Python装饰器的执行过程实例分析
Jun 04 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
Feb 22 Python
python单例模式的多种实现方法
Jul 26 Python
python实现静态服务器
Sep 05 Python
tensorflow 实现自定义layer并添加到计算图中
Feb 04 Python
解决Keras自带数据集与预训练model下载太慢问题
Jun 12 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
Oct 29 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 Python
Python建立Map写Excel表实例解析
Jan 17 #Python
Python冲顶大会 快来答题!
Jan 17 #Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
Jan 17 #Python
python thrift搭建服务端和客户端测试程序
Jan 17 #Python
Python元字符的用法实例解析
Jan 17 #Python
Python工程师面试必备25条知识点
Jan 17 #Python
python根据unicode判断语言类型实例代码
Jan 17 #Python
You might like
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
php备份数据库类分享
2015/04/14 PHP
使用jquery写个更改表格行顺序的小功能
2014/04/29 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
js获取当前日期前七天的方法
2015/02/28 Javascript
JavaScript原生对象之String对象的属性和方法详解
2015/03/13 Javascript
JavaScript返回网页中锚点数目的方法
2015/04/03 Javascript
ES6中非常实用的新特性介绍
2016/03/10 Javascript
AngularJS改变元素显示状态
2017/04/20 Javascript
对angularJs中controller控制器scope父子集作用域的实例讲解
2018/10/08 Javascript
详解ES6中的Map与Set集合
2019/03/22 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
[01:10:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第一场 3月4日
2021/03/11 DOTA
在Python的setuptools框架下生成egg的教程
2015/04/13 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
基于python 爬虫爬到含空格的url的处理方法
2018/05/11 Python
详解Python 中sys.stdin.readline()的用法
2019/09/12 Python
Python编写打字训练小程序
2019/09/26 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
Python 识别12306图片验证码物品的实现示例
2020/01/20 Python
pytorch 计算ConvTranspose1d输出特征大小方式
2020/06/23 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
雅诗兰黛旗下专业男士保养领导品牌:Lab Series
2017/05/15 全球购物
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
银行职员思想汇报
2013/12/31 职场文书
遗体告别仪式答谢词
2014/01/23 职场文书
11月升旗仪式讲话稿
2014/02/15 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
个人创业事迹材料
2014/12/30 职场文书
收入证明怎么写
2015/06/12 职场文书