酷! 程序员用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 相关文章推荐
ssh批量登录并执行命令的python实现代码
May 25 Python
python实现的用于搜索文件并进行内容替换的类实例
Jun 28 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
Feb 17 Python
Python探索之自定义实现线程池
Oct 27 Python
python实现K近邻回归,采用等权重和不等权重的方法
Jan 23 Python
python可视化爬虫界面之天气查询
Jul 03 Python
python实现智能语音天气预报
Dec 02 Python
python集合删除多种方法详解
Feb 10 Python
Python基础之字典常见操作经典实例详解
Feb 26 Python
利用 Python ElementTree 生成 xml的实例
Mar 06 Python
Python实现鼠标自动在屏幕上随机移动功能
Mar 14 Python
Python 避免字典和元组的多重嵌套问题
Jul 15 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统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
JavaScript 学习笔记二 字符串拼接
2010/03/28 Javascript
ExtJS判断IE浏览器类型的方法
2014/02/10 Javascript
Node.js模块加载详解
2014/08/16 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
vue.js利用defineProperty实现数据的双向绑定
2017/04/28 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
2020/09/04 Javascript
vue element实现表格合并行数据
2020/11/30 Vue.js
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
[01:02:55]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python抓取豆瓣图片并自动保存示例学习
2014/01/10 Python
跟老齐学Python之让人欢喜让人忧的迭代
2014/10/02 Python
python使用Pandas库提升项目的运行速度过程详解
2019/07/12 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
Python列表切片常用操作实例解析
2020/03/10 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
新西兰领先的内衣店:Bendon Lingerie新西兰
2018/07/11 全球购物
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
中专毕业生求职简历的自我评价
2013/10/21 职场文书
年终奖发放方案
2014/06/02 职场文书
安全宣传标语
2014/06/10 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
小学工作总结2015
2015/05/04 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript