听很多朋友说,B站播放完成率也是一项挺重要的指标,那么,必须就需要来提高它了。当然作为一个互联网人,怎么可能自己手动来播放视频来提高播放完成率呢?
下面就让我们一起动手干它吧。
主要思路:自动循环播放所有需要提高完成率的视频,点击播放之后,再点击二倍速播放,提高播放时间,同时为每一个视频的播放时间设定为该视频时间长度的一半,这样子就可以使得每个视频都能够播放完成。这样子完成率就能够慢慢地提高了。(前提是在登录状态下,这样子就需要使用到cookies信息了,这个信息可以提前写一个小程序获取到,保存到 json 文件中即可,之后就是取出使用的操作了,一般cookies信息不会那么快过期)
准备工作(python)
1.安装selenium模块;
2.安装浏览器以及对应的浏览器驱动;
准备工作
import time,random
from selenium import webdriver
from selenium.webdriver import FirefoxOptions
from selenium.webdriver.common.action_chains import ActionChains
from fake_useragent import UserAgent
ua = UserAgent()
一、获取需要提高播放完成率的视频的url连接以及视频的时间长度;
# 对于获取自己所有视频以及所有视频的详细信息(时间长度、播放量等等);
# 这一部分在之前的一个博客已经有了详细的讲解,这里就不再啰嗦了
# 获取到的视频信息如下:(一个二维的数组,每一个元素包含了一个视频的url链接和视频的长度)
urls = [['https://www.bilibili.com/video/BV1Si4y1b7vx', 163], ['https://www.bilibili.com/video/BV1hp4y117cF', 108], ['https://www.bilibili.com/video/BV1QA411v7Zg', 221]]
# 自定义弹幕内容(这个按照自己视频内容定义)
tan = ['666','……','牛逼','厉害','666666','666……','刷一下存在感','不错']
二、获取cookies信息,保存到 json 文件中,方便后续调用
因为B站的登录验证码方面需要使用到图片识别定位等等多个方面的知识,不是简单就能够实现的,这时候选择手动登录,保存cookies信息。(毕竟这个也就是登录一次就可以的,之后都是直接调用cookies信息的,所以选择手动登录反而会更加简单)
首次调用小程序进行获取cookies信息,保存cookies信息
# 选择使用的浏览器
def select():
try:
driver1 = webdriver.Firefox()
print('open firefox success ')
return driver1
except Exception as e:
print("Open Firefox fail !!! Because:",e)
# 登录模块
def login(driver1,username,passname):
# 传入的参数后两个是用户的账号以及密码
try:
driver1.get('https://passport.bilibili.com/login')
time.sleep(5)
use = location(driver1,'xpath', '//*[@id="login-username"]')
use.send_keys(username)
time.sleep(0.5)
password = location(driver1,'xpath', '//*[@id="login-passwd"]')
password.send_keys(passname)
time.sleep(0.5)
entry = location(driver1,'xpath', '//div/a[@class="btn btn-login"]')
entry.click()
time.sleep(15) # 等待图片验证码的出现,并且手动处理
cookies = driver1.get_cookies() # 获取登录之后的cookies信息
with open('cookies.json','w') as f:
f.dump(cookies,f)
except Exception as e:
print("登录失败")
print("because:",e)
后续打开浏览器都是直接读取文件中的cookies信息内容,添加到driver中去。(保存cookies信息之后,不再需要重复登录B站)
def get_cookies():
with open('cookies.json','r') as f:
cookies = json.load(f)
def add_cookies(cookies):
try:
options = FirefoxOptions()
options.add_argument(cookies)
driver1 = webdriver.Firefox(options=options)
print("open firefox success")
return driver1
except Exception as e:
print("Open Firefox fail !!! Because:",e)
这样每次使用selenium打开浏览器的时候就可以携带上cookies信息,模拟登陆状态了。
三、使用保存的cookies信息进行打开浏览器,打开需要刷弹幕的视频或者直播(这里打开的是一个B站的视频,其他的都是类似的操作)
利用上面保存的cookies信息,把cookies信息保存添加到driver中去,再刷新一下浏览器即可
driver.add_cookie(cookies) # 插入添加cookies信息
driver.refresh() # 刷新浏览器
四、打开需要刷弹幕的视频页面,定位输入弹幕的输入框,点击发送,之后等待一定的时间间隔继续重复操作
# 发送弹幕函数
def barrage(driver1):
try:
bar = location(driver1,'xpath', '//input[@class="bilibili-player-video-danmaku-input"]')
bar.clear()
bar.send_keys(tan[random.randint(0, len(tan)-1)])
time.sleep(1)
define = location(driver1,'xpath', '//div[@class="bilibili-player-video-btn-send bui bui-button bui-button-blue"]')
define.click()
print("发送成功")
time.sleep(random.randint(15,20))
except Exception as e:
print("弹幕发送失败:",e)
只要设置一个循环就可以直接不断地发送弹幕,但是有一个问题就是需要注意的是,弹幕不可以发送过快,这样子容易导致封账号不让继续发送弹幕。但如果拥有多个账号可以建立一个cookies池,这样子速度也并不是问题。