Python自动化抖音自动刷视频

环境准备

  • Python3.5以上
  • Appium Server服务器
  • Android SDK,需要用到adb服务
  • 需要依赖Appium-Python-Client组件库
  • 真机或者模拟器,推荐模拟器(真机一般安卓8版本以上了,appium对安卓8以上版本元素获取的兼容性不太好)
  • JDK8环境

实现

确保adb服务和appium服务及真机/模拟器正常打开,然后在真机/模拟器上将抖音打开。

确定需要的参数

参数基本上都是固定的,只需要确定抖音的包名和活动页即可。

adb shell dumpsys window | findstr mCurrentFocus获取到抖音的包名数据,最后代码里的参数:

desired_caps = {
    "platformName": "Android",	# 平台是安卓的
    "deviceName": "127.0.0.1:62001",  # 通过 adb devices命令获取
    "appPackage": "com.ss.android.ugc.aweme",	# 抖音包名
    "appActivity": ".splash.SplashActivity",	# 活动页
    "platformVersion":"7.1" # 7.1.2
}

参数整完记得项目跑起来测试一下。

控制模拟器进入抖音后

我们需要去获取页面上的元素或坐标,来实现滑动视频等其他操作。

到我们的Android SDK的tools目录下使用uiautomatoviewer.bat取页面快照。

操作的过程其实相对简单,就是实现页面滑动即可;可能会遇到弹框、点击授权之类的,处理一下即可。然后还需要注意的就是元素的加载时间问题,尽量考虑好网络、设备等其他因素,将等待时间放长些。

# @creator by wlh
# @date 2023/3/15 19:43
import time

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec

desired_caps = {
    "platformName": "Android",
    "deviceName": "127.0.0.1:62001",  # 通过 adb devices命令获取
    "appPackage": "com.ss.android.ugc.aweme",
    "appActivity": ".splash.SplashActivity",
    "platformVersion": "7.1"  # 7.1.2
}

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_capabilities=desired_caps)

driver.implicitly_wait(20)	# 等待弹框元素
driver.find_element(By.XPATH, "//*[@text='同意']").click()
driver.implicitly_wait(20)	# 等待弹框元素
driver.find_element(By.XPATH, "//*[@text='允许']").click()

time.sleep(1.5)
size = driver.get_window_size()
width, height = size['width'], size['height']	# 获取屏幕宽高

action = TouchAction(driver)
for i in range(5):
    # 实现滑动
    action.press(x=width / 2, y=height / 3 * 2).wait(500).move_to(x=width / 2, y=height / 3).release()
    action.perform()
    try:
        # 3s后 弹框元素不出现,直接跳过继续执行
        WebDriverWait(driver, 3).until(ec.presence_of_element_located((By.XPATH, "//*[@text='允许']")))
        driver.find_element(By.XPATH, "//*[@text='允许']").click()
    except:
        pass

time.sleep(5)
driver.close_app()
driver.quit()
### 播放量算法实现原理 播放量增长并非随机,而是由一套复杂且高效的推荐算法所驱动。这套算法旨在最大化用户体验的同时提高平台的整体活跃度。 #### 初始冷启动阶段 当一个新的视频被上传到平台上时,系统会给该视频一个初始曝光机会,在一定范围内进行测试性的分发。这个范围通常是一个较小规模的人群样本,目的是收集初步反馈数据来评估视频的质量和受欢迎程度[^1]。 #### 数据采集与分析 对于每一个发布的短视频会密切跟踪多项指标,包括但不限于用户的观看时间、点赞数、评论数量以及分享次数等互动行为。这些交互信号构成了评价体系的核心部分,帮助构建精准的用户偏好模型并指导后续更广泛的内容传播路径规划[^3]。 #### 用户兴趣匹配 基于长期积累的学习成果和个人浏览习惯形成的个性化档案,每当有新作品诞生之际,后台服务器便能迅速识别出最有可能对该主题感兴趣的潜在观众群体,并优先向他们展示相关内容。通过这种方式不仅提高了单个视频获得高点击率的可能性,同时也增强了整个社区内成员之间的粘性和参与感。 #### 动态调整权重因子 随着时间推移和技术进步,开发团队持续优化现有框架下的各项参数设置,确保其始终处于最佳状态以适应不断变化的实际应用场景需求。例如,针对不同类型或风格的作品可能会应用不同的评分标准;而对于那些表现出色(即具有较高社会价值或者创新意义)的创作者,则给予额外奖励措施鼓励更多优质资源涌现出来[^2]。 ```python def calculate_playback_score(video_data, user_profile): """ 计算视频播放得分函数 参数: video_data (dict): 包含视频特征的数据字典 user_profile (dict): 当前用户的个人资料 返回: float: 综合评分为视频分配给特定用户的概率值 """ # 初始化基础分数 base_score = 0.5 # 加权计算各个维度的影响 engagement_weight = 0.4 * ( video_data['likes'] + video_data['comments'] + video_data['shares'] ) watch_time_bonus = min(1.0, max(0.0, video_data['avg_watch_duration']/60)) * 0.3 interest_match_factor = cosine_similarity( vectorize(user_profile), vectorize(video_data['tags']) ) * 0.7 final_score = base_score + engagement_weight + watch_time_bonus + interest_match_factor return sigmoid(final_score) ``` 此代码片段展示了如何综合考虑多个因素为每一对“视频-用户”组合打分的过程,其中包含了基本分、互动加成、平均观看时长激励及兴趣契合度四个主要组成部分。最终输出的结果可以理解为系统决定是否将某条内容呈现给指定个体的概率估计值。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值