说明:
这是使用python写的一个自动播放快手极速版视频的程序,比如累了可以把手机放在支架上自动播放,观看视频,还可以刷金币;遇到直播或者广告会直接跳过,还可以控制播放多少条视频后退出,也可以自动给视频点赞送小红心;可以解放自己的双手,边看视频,边写代码美滋滋
连接方式
- 第一种:数据线连接手机
- 第二种:局域网连接手机,最好是家里的wifi
- Android手机+笔记本电脑(台式电脑也可以)
- wifi连接容易出错(10061),连不上的解决办法放代码开头部分了
直接上代码
from appium import webdriver
from time import sleep
"""
Android 网络调试 tcpip 开启方法以及10061错误解决方法
1. 将安卓设备usb连接到电脑
2. 设备链接到wifi
3. Ping设备ip,检查是否可通信
4. 在cmd依次输入以下命令:
5. adb usb
6. adb kill-server
7. adb tcpip 5555
8. adb connect youip:5555
9. 拔掉usb插头即可
"""
def next_video(driver):
return driver.swipe(500, 1800, 500, 200)
def zhibo(driver):
"""直播直接划走"""
try:
driver.find_element_by_id('com.kuaishou.nebula:id/like_button')
el = True
except:
print('\t——直播直接划走')
next_video(driver) # 滑动动作,下一条视频
el = False
return el
def lt(timestr):
t_split = timestr.split(':')
t_split_m = int(t_split[0])
t_split_s = int(t_split[1])
times = t_split_m*60+t_split_s-22
return times
def dianzan(driver, el):
"""
判断是否有点赞:
有点赞:点击屏幕判断是否有时间长度
有:获取时间长度,并返回/s
无:返回时间长度10s
"""
if el:
driver.tap([(500, 1000)]) # 点击动作,点击屏幕中心
sleep(1)
try:
el_t = driver.find_element_by_id('com.kuaishou.nebula:id/player_duration')
times = lt(el_t.text)
print('\t——有点赞,不是直播,%d 秒后切换到下一条视频'%times)
driver.tap([(1000, 1736)]) # 点击动作,点赞
except:
print('\t——视频时间比较短,10 秒后切换到下一条视频')
times = 10
else:
times = 10
return times
def connect(tcpip, udid_dataLine:str, udid_wifi:str, Android_version:str):
"""
连接手机
:param tcpip:
:return: driver
"""
desired_caps = {
'platformName': 'Android',
'platformVersion': Android_version,
'deviceName': 'yourPhoneName',
'appPackage': 'com.kuaishou.nebula',
'appActivity': 'com.yxcorp.gifshow.HomeActivity',
'noReset': 'True'
}
if tcpip:
desired_caps['udid'] = '%s:5555'%udid_wifi # 通过局域网 tcpip 协议连接
else:
desired_caps['udid'] = '%s'%udid_dataLine
driver = webdriver.Remote(command_executor='http://127.0.0.1:4723/wd/hub',
desired_capabilities=desired_caps)
return driver
def main(tcpip=False, play=False, Android_version='9.0', udid_dataLine:str='', udid_wifi:str=''):
"""
入口程序
:param tcpip: True 使用局域网wifi连接手机,False使用数据线连接手机
:param play: True 最大长度播放每条视频,False固定每条视频播放30秒
:return: None
"""
i = 0
# 连接手机
driver = connect(tcpip, udid_dataLine, udid_wifi, Android_version)
sleep(5)
if play:
num = int(input('请输入播放视频数量:'))
# 浏览视频
while i < num:
i += 1
print('正在播放第 %d 条,还剩 %d 条视频' % (i, num - i))
sleep(1)
driver.implicitly_wait(3)
el = zhibo(driver)
times = dianzan(driver, el)
sleep(times)
next_video(driver) # 滑动动作,下一条视频
print('%d 条视频播放完毕,退出程序'%num)
else:
num = 1000
# 浏览视频
while i < num:
i += 1
print('正在播放第 %d 条,还剩 %d 条视频' % (i, num - i))
sleep(30)
next_video(driver) # 滑动动作,下一条视频
print('%d 条视频播放完毕,退出程序' % num)
driver.quit()
if __name__ == '__main__':
"""
tcpip: True 使用局域网wifi连接手机,False使用数据线连接手机
play: True 最大长度播放每条视频,False固定每条视频播放30秒
udid_dataLine:数据连接
tcpip=False时,udid_dataLine不能为空
udid_wifi可以为空
udid_wifi:wifi连接
tcpip=True时,udid_wifi不能为空
udid_wifi=局域网手机ip地址
udid_dataLine可以为空
Android_version:手机Android版本
9.0可以为空
"""
main(tcpip=True, play=False, udid_dataLine='adb devices 的udid', udid_wifi='你的手机ip', Android_version='安卓版本')
后言
经过运行是OK的,如果有好的建议或是有什么疑问欢迎在下方留言,谢谢。