小猿口算跟风版——没想到吧,这也能暴力
前言
“接口也是口,算法也是算”,综合来看就是口算!
看到全网都在炸鱼也忍不住来玩一玩…
参考了大佬的OCR版,试用后发现影响速度的最大卡点并不是识别速度等,而是““由于检测异常导致的等待”。
基于体验几局的感受——输入对了可以极速跳题、答题成功会有提示音,便将思路放到了从音量检测入手。
实现
思路大致几点——
1、输入对了可以极速跳题。
2、答题成功会有提示音。
3、目前没有看到过输入“=”的场景,仅有大于和小于。
基于上述三点,暴力作答所需猜测的情况也只有两种,且作答成功后可快速进行下一题,减少卡顿,理论可行。
因此,尝试不通过ORC识别或其他方式来判断题目作答正确,而是采取“是否曝出了提示音“”来判断是否作答正确。
流程大致为:
1、作答符号为">"。
- 如果有提示音,短停留继续作答。
- 如果没有提示音, 长停留继续作答。
2、切换作答符号为另一个。
由此循环往复…
代码
需自行安装虚拟声卡,用于让Python检测声音。
import pyautogui
import time
import numpy as np
import pyaudio
from pynput.mouse import Controller, Button
from pynput.keyboard import Listener, Key# 初始化鼠标控制器
mouse = Controller()# 全局变量,控制绘制状态
running = False
prev_volume = 0 # 上一个音量值def log_message(message):"""记录日志消息"""current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())print(f"[{current_time}] {message}")def draw_symbol(symbol):"""绘制符号"""screen_width, screen_height = pyautogui.size()x = int(screen_width * 0.4) # 水平居中y = int(screen_height * 0.7) # 将 y 坐标设置为屏幕高度的 70%duration = 0.03 # 每条线的持续时间rect_size = 40 # 控制绘制符号的大小(线条长度的控制)if symbol == '>':# 绘制 ">" 符号mouse.position = (x, y)mouse.press(Button.left)mouse.move(rect_size, rect_size) # 右下斜线time.sleep(duration)mouse.move(-rect_size, rect_size) # 左下斜线time.sleep(duration)mouse.release(Button.left)log_message("执行了绘制 '>' 符号 操作")elif symbol == '<':# 绘制 "<" 符号mouse.position = (x, y)mouse.press(Button.left)mouse.move(-rect_size, rect_size) # 左下斜线time.sleep(duration)mouse.move(rect_size, rect_size) # 右下斜线time.sleep(duration)mouse.release(Button.left)log_message("执行了绘制 '<' 符号 操作")def list_audio_devices():"""列出可用的音频输入设备"""p = pyaudio.PyAudio()log_message("可用的音频设备:")for i in range(p.get_device_count()):info = p.get_device_info_by_index(i)log_message(f"设备 {i}: {info['name']} - {'输入' if info['maxInputChannels'] > 0 else '输出'}")p.terminate()def get_supported_sample_rates(device_index):"""获取指定设备支持的采样率"""p = pyaudio.PyAudio()device_info = p.get_device_info_by_index(device_index)log_message(f"设备 {device_index} ({device_info['name']}) 支持的采样率: {device_info['defaultSampleRate']}")p.terminate()return int(device_info['defaultSampleRate'])def detect_system_sound(threshold=1000, device_index=24): # 使用设备索引 24"""检测系统声音并返回是否检测到突然增加的声音"""global prev_volume # 声明使用全局变量chunk = 1024 # 每次读取的音频块大小sample_rate = get_supported_sample_rates(device_index) # 获取支持的采样率p = pyaudio.PyAudio()# 打开音频流,确保输入设备是虚拟音频设备stream = p.open(format=pyaudio.paInt16, channels=1,rate=sample_rate, input=True,frames_per_buffer=chunk, input_device_index=device_index)audio_data = stream.read(chunk)audio_data_np = np.frombuffer(audio_data, dtype=np.int16)volume_norm = np.linalg.norm(audio_data_np) / np.sqrt(chunk) # 计算音量(RMS)stream.stop_stream()stream.close()p.terminate()log_message(f"当前音量:{volume_norm:.2f}") # 打印当前音量以调试# 检测音量的突然增加if volume_norm > prev_volume + threshold:prev_volume = volume_norm # 更新上一个音量值return True # 检测到声音突增else:prev_volume = volume_norm # 更新上一个音量值return False # 未检测到声音突增def toggle_running(key):"""切换运行状态"""global runningif key == Key.enter: # 当按下 Enter 键时切换状态running = not runningif running:log_message("绘图已启动...")else:log_message("绘图已停止。")def main():global runninglog_message("按 Enter 键启动或停止绘图...")i = 0# 列出可用的音频设备list_audio_devices()# 启动键盘监听with Listener(on_press=toggle_running) as listener:while True:if running:# 检测声音sound_detected = detect_system_sound()if sound_detected:log_message("有检测到声音突增!")time.sleep(0.2) # 如果检测到声音突增,等待 0.2 秒else:log_message("未检测到声音突增,等待 1 秒...")time.sleep(0.8) # 如果未检测到声音,等待 1 秒# 绘制 "<" 符号if i % 2:draw_symbol('<')else:draw_symbol('>')i += 1# 换行分隔log_message("")time.sleep(0.1) # 避免占用过多 CPU 资源if __name__ == "__main__":main()
优化点。
1、由于小猿口算的Bug——即背景音乐无法关闭。导致检测声音突增并不是那么准确。同时吐槽一下,小猿官方没有对用户名违禁进行检测吗?头像+用户名均sex居然可以过审,难以想象。
2、模拟器产生声音 - Python检测到变化,会有一定的延迟。
综合测试来看,感觉可能并不比单纯的暴力快多少,因此此尝试更多的还是——整活。
相关文章:
小猿口算跟风版——没想到吧,这也能暴力
前言 “接口也是口,算法也是算”,综合来看就是口算! 看到全网都在炸鱼也忍不住来玩一玩… 参考了大佬的OCR版,试用后发现影响速度的最大卡点并不是识别速度等,而是““由于检测异常导致的等待”。 基于体验几局的感受…...
【RabbitMQ——消息应答机制——分布式事务解决方式】
1. RabbitMQ高级-消息确认机制的配置 NONE值是禁用发布确认模式,是默认值 CORRELATED值是发布消息成功到交换器后会触发回调方法,如1示例SIMPLE值经测试有两种效果,其一效果和CORRELATED值一样会触发回调方法,其二在发布消息成功…...
Android Studio Koala中Kotlin引入序列化Parcelable
找了一堆资料没有新构建序列化的方法,踩坑经历如下: 前提是使用Kotlin创建的项目 之前的build.gradle版本写法如下: 但是新版Android Studio Koala使用序列化模式发生了改变,如下: 测试成功如下: 发出来…...
安装postgresql和对应wal2json和pg_tm_aux插件避坑
1、安装原则:要用源码都用源码,要用yum都用yum 安装wal2json避坑 涉及的yum源,可以解决安装postgresql缺少依赖导致的wal2json和pg_tm_aux的报错问题 [centos-sclo-rh] nameCentOS-7 - SCLo rh baseurlhttps://mirrors.aliyun.com/centos/7/…...
OneDrive 全新时代:AI、生产力和回忆触手可及
OneDrive,无人不知,无人不晓。 无论您是在公司、家庭还是在通勤的路上,OneDrive 都能让您无缝管理文件、照片和回忆。OneDrive 受到 94% 的财富 500 强公司、数百万小型企业和无数个人的信赖,它正在改变世界协作、存储和连接的方…...
List子接口
1.特点:有序,有下标,元素可以重复 2.方法:包含Collection中的所有方法,还包括自己的独有的方法(API中查找) 还有ListIterator(迭代器),功能更强大。 包含更多…...
快来了解 Java 内存数据库 H2,不要错过哦
H2 是一个用 Java 编写的开源关系型数据库管理系统,它具有小巧、快速、易于嵌入等特点。 H2 数据库可以以多种模式运行,包括嵌入式模式、服务器模式和内存模式。 在嵌入式模式下,H2 数据库直接嵌入到应用程序中,就像一个本地的库…...
基于Java的可携宠物酒店管理系统的设计与实现(论文+源码)_kaic
摘 要 随着社会经济的不断发展,现如今出行并住酒店的人越来越多,与之而来的是酒店行业的工作量日益增加,酒店的管理效率亟待提升。此外很多人出门旅游时会有携带宠物的情况,但是现如今酒店对宠物的限制,导致许多…...
吸毛效果好的宠物空气净化器分享,希喂、霍尼韦尔、米家实测
说起宠物空气净化器,几年前我可能会一脸鄙夷:为啥要花这种智商税冤枉钱? 直到之前养了一只猫,被家中乱飞的浮毛和滂臭的异味搞到头晕,于是作为i一个养宠的家电测评博主,索性对宠物空气净化器这玩意做了超级…...
Sqlite3入门看这一篇就够(超级详细,从零学起)
Sqlite3入门看这一篇就够(超级详细,从零学起) 一、SQLite3 基础1.1 SQLite3 的特点1.2 SQLite3 安装与使用1.2.1 debian操作系统安装SQLite31.2.2 window操作系统安装SQLite3二、下载 SQLite3三、配置 SQLite 环境四、使用 SQLite34.1. **创建数据库**:4.2. **常用命令**:…...
搭建知识库:助力大健康零售电商的快速发展
一、大健康零售电商行业的快速发展及其对知识库的需求 随着互联网技术的飞速发展和人们对健康意识的显著提升,大健康零售电商行业迎来了前所未有的发展机遇。这一行业不仅涵盖了传统零售业的商品销售,还融入了健康管理、健康咨询、健康数据分析等多元化…...
纠删码参数自适应匹配问题ECP-AMP实验方案(中)
6.方法设计 6.1.数据获取 为了收集不同的文件大小和纠删码参数对性能指标的影响,本文在Hadoop平台上进行了模拟实验。Hadoop是一种开源的分布式存储和计算框架,它可以支持不同类型的纠删码,并提供了一些应用程序接口和工具来测试和评估纠删…...
在设计接口时,什么时候应该用路径参数,什么时候将数据保存到方法体中,它们各自的优势是什么?
在设计 RESTful API 接口时,选择将数据放在路径参数(Path Parameters)还是方法体(Request Body)中,取决于具体的需求和使用场景。每种方式都有其优势和适用的场景。 路径参数(Path Parameters&a…...
JVa冒泡排序
------------------------------冒泡排序--------------- let arry[1,2,3,4,5,6]; let temo;//容器交换 //两层循环 for(let i1;i<arry.length;i){ for(let j0;j<arry.length-i;j){ if(arry[j]>arry[j1]){ temparry[j]; arry[j]arry[j1]; arry[j1]temp; } } } console…...
10/11
一、ARM课程大纲 二、ARM课程学习的目的 2.1 为了找到一个薪资水平达标的工作(单片机岗位、驱动开发岗位) 应用层(APP) 在用户层调用驱动层封装好的API接口,编写对应的API接口 ----------------------------------------------------…...
C语言复习第6章 指针(未完成)
目录 一、内存单元与指针1.1 内存单元与内存单元的编号(地址/指针)1.2 内存单元的编号是如何产生的?1.3 地址/内存单元的编号/指针 本身是不需要保存的1.4 32/64位机器最多可以管理多大的内存空间?1.5 怎么计算指针(地址/编号)的大小 二、指针到指针变量2.1 怎么把二进制转换…...
Carrier Aggregation 笔记
### Carrier Aggregation 笔记 #### 引言 - Carrier Aggregation(CA)是 LTE 高级技术之一,srsRAN 4G 支持在 srsENB 和 srsUE 中进行双载波聚合。 - 使用 srsRAN 4G 进行 CA 实验需要能够调谐不同频率的 RF 设备,例如 Ettus Rese…...
JAVA的ArrayList 和 LinkedList的区别
ArrayList 和 LinkedList 都是 Java 中常用的 List 接口的实现类,主要的区别有: 1. 底层数据结构不同 -ArrayList 底层使用的是动态数组数据结构,LinkedList 底层使用的是双向链表数据结构。 2. 获取元素效率不同 ArrayList 支持快速随机访问,通过索引直接获取元素,时间复杂…...
AI知识库如何提升服装电商的运营效率
随着人工智能技术的飞速发展,AI知识库在服装电商领域的应用日益广泛。AI知识库作为一个集成了海量数据、通过高级算法进行智能分析和处理的信息系统,正在深刻改变服装电商的运营模式和效率。本文将详细阐述AI知识库在商品信息管理、库存管理、订单处理等…...
鸿蒙开发(NEXT/API 12)【使用fetch发送网络请求】远场通信服务
场景介绍 发送一个HTTP请求,也可以设置请求头和请求体等参数,并返回来自服务器的HTTP响应。使用Promise异步回调。常用于获取资源,支持流处理和通过拦截器来处理请求和响应。 接口说明 接口名描述fetch(request: Request): Promise发送一个…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
