酷! 程序员用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 相关文章推荐
Python返回真假值(True or False)小技巧
Apr 10 Python
Python获取央视节目单的实现代码
Jul 25 Python
pandas数据分组和聚合操作方法
Apr 11 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
python识别文字(基于tesseract)代码实例
Aug 24 Python
Python 读取有公式cell的结果内容实例方法
Feb 17 Python
python实现TCP文件传输
Mar 20 Python
Python3自动生成MySQL数据字典的markdown文本的实现
May 07 Python
python 基于卡方值分箱算法的实现示例
Jul 17 Python
基于Python采集爬取微信公众号历史数据
Nov 27 Python
python文件名批量重命名脚本实例代码
Apr 22 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
Apr 14 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
PHP导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
使用PHP导出Word文档的原理和实例
2013/10/21 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
javascript 动态table添加colspan\rowspan 参数的方法
2009/07/25 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
js读写json文件实例代码
2014/10/21 Javascript
基于豆瓣API+Angular开发的web App
2015/01/02 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
JQuery跳出each循环的方法
2015/04/16 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
基于javascript实现句子翻牌网页版小游戏
2016/03/23 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
2016/11/30 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
浅谈Vuex注入Vue生命周期的过程
2019/05/20 Javascript
[04:30]显微镜下的DOTA2第五期——拉比克
2013/09/26 DOTA
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
用Python登录Gmail并发送Gmail邮件的教程
2015/04/17 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
利用纯html5绘制出来的一款非常漂亮的时钟
2015/01/04 HTML / CSS
Europcar美国/加拿大:预订汽车或卡车租赁服务
2018/11/13 全球购物
武汉某公司的C#笔试题面试题
2015/12/25 面试题
列车长先进事迹材料
2014/01/25 职场文书
高二政治教学反思
2014/02/01 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
好书伴我成长演讲稿
2014/05/14 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
四风对照检查剖析材料
2014/10/07 职场文书
三八妇女节主持词
2015/07/04 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server