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

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

听很多朋友说,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池,这样子速度也并不是问题。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 因果推断学习笔记三——Uplift模型「建议收藏」

    因果推断学习笔记三——Uplift模型「建议收藏」一、Uplift模型因果推断在互联网界应用主要是基于Upliftmodel来预测额外收益提升ROI。Uplift模型帮助商家计算人群营销敏感度,驱动收益模拟预算和投放策略制定,促成营销推广效率的最大化。同时如何衡量和预测营销干预带来的“增量提升”,而不是把营销预算浪费在“本来就会转化”的那部分人身上,成为智能营销算法最重要的挑战。举个例子????:对用户A和用户B都投放广告,投放广告后用户A的CVR(转化量/点击量)为5%,用户B的CVR为4%,那么是否就给用户A投广告呢?仅从投放广告后的结果来看是这

    2025年5月23日
    5
  • ubuntu安装QT_ubuntu安装deb命令

    ubuntu安装QT_ubuntu安装deb命令ubuntu安装QT依赖sudoapt-getinstallbuild-essential&&sudoapt-getinstalllibgl1-mesa-dev

    2022年10月15日
    2
  • 完美解决C#中拖动splitContainer分割线时显示虚线问题

    完美解决C#中拖动splitContainer分割线时显示虚线问题完美解决C#中拖动splitContainer分割线时显示虚线问题

    2022年7月18日
    12
  • 推特宣布永久停用特朗普个人账号

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 据央视新闻消息,当地时间1月8日晚,美国社交网站推特发布声明,称将永久停用美国总统特朗普的个人账号。 声明称,“在经…

    2021年6月25日
    85
  • CSDN社区内容创作规范

    CSDN长久以来秉持初心,致力于为广大用户提供良好的创作环境,打造健康有序的技术生态!但良好的社区环境,需各位创作者与CSDN共同维护建立!【CSDN内容创作规范】请在发文前认真阅读:如你发布的内容存在以下问题,文章将无法通过审核,违规情节严重的,将对帐号进行封号处理。请各位创作者严格遵守社区的内容创作规范,共同守护我们的社区环境!目录一、在平台发布以下相关内容审核将不予通过1、违反法律法规和相关政策2、无资质发布专业领域内容3、流量作弊4、营销/推广引流5、不文明用语6、

    2022年4月8日
    102
  • LM算法——列文伯格-马夸尔特算法(最速下降法,牛顿法,高斯牛顿法)(完美解释负梯度方向)

    LM算法——列文伯格-马夸尔特算法(最速下降法,牛顿法,高斯牛顿法)(完美解释负梯度方向)首先谈一下应用场景——在拟合的时候进行应用什么是拟合?你有一堆数据点,我有一个函数,但是这个函数的很多参数是未知的,我只知道你的这些数据点都在我的函数上,因此我可以用你的数据点来求我的函数的未知参数。例如:matlab中的fit函数最小二乘法天生就是用来求拟合的,看函数和数据点的逼近关系。它通过最小化误差的平方和寻找数据的最佳函数匹配。拟合我们可以认为是一种试探性的方法,这种方法在计算机出…

    2022年10月1日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号