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

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

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


相关推荐

  • Python:Flask使用jsonify格式化时间

    Python:Flask使用jsonify格式化时间代码如下#-*-coding:utf-8-*-fromdatetimeimportdatetime,datefromflask.jsonimportJSONEncoderclassCustomJSONEncoder(JSONEncoder):defdefault(self,obj):ifisinstance(obj,datetime):returnobj.strftime(‘%Y-%m-%d%H:%M:%

    2022年5月20日
    77
  • ftp工具哪个好用_客户端游戏人气排行榜

    ftp工具哪个好用_客户端游戏人气排行榜序言:随着互联网的不断普及、发展,越来越多的人在使用FTP软件,它被广泛的应用于网页制作、网站更新、资源共享、数据传输等多个方面。“工欲善其事,必先利其器”,面对现在多如牛毛的各种FTP软件,我们到底选择哪一款才能更好的帮助我们呢?为此我们将针对当前比较流行的十款FTP客户端软件进行横向评测,通过下面的评测我们将会给出圆满的答案,希望能够给广大读者提供指引和帮助。导读:☆:

    2022年10月19日
    0
  • Lucene4 TokenStream「建议收藏」

    Lucene4 TokenStream「建议收藏」packageorg.apache.lucene.analysis;/**LicensedtotheApacheSoftwareFoundation(ASF)underoneormore*contributorlicenseagreements.SeetheNOTICEfiledistributedwith*thisworkfor

    2022年7月22日
    7
  • BP神经网络算法改进文献_bp神经网络算法流程图

    BP神经网络算法改进文献_bp神经网络算法流程图周志华机器学习BP改进试设计一个算法,能通过动态调整学习率显著提升收敛速度,编程实现该算法,并选择两个UCI数据集与标准的BP算法进行实验比较。1.方法设计传统的BP算法改进主要有两类:-启发式算法:如附加动量法,自适应算法-数值优化法:如共轭梯度法、牛顿迭代法、Levenberg-Marquardt算法(1)附加动量项这是一种广泛用于加速梯度下降法收敛…

    2022年9月11日
    0
  • python字符串的使用方法_python字符串交叉

    python字符串的使用方法_python字符串交叉python字符串常用方法find(sub[,start[,end]])在索引start和end之间查找字符串sub​找到,则返回最左端的索引值,未找到,则返回-1​start和end都可

    2022年7月31日
    3
  • 腾讯 OCR 情况

    腾讯 OCR 情况

    2021年6月14日
    150

发表回复

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

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