IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> python 躺着刷视频(自动刷视频) -> 正文阅读

[移动开发]python 躺着刷视频(自动刷视频)

代码实现

from appium import webdriver
from selenium.webdriver.common.by import By
import time
import subprocess
import random



def kuaishou(adb_name):
    adb_path = r"D:\adb\adb.exe"

    # Appium Server连接的参数
    desired_caps = {
      'platformName': 'Android', # 被测手机是安卓
      'platformVersion': '7', # 手机安卓版本
      'deviceName': 'xxx', # 设备名,安卓手机可以随意填写
      'appPackage': 'com.kuaishou.nebula', # 启动APP Package名称
      'appActivity': 'com.yxcorp.gifshow.HomeActivity', # 启动Activity名称
      'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True
      'resetKeyboard': True, # 执行完程序恢复原来输入法
      'noReset': True,       # 不要重置App
      'newCommandTimeout': 6000,
      'automationName' : 'UiAutomator2'
    }

    # 连接Appium Server,初始化自动化环境
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    num = 0
    elapsed = 0
    judge = 0
    box = 1
    while True:
        try:
            # 设置等待时间等待
            driver.implicitly_wait(40)

            # 是否出现评论图标
            Comment_icon = driver.find_elements(By.ID, "com.kuaishou.nebula:id/comment_icon")
            print(bool(Comment_icon),'出现评论图标')

            # 如果页面没有出现评论图标就进行等待
            if bool(Comment_icon) == False:
                # 键盘返回一下
                subprocess.getoutput(f"{adb_path} -s {adb_name} shell input keyevent 4")
                continue

            # 刷视频
            start = time.time()
            subprocess.getoutput(f"{adb_path} -s {adb_name} shell input swipe 360 1000 360 120")
            sleep_time = random.randint(7, 12)
            time.sleep(sleep_time)
            num += 1
            print('观看第{}个视频,观看{}秒'.format(num, sleep_time))
            end = time.time()
            elapsed += int(end - start)

            # 如果刷到的下一个视频是直播或者看图片的就过滤掉
            Comment_icon = driver.find_elements(By.ID, "com.kuaishou.nebula:id/comment_icon")
            if bool(Comment_icon) == False:
                print(bool(Comment_icon), '是直播,图片或其他异常,过滤掉')
                continue

            if judge <= elapsed:
                print('宝箱的时间到了')
                if Comment_icon:
                    # 点击红包,进入任务主页
                    subprocess.getoutput(f"{adb_path} -s {adb_name} shell input tap 68 750")

                # 定位任务页面  xpath定位的是 我的抵用金
                tasks = driver.find_elements(By.XPATH,
                                             "/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.widget.ListView/android.view.View[2]/android.view.View[1]/android.widget.TextView")

                # 判断是否进入任务页面
                if tasks:
                    print('进入任务页面')
                    time.sleep(2)
                    # 点击宝箱
                    subprocess.getoutput(f"{adb_path} -s {adb_name} shell input tap 604 1155")

                    time.sleep(2)
                    # 返回
                    subprocess.getoutput(f"{adb_path} -s {adb_name} shell input keyevent 4")

                    print(f'宝箱已领{box}个')
                    judge += 1200
                    box += 1

                # 如果没有定位到 “进入任务主页” 和 “我的抵用金” 就返回
                if (bool(Comment_icon) == False) and (bool(tasks) == False):
                    subprocess.getoutput(f"{adb_path} -s {adb_name} shell input keyevent 4")

        except:
            print('出错了,重启')
            subprocess.getoutput(f"{adb_path} -s {adb_name} shell am force-stop com.kuaishou.nebula")
            kuaishou(adb_name)

def RW(adb_name, num=1):
    adb_path = r"D:\adb\adb.exe"

    # Appium Server连接的参数
    desired_caps = {
      'platformName': 'Android', # 被测手机是安卓
      'platformVersion': '7', # 手机安卓版本
      'deviceName': 'xxx', # 设备名,安卓手机可以随意填写
      'appPackage': 'com.kuaishou.nebula', # 启动APP Package名称
      'appActivity': 'com.yxcorp.gifshow.HomeActivity', # 启动Activity名称
      'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True
      'resetKeyboard': True, # 执行完程序恢复原来输入法
      'noReset': True,       # 不要重置App
      'newCommandTimeout': 6000,
      'automationName' : 'UiAutomator2'
    }

    # 连接Appium Server,初始化自动化环境
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

    while True:
        try:
            # 设置等待时间等待
            driver.implicitly_wait(40)

            # 是否出现评论图标
            Comment_icon = driver.find_elements(By.ID, "com.kuaishou.nebula:id/comment_icon")
            print(bool(Comment_icon),'出现评论图标')

            # 如果页面没有出现评论图标就进行等待
            if bool(Comment_icon) == False:
                # 键盘返回一下
                subprocess.getoutput(f"{adb_path} -s {adb_name} shell input keyevent 4")
                continue

            # 点击红包进入任务页面
            subprocess.getoutput(f"{adb_path} -s {adb_name} shell input tap 68 750")

            # 定位任务页面  xpath定位的是 我的抵用金
            tasks = driver.find_elements(By.XPATH,
                                         "/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.widget.ListView/android.view.View[2]/android.view.View[1]/android.widget.TextView")

            # 判断是否进入任务页面
            if tasks:
                time.sleep(3)
                for i in range(10):
                    # 滑动任务页面
                    subprocess.getoutput(f"{adb_path} -s {adb_name} shell input swipe 352 1077 352 777")
                    # 定位看广告的任务
                    welfare = driver.find_elements(By.XPATH, "/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[4]/android.view.View[1]")
                    if welfare:
                        break
                    else:
                        continue

                for i in range(12-num):
                    # 定位看广告的任务
                    welfare = driver.find_elements(By.XPATH, "/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[4]/android.view.View[1]")
                    # 判断是否有看广告的任务
                    if welfare:
                        print('定位到看广告的任务')
                        # 有看广告的任务,则点击
                        welfare[0].click()

                        # 等看完广告了就退出
                        time.sleep(45)
                        subprocess.getoutput(f"{adb_path} -s {adb_name} shell input tap 489 46")
                    print('已完成{}次观看广告任务'.format(num))
                    num += 1
                    time.sleep(1)

                    # 判断是否完成了10次观看,如果完成就结束
                    if num == 10:
                        return

        except:
            print('出错了,重新开始')
            # 判断是否完成了10次观看,如果完成就结束
            if num == 10:
                return
        RW(adb_name, num)


adb_name = input('请输入模拟器的编号:')    # 例如:emulator-5558
RW(adb_name)
kuaishou(adb_name)

如果不知道自己的模拟器编号的话,可以按照下面的步骤获取:

  • 先打开模拟器
  • 再打开win+r 输入命令 adb devices
    在这里插入图片描述
    emulator-5558这个就是你虚拟机的编号名称

使用步骤

为了方便大家,我已经把这些安装包全部放在百度网盘了,大家自行下载吧
链接:https://pan.baidu.com/s/14_D_tLNjcWu3MGI3NyfXbA
提取码:glym

第一个:

安装雷电模拟器,这种的就是傻瓜式安装就好了

第二个:

安装appium,这种的也是傻瓜式安装就好了,然后设置模拟器:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后在设置里面进入开发者选项
在这里插入图片描述

第三个:

把androidsdk这个文件夹放在合适的盘下,再添加到环境变量里面就好了
在这里插入图片描述

第四个:

安装jdk环境,然后添加到环境变量里面就好了
在这里插入图片描述
在这里插入图片描述

第五个:

python安装的第三方库:
pip install appium-python-client
pip install selenium

第六个

先运行appium
在这里插入图片描述
在这里插入图片描述
再运行雷电模拟器
在这里插入图片描述
最后就可以运行python脚本了

感谢你的阅读,你的三连是我分享的动力!

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 23:19:35  更:2022-04-06 23:20:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 20:32:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码