酷! 程序员用Python带你玩转冲顶大会

 更新时间:2018年01月17日 14:48:02   投稿:lijiao  
程序员用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 接口调用次数有限,所以不能一直去截屏识别,只能等题目出现时运行程序。
官方也很套路,有的问题是没法搜索的。比如这种:

最后附上代码:

# 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使用psutil对系统数据进行采集监控

    Python使用psutil对系统数据进行采集监控

    psutil库可以实时获取系统的一些信息,这样就可以达到实时监控系统的目的。本文对详细讲解了ython使用psutil对系统数据进行采集监控,感兴趣的朋友可以看一看
    2021-08-08
  • Python列表倒序输出及其效率详解

    Python列表倒序输出及其效率详解

    在本篇文章里小编给大家整理的是关于Python列表倒序输出及其效率详解内容,需要的朋友们学习下。
    2020-03-03
  • python之线程池map()方法传递多参数list

    python之线程池map()方法传递多参数list

    这篇文章主要介绍了python之线程池map()方法传递多参数list问题,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 用python实现监控视频人数统计

    用python实现监控视频人数统计

    今天教各位小伙伴学习怎么用python实现监控视频人数统计,文中有非常详细的代码示例,对正在学习python的小伙伴有很大的帮助,需要的朋友可以参考下
    2021-05-05
  • 深入理解python try异常处理机制

    深入理解python try异常处理机制

    下面小编就为大家带来一篇深入理解python try异常处理机制。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • Python中的defaultdict模块和namedtuple模块的简单入门指南

    Python中的defaultdict模块和namedtuple模块的简单入门指南

    这篇文章主要介绍了Python中的defaultdict模块和namedtuple模块的简单入门指南,efaultdict继承自dict、namedtuple继承自tuple,是Python中内置的数据类型,需要的朋友可以参考下
    2015-04-04
  • python协程之yield和yield from实例详解

    python协程之yield和yield from实例详解

    Python在并发处理上不仅提供了多进程和多线程的处理,还包括了协程,下面这篇文章主要给大家介绍了关于python协程之yield和yield from的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • python基于paramiko将文件上传到服务器代码实现

    python基于paramiko将文件上传到服务器代码实现

    这篇文章主要介绍了python基于paramiko将文件上传到服务器代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python+pandas计算数据相关系数的实例

    Python+pandas计算数据相关系数的实例

    今天小编就为大家分享一篇Python+pandas计算数据相关系数的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 用python登录Dr.com思路以及代码分享

    用python登录Dr.com思路以及代码分享

    如今一般的大学校园或者公寓都是通过客户端来限制路由器使用,基本上都是Dr.com客户端,有的是登录样式,有的是插件样式。下面我们来说说python定制自己的客户端
    2014-06-06

最新评论