酷! 程序员用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重试装饰器示例
Feb 11 Python
Python自动化运维和部署项目工具Fabric使用实例
Sep 18 Python
Python 常用的安装Module方式汇总
May 06 Python
python使用正则表达式替换匹配成功的组
Nov 17 Python
python正则实现计算器功能
Dec 14 Python
python学习基础之循环import及import过程
Apr 22 Python
python读写csv文件并增加行列的实例代码
Aug 01 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
python通用读取vcf文件的类(复制粘贴即可用)
Feb 29 Python
Python接口测试文件上传实例解析
May 22 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
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
php中用date函数获取当前时间有误的解决办法
2013/08/02 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
EXT中xtype的含义分析
2010/01/07 Javascript
PHP+jQuery实现随意拖动层并即时保存拖动位置
2015/04/30 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
AngularJS基础 ng-href 指令用法
2016/08/01 Javascript
解决Window10系统下Node安装报错的问题分析
2016/12/13 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
JavaScript事件委托原理与用法实例分析
2018/06/07 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
详解jQuery获取特殊属性的值以及设置内容
2018/11/14 jQuery
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
python计算书页码的统计数字问题实例
2014/09/26 Python
实例说明Python中比较运算符的使用
2015/05/13 Python
Python入门之modf()方法的使用
2015/05/15 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
使用keras和tensorflow保存为可部署的pb格式
2020/05/25 Python
python 怎样进行内存管理
2020/11/10 Python
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
AJAX的优缺点都有什么
2015/08/18 面试题
最新大学职业规划书范文
2013/12/30 职场文书
给同学的道歉信
2014/01/16 职场文书
员工培训邀请函
2014/02/02 职场文书
监察建议书格式
2014/05/19 职场文书
企业授权委托书范本
2014/09/22 职场文书
会计求职自荐信范文
2015/03/04 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
OpenCV-Python实现油画效果的实例
2021/06/08 Python
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers