酷! 程序员用Python带你玩转冲顶大会
作者:lijiao 发布时间:2022-02-20 11:56:08
2018年1月3日,王思聪被迫动用自己的微博,为一个诞生不到10天的App打了广告,“每天我都发奖金,今晚9点就发10万”。对他而言,这天的微博并非生日宴会,而是战场。王思聪的一则微博开启了“全民竞答”类APP的爆红之路。
一时间,直播巨头们都跟上“王校长”的节奏,“冲顶大会”之外,映客旗下的“芝士超人”、今日头条旗下的“百万英雄”和花椒直播旗下的“百万作战”纷纷亮相,每天狂撒百万现金。
“冲顶大会”、“芝士超人”、“百万英雄”等知识竞答游戏火了,奖金数额也从最初的人民币5万、10万涨到了100万、101万。
为了能够全部答对12道题,平分数额如此庞大的奖金池,参赛者开始想方设法提高自己答题的正确率。
正如节目主持人介绍的一样,许多答题者开始寻找身边的朋友共同答题,以求覆盖到更多类型的知识点,提高通关的几率。
各种各样的微信、QQ答题群诞生,每个人都在群聊里分享自己认为正确的答案。
让你猜不到的是,答题游戏居然也有 * !
为了能够全部答对12道题,平分数额如此庞大的奖金池,参赛者开始想方设法提高自己答题的正确率。
已经有程序员设计了“辅助程序”,用于快速检索答案。
这个用Python程序可以修剪并识别图片中的文字内容(问题和选项),然后通过百度进行搜索关键字出现的次数,最后将统计的信息展示出来。这样一来,答题者就可以根据统计数据来选择相应的答案,极大提高了答题的正确率。
那么程序员到底应该如何玩呢?
首先用 WDA 来获取屏幕截图。WDA 本是 Facebook 开发的一套 iOS 测试框架,前几天看见大家都用来做微信“跳一跳”的 * ,便特意去了解了一下,发现也能用在冲顶大会上。
之后 crop 出题目所在的位置(可能需要适配手机屏幕),然后调用开放的 OCR 接口读取出文字文本,最后调用搜索引擎,就可以达到之前 gif 图的效果。这套环境是 iOS + Mac,如果是安卓应该有更方便的方法。
其实最初的想法是希望搜索+选择答案全部自动化完成的,思路是 OCR 题目和候选答案,组成三个组合扔到百度或谷歌里搜索,然后哪个组合的结果出现次数最多就选择哪个。试了几个问题后发现并不是这样,比如上面图片的“骆驼的驼峰是存储什么的?”,可能多数人都会认为是水,因此出现的次数最多,其实是错误答案。
最后还有两个痛点:
免费 OCR 接口调用次数有限,所以不能一直去截屏识别,只能等题目出现时运行程序。
官方也很套路,有的问题是没法搜索的。比如这种:
最后附上代码:
# 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实现爬取图书封面的具体代码,供大家参考,具体内容如下kongfuzi.py利用更换代理ip,延迟提交数据,设
- 引起这个的原因大概是现安装了.Net Framework后装的IIS导致.Net没有在IIS里注册。 在网上找了很久都是说从.net命令行工
- 自动上次ymPrompt组件发布,自己就曾发现在IE8下遮罩的半透明滤镜有时无效的问题,后来也有网友提出过这个问题,但自己一直也没有太多关注
- 今天把博客的日历脚本又改了一改,就帖上了,以后找起来方便一点,同时也给需要的人带来方便,本来还想加点功能再帖上来,不过我看还是没必要了,帖的
- 实例如下所示:import numpy as npW_val, b_val = sess.run([weights_tensor, bias
- asp过滤留言中脏话的代码例子<!--#include file="../conn/dbconn1.asp"--&
- (asp.net的应用). 在网上一搜有很多此类文章,但我需要将公司的复杂的,较大的web应用也以此方式操作,比较的头大。一般的文章建议将b
- 在Python中有时会碰到需要一个一维列向量(n*1)与另一个一维列向量(n*1)的转置(1*n)相乘,得到一个n*n的矩阵的情况。但是在p
- 本文研究的主要是Python处理文本换行符的相关内容,具体如下。源文件每行后面都有回车,所以用下面输出时,中间会多了一行try:  
- 工作中,网页设计师经常会遇见这些状况:时间这么短又要出彩、又是要大气要有气氛、风格不明确很难把握、栏目这么多页面又这么长……突然觉得束手无策
- 参数数量及其作用该函数共有五个参数,分别是:被赋值的变量 ref要分配给变量的值 value、是否验证形状 validate_shape是否
- 本文讲述的是通过python+tkinter编写一个简单桌面放大镜的代码示例,具体如下。代码思路:首先全屏截图,然后在鼠标当前位置以小窗口进
- 本文实例为大家分享了python实现聊天小程序的具体代码,供大家参考,具体内容如下我这里实现的是客户端与服务端进行通信的功能,比较简单,与上
- [asp] 献一函数:ASP获取ACCESS数据库的表名以及表名对应的字段名和字段类型<%showtable "../dat
- 实例如下所示:# -*- coding: utf-8 -*-#to find where use the table on xxxxx xx
- 使用 types 增强vscode中javascript代码提示功能微软的vscode编辑器是开发typescript项目的不二首选,其本身
- 如何制作一个分页程序?确实,翻页程序可以相互借鉴,但具体到每一需求,还是有较大差别的。代码入下,供参考:<%language=&quo
- QTimer控件介绍如果在应用程序中周期性地进行某项操作,比如周期性的检测主机的cpu值,则需要用到QTimer定时器,QTimer类提供了
- 最近使用Python 3.5写了一个GUI小程序,于是想将该写好的程序发布成一个exe文件,供自己单独使用。至于通过安装的方式使用该程序,我
- 本文实例为大家分享了python字符串的操作方法,供大家参考,具体内容如下1.去除空格str.strip():删除字符串两边的指定字符,括号