酷! 程序员用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中typing模块与类型注解的使用方法
Aug 05 Python
Django获取该数据的上一条和下一条方法
Aug 12 Python
浅析使用Python搭建http服务器
Oct 27 Python
使用python绘制二维图形示例
Nov 22 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
Feb 11 Python
Python拼接字符串的7种方式详解
Mar 19 Python
keras 自定义loss层+接受输入实例
Jun 28 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
Jul 01 Python
python批量修改文件名的示例
Sep 27 Python
Appium+Python实现简单的自动化登录测试的实现
Jan 26 Python
解决Jupyter-notebook不弹出默认浏览器的问题
Mar 30 Python
PyTorch梯度裁剪避免训练loss nan的操作
May 24 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 session_start()出错原因分析及解决方法
2013/10/28 PHP
PHP时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
实例解析jQuery工具函数
2016/12/01 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
Vue解析带html标签的字符串为dom的实例
2019/11/13 Javascript
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python查看zip包中文件及大小的方法
2015/07/09 Python
Python Logging 日志记录入门学习
2018/06/02 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
python读取目录下最新的文件夹方法
2018/12/24 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
Python流程控制 if else实现解析
2019/09/02 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
如何关掉pycharm中的python console(图解)
2019/10/31 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
详解Python3 定义一个跨越多行的字符串的多种方法
2020/09/06 Python
新西兰领先的鞋类和靴子网上商城:Merchant 1948
2017/09/08 全球购物
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
实体的生命周期
2013/08/31 面试题
Python面试题:Python是如何进行内存管理的
2014/08/04 面试题
广告设计专业自荐信范文
2013/11/14 职场文书
中学教师培训制度
2014/01/31 职场文书
感恩节活动策划方案
2014/05/16 职场文书
社区六一儿童节活动总结
2015/02/11 职场文书
信访工作个人总结
2015/03/03 职场文书
小学生五一劳动节演讲稿
2015/03/18 职场文书
导游词之张家口
2019/12/13 职场文书
go xorm框架的使用
2021/05/22 Golang