- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章酷! 程序员用Python带你玩转冲顶大会由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
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 接口调用次数有限,所以不能一直去截屏识别,只能等题目出现时运行程序。 官方也很套路,有的问题是没法搜索的。比如这种:
最后附上代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# 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带你玩转冲顶大会的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我是一名优秀的程序员,十分优秀!