【波点音乐看广告】
import uiautomator2 as u2
import time
from datetime import datetime
import xml.etree.ElementTree as ET
import re
import os
连接设备
d = u2.connect()
os.system(‘adb shell chmod 775 /data/local/tmp/atx-agent’)
os.system(‘adb shell /data/local/tmp/atx-agent server -d’)
打印设备信息
print(d.info)
def print_description_to_file(d):
# 获取当前页面的 XML结构
xml_content = d.dump_hierarchy()
# 解析 XML结构
root = ET.fromstring(xml_content)# 定义正则表达式
time_pattern = re.compile(r'\d{2}:\d{2}:\d{2}')with open('test.txt', 'a') as f:# 遍历所有元素for element in root.iter():# 检查元素是否可点击if element.attrib.get('clickable', 'false').lower() == 'true':# 获取 description 属性值description = element.attrib.get('content-desc', '')# 使用正则表达式匹配if time_pattern.match(description):# 写入文件print("Description 属性值:", description)f.write("Description 属性值: " + description + '\n')
def swipe_left_to_right(d):
width, height = d.window_size()
start_x = width // 4
start_y = height // 2
end_x = width * 3 // 4
end_y = height // 2
d.swipe(start_x, start_y, end_x, end_y)
def screenshot_png():
now = datetime.now().strftime(“%Y_%m_%d_%H%M_%S”)
d.screenshot(f’{now}.png’)
d.app_uninstall(“cn.wenyu.bodian”)
d.app_install(“cn.wenyu.bodian.apk”)
d.app_clear(“cn.wenyu.bodian”)
num=1
while True:
# 启动应用
try:
d.app_start(“cn.wenyu.bodian”, stop=True,wait=True)
print(“应用启动成功”)
except Exception as e:
print(“应用启动失败:”, e)
exit(1)
try:
# d(text=“允许”).click()
# d.xpath(‘//*[@resource-id=“android:id/content”]/android.widget.FrameLayout[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.widget.ImageView[2]’).click()
# print(“点击同意:pass”)
# d(description=‘微信登录领VIP’).click()
# print(“点击微信登录领VIP:pass”)
# # 点击同意并继续
# d(description=‘同意并继续’).click()
# print(“点击微同意并继续:pass”)
pass
except Exception as e:
print(“账号已登录元素不存在:”, e)
if d(text='跳过广告').exists:d(text='跳过广告').click()print("点击:跳过广告")time.sleep(2)
else:pass
if d(description='去看看').exists:d.click(0.49, 0.324)print("点击:非去看看")time.sleep(2)
else:pass
# # 登录后点击我的
print_description_to_file(d)
time.sleep(2)
d.click(0.681, 0.074)
# d.xpath('//*[@resource-id="android:id/content"]/android.widget.FrameLayout[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.widget.ImageView[5]').click_exists()
# time.sleep(6)
print("点击了我的图标")
# 开始看广告了
if d(description='开启免费模式').exists:d(description='开启免费模式').click()print('执行:d(description=开启免费模式).click()')
else:d.click(0.574, 0.078)print('开始看广告了d.click(0.574, 0.078)')
# 点击获取更多时间
d(description='获取更多时间').click_exists()
# 计时器
start_time=time.time()
if d(description='关闭声音').exists:while d(description='关闭声音').exists:elapsed_time = time.time() - start_timetime.sleep(elapsed_time) # 可以根据实际情况调整等待间隔print('等待',elapsed_time,'秒')try:d(description='关闭广告').click_exists()print('看的广告1')except Exception as e:print("此元素不存在:", e)
else:try:d(text='点击一下,立即免费听歌').wait(timeout=4) # 等待 4 秒time.sleep(3)d(text='点击一下,立即免费听歌').click()print('点击一下,立即免费听歌')time.sleep(3)d.keyevent('4')time.sleep(2)d(resourceId='cn.wenyu.bodian:id/tme_ad_skip_button').click()print('看的广告2')except Exception as e:print("此元素不存在:", e)
print("马上执行忘了")
time.sleep(3)
num=num+1
print('执行第:',num,'次看广告')
相关文章:
【波点音乐看广告】
import uiautomator2 as u2 import time from datetime import datetime import xml.etree.ElementTree as ET import re import os 连接设备 d u2.connect() os.system(‘adb shell chmod 775 /data/local/tmp/atx-agent’) os.system(‘adb shell /data/local/tmp/atx-age…...
[SWPUCTF 2021 新生赛]pop
常见的魔术方法 魔术方法__construct() 类的构造函数,在对象实例化时调用 __destruct() 类的析构函数,在对象被销毁时被调用 __call() 在对象中调用一个不可访问的对象时被调用,比如一个对象被调用时,里面没有程序想调用的属性 …...
【DevOps】Jenkins + Dockerfile自动部署Maven(SpringBoot)项目
环境 docker_host192.168.0.1jenkins_host192.168.0.2 jenkins_host构建完成后把jar发布到docker_host,再通过dockerfile自动构建镜像,运行镜像 1 Jenkins安装 AWS EC2安装Jenkins:AWS EC2 JDK11 Jenkins-CSDN博客 AWS EC2上Docker安装…...
【C++】——入门基础知识超详解
目录 编辑 1.C关键字 2. 命名空间 2.1 命名空间定义 2.2 命名空间使用 命名空间的使用有三种方式: 注意事项 3. C输入&输出 示例 1:基本输入输出 示例 2:读取多个值 示例 3:处理字符串输入 示例 4:读…...
ChatGPT技术演进简介
chatGPT(chat generative pre-train transformer, 可以对话的预训练trasformer模型),讨论点: 1、chatGPT为什么突然火了 2、GPT 1.0、2.0、3.0、3.5 、4和4o区别和特性,在不同应用场景中如何选对模型 3、未…...
C语言 | Leetcode C语言题解之第114题二叉树展开为链表
题目: 题解: void flatten(struct TreeNode* root) {struct TreeNode* curr root;while (curr ! NULL) {if (curr->left ! NULL) {struct TreeNode* next curr->left;struct TreeNode* predecessor next;while (predecessor->right ! NULL)…...
Vue 子组件向父组件传值
1、使用自定义事件 ($emit) 这是Vue中最常用的子组件向父组件传递数据的方式。子组件通过触发一个自定义事件,并附加数据作为参数,父组件则监听这个事件并处理传递过来的数据。 子组件 (发送数据): <template><button click"…...
【前端笔记】Vue项目报错Error: Cannot find module ‘webpack/lib/RuleSet‘
网上搜了下发现原因不止一种,这里仅记录本人遇到的原因和解决办法,仅供参考 原因:因为某种原因导致本地package.json中vue/cli与全局vue/cli版本不同导致冲突。再次提示,这是本人遇到的,可能和大家有所不同,…...
edge浏览器的网页复制
一些网页往往禁止复制粘贴,本文方法如下: 网址最前面加上 read: (此方法适用于Microsoft Edge 浏览器)在此网站网址前加上read:进入阅读器模式即可...
视频播放器-Kodi
一、前言 Kodi 是一款开源免费的多媒体播放软件。Kodi 是由非营利性技术联盟 Kodi 基金会开发的免费开源媒体播放器应用程序。 Kodi是一款免费和开源(遵循GPL协议)的多媒体播放器和娱乐中心软件,由XBMC基金会开发。Kodi的主要功能是管理和播…...
Helm安装kafka3.7.0无持久化(KRaft 模式集群)
文章目录 2.1 Chart包方式安装kafka集群 5.开始安装2.2 命令行方式安装kafka集群 搭建 Kafka-UI三、kafka集群测试3.1 方式一3.2 方式二 四、kafka集群扩容4.1 方式一4.2 方式二 五、kafka集群删除 参考文档 [Helm实践---安装kafka集群 - 知乎 (zhihu.com)](https://zhuanlan.…...
【机器学习】期望最大化(EM)算法
文章目录 一、极大似然估计1.1 基本原理1.2 举例说明 二、Jensen不等式三、EM算法3.1 隐变量 与 观测变量3.2 为什么要用EM3.3 引入Jensen不等式3.4 EM算法步骤3.5 EM算法总结 参考资料 EM是一种解决 存在隐含变量优化问题 的有效方法。EM的意思是“期望最大化(Exp…...
【Python】机器学习中的过采样和欠采样:处理不平衡数据集的关键技术
原谅把你带走的雨天 在渐渐模糊的窗前 每个人最后都要说再见 原谅被你带走的永远 微笑着容易过一天 也许是我已经 老了一点 那些日子你会不会舍不得 思念就像关不紧的门 空气里有幸福的灰尘 否则为何闭上眼睛的时候 又全都想起了 谁都别说 让我一个人躲一躲 你的承诺 我竟然没怀…...
重新思考:Netflix 的边缘负载均衡
声明 本文是对Netflix 博客的翻译 前言 在先前关于Zuul 2开源的文章中,我们简要概述了近期在负载均衡方面的一些工作。在这篇文章中,我们将更详细地介绍这项工作的原因、方法和结果。 因此,我们开始从Zuul和其他团队那里学习&#…...
元组的创建和删除
目录 使用赋值运算符直接创建元组 创建空元组 创建数值元组 删除元组 自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 元组(tuple)是Python中另一个重要的序列结构&#…...
CSS3用户界面
用户界面 appearance appearance 属性用于控制元素是否采用用户代理(浏览器)的默认样式(外观) element {appearance: auto | none;}auto(默认):元素采用浏览器提供的默认样式。none:元素不采用任何默认样式,显示为“裸”元素,通常表现为无特定样式的简单框。input[…...
STL源码刨析:序列式容器之vector
目录 1.序列式容器和关联式容器 2.vector的定义和结构 3.vector的构造函数和析构函数的实现 4.vector的数据结构以及实现源码 5.vector的元素操作 前言 本系列将重点对STL中的容器进行讲解,而在容器的分类中,我们将容器分为序列式容器和关联式容器。本章…...
Flutter 中的 AbsorbPointer 小部件:全面指南
Flutter 中的 AbsorbPointer 小部件:全面指南 在Flutter中,AbsorbPointer是一个特殊的小部件,用于吸收(或“吞噬”)所有传递到其子组件的指针事件(如触摸或鼠标点击)。这在某些情况下非常有用&…...
Web开发学习总结
学习路线 Web 全球广域网,也称为万维网(www World Wide Web),能够通过浏览器访问的网站 初识Web前端 Web标准也称为网页标准,由一系列的标准组成,大部分由W3C(World Wide Web Consortium,万维网联盟)负责制定。三个组…...
springboot相关知识集锦----1
一、springboot是什么? springboot是一个用于构建基于spring框架的独立应用程序的框架。它采用自动配置的原则,以减少开发人员在搭建应用方面的时间和精力。同时提升系统的可维护性和可扩展性。 二、springboot的优点 约定优于配置 版本锁定…...
PC微信客户端增强实战:基于UI Automation的合规消息观测方案
1. 这不是“破解”,而是对本地客户端行为的深度观测与可控增强“PC端微信逆向实战指南:wxhelper全流程部署与应用”——这个标题里藏着三个容易被误解的关键词:“逆向”“wxhelper”“全流程”。很多人一看到“逆向”,下意识联想到…...
从COCO person_keypoints到YOLO格式:一份完整的姿态估计数据集转换脚本与避坑指南
从COCO到YOLO格式:姿态估计数据集转换实战手册在计算机视觉领域,姿态估计任务正从学术研究快速走向工业应用。许多开发者希望利用YOLO系列模型(如YOLOv8-Pose)进行训练,却常常在数据预处理阶段遇到障碍。本文将提供一套…...
ARM SVE2指令集与USUBWB指令优化实践
1. ARM SVE2指令集概述在当今计算密集型应用领域,向量处理能力已成为衡量处理器性能的关键指标。ARM架构的Scalable Vector Extension 2(SVE2)作为第二代可扩展向量指令集,在2021年随ARMv9架构一同发布,为高性能计算领…...
Graph Fusion:一张 512 节点的图怎么压到 120 个以内
Operator Fusion 解决单点算子合并,Graph Fusion 在更大范围做整图级别的融合。GE 图引擎收到 ATC 编译好的图后,不是直接拿去执行——它先跑一遍图优化流水线,常量折叠、算子替换、模式匹配、Buffer 复用,把几百个节点的"散…...
Agent Harness 系列:为什么你的 Agent 演示很顺、上线就崩?
导读: 同样的模型,换一套外围基础设施,排名从第 30 开外直接冲到第 5——没有改动任何模型权重,没有换更贵的 API。这不是玄学,这是 Agent Harness 的威力。本文是三篇系列的第一篇,从"为什么需要 Har…...
CAXA 引出说明
位置同 CAD 里引线。效果示例设置样式默认样式,GB_引出说明(1984)Tip:如果引线样式需求是和标注样式一致,就使用“标注” 这一个样式就可以了。场景例如,标注比例是 1:4;但有个地方需要用文字引…...
Agent开发五层架构详解,AI智能体开发知识点
AI Agent 的五层架构是构建具备自主规划与执行能力的智能代理系统的核心设计范式。 该架构将复杂的智能行为解耦为五个逻辑层次,确保了系统的模块化、可扩展性与可维护性。 以下是对每一层的深度讲解,涵盖其核心概念、应包含的组件以及关键设计要点。 …...
Kubernetes自动化运维与CI/CD集成:构建高效的持续交付流水线
Kubernetes自动化运维与CI/CD集成:构建高效的持续交付流水线 一、CI/CD概述 CI/CD(持续集成/持续交付) 是一种自动化软件交付的方法论,在Kubernetes环境中集成CI/CD可以实现应用的自动化构建、测试和部署。 1.1 CI/CD流程 代码…...
ChatGPT生成内容同质化困局破局术:用故事化表达重构人机协作范式(仅限首批200位读者获取的叙事权重矩阵)
更多请点击: https://codechina.net 第一章:叙事权重矩阵的底层逻辑与人机协作范式跃迁 叙事权重矩阵并非传统意义上的数值张量,而是一种动态语义映射结构,它将人类叙事意图、上下文可信度、模型生成置信度及跨模态对齐信号统一编…...
