微信小游戏《头脑王者》答题辅助脚本

继微信跳一跳之后的又一个小游戏头脑王者又火起来了,相信不少人也都想重蹈跳一跳的过程,再次写一个辅助脚本。

上一波图吧!

上代码:

 

#   _*_ coding:utf-8 _*_
import io
import os

from aip import AipOcr
from PIL import Image
from io import BytesIO
from past.builtins import raw_input
import requests
import sys

__author__ = 'admin'

'''
    这就是可答题辅助,我还不能让他自动答题,如果自动答题的话效率太低
'''

#   解决 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX报错
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030')


def pull_screenshot(picname):
    #   adb驱动截取屏幕,并将图片上传至本地
    os.system("adb shell screencap -p /sdcard/" + picname + ".png")
    os.system("adb pull /sdcard/" + picname + ".png .")
    #   打开图片
    o = Image.open(r"D:\python\headking\\" + picname + '.png')
    #   获取问题、答案的矩形区域
    question_img = o.crop((120, 600, 940, 800))
    answer_img = o.crop((120, 955, 940, 1720))
    #   将截取的问题同答案合并
    new_img = Image.new('RGBA', (820, 965))
    new_img.paste(question_img, (0, 0, 820, 200))
    new_img.paste(answer_img, (0, 200, 820, 965))
    #   创建二进制数据流
    new_img_fb = BytesIO()
    #   将合并后的图片的数据写入内存
    new_img.save(new_img_fb, 'png')
    #   返回数据
    return new_img_fb

def get_content(new_img_fb):
    #   百度的API(自行前往百度云注册)
    APP_ID = 'XXXX'
    API_KEY = '********************'
    SECRET_KEY = '********************'
    #   调用百度的通用文字识别
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    #   获取数据流中的内容,是个字典的形式
    content = client.basicGeneral(new_img_fb.getvalue())
    return content

def check_result(content):
    #   获取所有文字信息(问题和答案),为列表形式
    topic = content.get('words_result')
    #   初始化字符串
    question = ''
    #   识别正常的情况下,后四个元素是答案,则第一位至倒数第四位就是问题
    for i in topic[:-4]:
        #   拼接成“问题”(列表中每个元素又是一个字典)
        question += i.get('words')
    # print(question)
    #   初始化列表
    answers = []
    #   识别正常的情况下,后四个元素是答案
    for i in topic[-4:]:
        #   存储答案进列表
        answers.append(i.get('words'))
    # print(answers)
    #   百度一下,你就知道的网址
    url = 'https://www.baidu.com/s'
    #   headers中是以字典的形式存储的,不能缺少键和值,所以'User-Agent'要作为键存在
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)'
                      ' Chrome/51.0.2704.106 Safari/537.36'
    }
    #   可以尝试观察下百度搜索问题时的网址内容,其中就包含‘wd’
    data = {
        'wd': question
    }
    #   这里涉及到爬虫时的知识,获取网页内容
    res = requests.get(url, params=data, headers=headers)
    res.encoding = 'utf-8'
    html = res.text
    for i in range(len(answers)):
        #   将网页中各个答案的计数也存入列表中
        answers[i] = (html.count(answers[i]), answers[i])
    #   将列表倒序
    answers.sort(reverse=True)
    return answers


def run():
    count = 0
    while True:
        #   按下回车键才可继续,简单的的题可以手动答,难得题可以使用该工具
        press_key = raw_input(u"输入回车键以便继续:")
        new_img_fb = pull_screenshot(str(count))
        content = get_content(new_img_fb)
        answers = check_result(content)
        print(answers)
        #   计数自增1,方便存储图片
        count += 1

if __name__ == '__main__':
    run()

预计结果:金銮殿
测试结果:

测试结果与预计结果一致!

(以上代码参考了大神的作品,自己又添加了些注释,不喜勿喷!)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值