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

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

听很多朋友说,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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ADB安装卸载应用[通俗易懂]

    ADB安装卸载应用[通俗易懂]一、目的使用adb快速安装apk手机app使用adb卸载app(卸载手机自带应用,root下)二、操作2.1adb安装apk手机USB连接电脑(连接成功进入adb)执行adbinstall-r<apk绝对路径>只需要将文件拉近cmd窗口中便会自动解析路径(最好将apk放到c盘)手机中确认安装即可…

    2022年5月13日
    69
  • Java安全之XStream 漏洞分析

    Java安全之XStream漏洞分析0x00前言好久没写漏洞分析文章了,最近感觉在审代码的时候,XStream组件出现的频率比较高,借此来学习一波XStream的漏洞分析。0x01XSt

    2021年12月13日
    53
  • Spring整合MyBatis——超详细

    Spring整合MyBatis——超详细Spring整合MyBatis——超详细一、Spring整合MyBatis的三个关键点二、整合步骤1、创建一个Maven项目2、在pom.xml文件中添加jar包的依赖2、配置MyBatis文件(1)新建一个实体类的包和User实体类(2)编写实体类(3)新建Mapper接口包和UserMapper接口(3)新建jdbc资源文件jdbc-config.properties(4)新建mybatis配置文件mybatis.xml(5)新建logj4j的日志配置文件log4j.properties

    2022年6月5日
    44
  • Dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?

    Dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?面试题dubbo负载均衡策略和集群容错策略都有哪些?动态代理策略呢?面试官心理分析继续深问吧,这些都是用dubbo必须知道的一些东西,你得知道基本原理,知道序列化是什么协议,还得知道具体用dubbo的时候,如何负载均衡,如何高可用,如何动态代理。说白了,就是看你对dubbo熟悉不熟悉:dubbo工作原理:服务注册、注册中心、消费者、代理通信、负载均衡; 网络通…

    2022年7月11日
    21
  • 完美解决:针对tensorflow中,tf.logging.set_verbosity(tf.logging.ERROR)问题。

    完美解决:针对tensorflow中,tf.logging.set_verbosity(tf.logging.ERROR)问题。tf.logging.set_verbosity(tf.logging.ERROR)代码作用:让tensorflow只讲错误信息进行记录。因为Tensorflow2.0移除了一些API,其中就包括logging属性。所以如果你用tensorflow2.0的话,请参考下文解决。解决方法:将此代码更换为:tf.compat.v1.logging.set_verbosity(tf.compat…

    2025年6月14日
    0
  • jmeter常见面试题_hr面试问题大全及答案

    jmeter常见面试题_hr面试问题大全及答案问题列表在项目中如何用jmeter进行http接口测试?Jmeter常用元件有哪些?jmeter如何管理cookie和session信息?jmeter中如何实现关联?jmeter中断言方式?jmeter参数化的方式有哪几种可以实现?Jmeter怎么录制,怎么过滤?JMeter结果树响应数据中文乱码如何解决?用户定义的变量和用户参数的区别?Jmeter怎么实现持续集成测试?在项目中如何用jmeter进行http接口测试?(重点)在Jmeter安装目录bin中,找到jmet

    2022年9月30日
    0

发表回复

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

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