前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自己动手编写一个自动发送弹幕的脚本,原来如此简单

自己动手编写一个自动发送弹幕的脚本,原来如此简单

作者头像
全栈程序员站长
发布2022-07-08 13:17:42
2.8K0
发布2022-07-08 13:17:42
举报
文章被收录于专栏:全栈程序员必看

听很多朋友说,B站播放完成率也是一项挺重要的指标,那么,必须就需要来提高它了。当然作为一个互联网人,怎么可能自己手动来播放视频来提高播放完成率呢?

下面就让我们一起动手干它吧。

主要思路:自动循环播放所有需要提高完成率的视频,点击播放之后,再点击二倍速播放,提高播放时间,同时为每一个视频的播放时间设定为该视频时间长度的一半,这样子就可以使得每个视频都能够播放完成。这样子完成率就能够慢慢地提高了。(前提是在登录状态下,这样子就需要使用到cookies信息了,这个信息可以提前写一个小程序获取到,保存到 json 文件中即可,之后就是取出使用的操作了,一般cookies信息不会那么快过期)

准备工作(python) 1.安装selenium模块; 2.安装浏览器以及对应的浏览器驱动;

准备工作

代码语言:javascript
复制
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连接以及视频的时间长度;

代码语言:javascript
复制
# 对于获取自己所有视频以及所有视频的详细信息(时间长度、播放量等等);
# 这一部分在之前的一个博客已经有了详细的讲解,这里就不再啰嗦了

# 获取到的视频信息如下:(一个二维的数组,每一个元素包含了一个视频的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信息

代码语言:javascript
复制
# 选择使用的浏览器
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站)

代码语言:javascript
复制
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中去,再刷新一下浏览器即可

代码语言:javascript
复制
driver.add_cookie(cookies)      # 插入添加cookies信息
driver.refresh()                # 刷新浏览器

四、打开需要刷弹幕的视频页面,定位输入弹幕的输入框,点击发送,之后等待一定的时间间隔继续重复操作

代码语言:javascript
复制
# 发送弹幕函数
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池,这样子速度也并不是问题。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/115123.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年11月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档