纯ruby版本的bilibili视频上传脚本,可以将指定目录下的视频依次上传到bilibili(需要对应账号的cookie)

主要分为4个步骤:预上传,获取推荐标签,通知上传完成,上传

一,视频预上传

获取上传视频所需的各项参数,并将视频切割 进行分片上传

 复制代码 隐藏代码
def get_preupload(name,cookie,path)size = File.size("#{path}/#{name}")puts "#{Time.now}-------------------preupload预上传"lk = "https://member.bilibili.com/preupload?name=#{URI.encode(name)}&size=#{size}&r=upos&profile=ugcupos/bup&ssl=0&version=2.7.1&build=2070100&upcdn=bda&probe_version=20200224"headers = {"cookie"=>cookie,"user-agent"=>"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36"}#1str =RestClient.get(lk,headers=headers)doc = JSON.parse(str)auth = doc["auth"]upos_uri = doc["upos_uri"]chunk_size = doc["chunk_size"]biz_id = doc["biz_id"]#2puts "#{Time.now}-------------------准备上传视频"lk = "https://upos-sz-upcdnbda2.bilivideo.com/#{upos_uri.gsub("upos://","")}?uploads&output=json"data = "uploads&output=json"headers = {"cookie"=>cookie,"user-agent"=>"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36","x-upos-auth"=>auth}str = RestClient.post(lk,data,headers=headers)doc = JSON.parse(str)upload_id = doc["upload_id"]#puts "#{Time.now}-------------------分批上传视频"chunkss = size.to_f/chunk_sizeif chunkss > chunkss.to_ichunks =chunkss.to_i + 1endfile = File.open("#{path}/#{name}")if chunks < 3sleep(15)endfor i in 1..chunksputs "#{Time.now}-------------------上传第#{i}部分"partnumber = 0+ichunk = i-1starts = file.tell()data = file.read(chunk_size)sizes = data.sizeends = file.tell()lk = "https://upos-sz-upcdnbda2.bilivideo.com/#{upos_uri.gsub("upos://","")}?partNumber=#{partnumber}&uploadId=#{upload_id}&chunk=#{chunk}&chunks=#{chunks}&size=#{sizes}&start=#{starts}&end=#{ends}&total=#{size}"params = "partNumber=#{partnumber}&uploadId=#{upload_id}&chunk=#{chunk}&chunks=#{chunks}&size=#{sizes}&start=#{starts}&end=#{ends}&total=#{size}"headers = {"cookie"=>cookie,"user-agent"=>"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36","x-upos-auth"=>auth}str = RestClient.put(lk,data=data,headers=headers)puts "-----上传视频状态码#{str.code}"endputs "-------------------通知上传完毕"lk = "https://upos-sz-upcdnbda2.bilivideo.com/#{upos_uri.gsub("upos://","")}?output=json&name=#{URI.encode(name)}&profile=ugcupos%2Fbup&uploadId=#{upload_id}&biz_id=#{biz_id}"params = "output=json&name=#{URI.encode(name)}&profile=ugcupos%2Fbup&uploadId=#{upload_id}&biz_id=#{biz_id}"data= {}data[:parts] = chunks.times.map{|x| {"partNumber":x+1,"eTag":"etag"}}headers4 = {"cookie"=>cookie,"user-agent"=>"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36","X-Upos-Auth"=>auth}puts str = RestClient.post(lk,payload=data.to_json,headers=headers)return upos_uri,biz_idend

二,获取推荐标签

获取bilibili给出的视频推荐标签,我这边是使用默认的前5个标签

 复制代码 隐藏代码
  def get_tag(name,cookie,upos_uri)sleep(2)puts "-------------------获取视频推荐标签"puts lk = "https://member.bilibili.com/x/vupre/web/archive/tags?typeid=&title=#{URI.encode(name.gsub(".mp4",""))}&filename=#{upos_uri.split("/")[-1].gsub(/\..+/,"")}&desc=&cover=&groupid=0&vfea="headers ={"cookie"=>cookie}str = RestClient.get(lk,headers=headers)doc = JSON.parse(str)tags = doc["data"][0..4].map{|x| x["tag"]}.join(",")puts "----当前标签:#{tags}"return tagsend

三,预发布

 复制代码 隐藏代码
 def get_inform(cookie)puts "#{Time.now}-------------------预发布"lk = "https://member.bilibili.com/x/geetest/pre/add"headers ={"cookie"=>cookie}str = RestClient.get(lk,headers=headers)end

四,发布视频

 复制代码 隐藏代码
  def get_up(upos_uri,name,biz_id,tags,cookie,bili_jct)sleep(2)lk = "https://member.bilibili.com/x/vu/web/add?csrf=#{bili_jct}"data="{\"copyright\":2,\"videos\":[{\"filename\":\"#{upos_uri.split("/")[-1].gsub(/\..+/,"")}\",\"title\":\"#{name.gsub(".mp4","")}\",\"desc\":\"\",\"cid\":#{biz_id}}],\"source\":\"\",\"tid\":174,\"cover\":\"\",\"title\":\"#{name.gsub(".mp4","")}\",\"tag\":\"#{tags}\",\"desc_format_id\":0,\"desc\":\"\",\"dynamic\":\"\",\"subtitle\":{\"open\":0,\"lan\":\"\"},\"up_close_reply\":false,\"up_close_danmu\":false}"headers = {"content-type"=>"application/json;charset=UTF-8","cookie"=>cookie,"dnt"=>"1","origin"=>"https://member.bilibili.com","pragma"=>"no-cache","referer"=>"https://member.bilibili.com/video/upload.html","sec-fetch-dest"=>"empty","sec-fetch-mode"=>"cors","sec-fetch-site"=>"same-origin","user-agent"=>"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36"}puts str = RestClient.post(lk,data,headers=headers)puts "#{Time.now}------------------发布成功"end

哔哩哔哩bilibili自动上传视频脚本-配合爬虫营销号狂喜相关推荐

  1. python广告营销平台_荐用Python写一个营销号垃圾视频生成器

    用Python写一个营销号垃圾视频生成器 可能是闲着太无聊,然而复习是不可能复习的,就做了一个这个玩意儿,改天进军UC和百家号(不会真有人用吧) 先看看效果:(1:20以后) 用Python做的营销号 ...

  2. 2021-07-07 - 使用脚本批量下载网页视频[如哔哩哔哩] - 学习/实践

    1.应用场景 主要用于使用脚本批量下载web视频,音频,图片资源,进行资源的收集下载,或者避免资源的丢失,使用命令脚本则有利于节省时间,提高效率. 比如资源可能后续不存在,或者,想二次整理资源,更好地 ...

  3. Python爬取哔哩哔哩(bilibili)视频

    本篇文章主要给大家讲解下如实使用python 爬取哔哩哔哩中的视频,首先我是一名大数据开发工程师,爬虫只是我的一个业余爱好,喜欢爬虫的小伙伴可以一起交流.好了多了就不多说了喜欢的朋有可以收藏,转发请复 ...

  4. Python采集哔哩哔哩(bilibili)视频(详细教程)

    一.环境准备 我这里使用的是环境如下仅供参考: 开发工具: pycharm python环境:python-3.8.0 依赖的包: shutil,os,re,json,choice,requests, ...

  5. GitHub哔哩哔哩(bilibili)当前视频所有Part,整体下载

    GitHub哔哩哔哩(bilibili)当前视频所有Part,整体下载 首先祝大家,牛年,牛!牛!牛! 最近看GitHub哔哩哔哩(bilibili)高清视频下载这篇文章,观看的人数还挺多的,看来大家 ...

  6. PHP哔哩哔哩bilibili视频弹幕播放器源码 带后台版本

    简介: PHP哔哩哔哩bilibili视频弹幕播放器源码 带后台版本 此款播放器源码添加及修复了很多功能,且所有源码均本地化,不存在外链的情况. 环境:PHP7.0+MySQL5.6 优化修复功能: ...

  7. 分布式定时job-xxljob的详解、使用和创建(附带哔哩哔哩(bilibili)视频)

    一.简介 1.1 概述 XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 1.2 特性 1.简单:支 ...

  8. 【发布】哔哩哔哩bilibili替换旧版播放(稍后再看)

    今天上B站发现强制界面新版了,连旧版切换按钮也隐藏了,目前还能通过[稍后再看]来切换旧版,随便写了个脚本,油猴新建脚本,添加以下 Greasy Fork地址: https://greasyfork.o ...

  9. 菜鸟弟弟从零开始的爬取Bilibili弹幕的Python爬虫教程-哔哩哔哩 - ( ゜- ゜)つロ 干杯~

    从零开始的爬取Bilibili弹幕的Python爬虫教程 或许可以作为一个爬虫小白的练手的demo? 还是先看看什么是爬虫吧!(还有Bilibili! ) 网络爬虫: 网络爬虫(又称为网页蜘蛛,网络机 ...

最新文章

  1. RandomForestClassifier参数min_samples_leaf和min_samples_split理解
  2. css笔记 - transition学习笔记(二)
  3. varnish安装及简单配置
  4. vim 多窗口启动以及相互切换
  5. 网络干货,无论是运维还是开发都要知道的网络知识系列之(五)
  6. 使用Dockerfile创建一个tomcat镜像
  7. 计算机基础算术加法,2011年自考计算机基础知识精选部分及答案(一)-2
  8. 小程序与云服务器api接口,小程序云函数调用http api进行对云数据库的操作
  9. Mongodb密码安全设置
  10. form-create教程:给内置组件和自定义组件添加事件
  11. 【英语学习】【Level 07】U08 Old Stories L1 The old times
  12. 横河川仪压力变送器调零_YOKOGAWA/横河EJX110A差压变送器的性能误差和精度介绍...
  13. jquery双击修改_jQuery双击
  14. Initial Audio Trap Phantom Heatup3 Expansion for mac(Heatup3扩展预设)
  15. 阿里云CentOS7.3配置Java Web应用和Tomcat步骤
  16. 手把手教你Charles抓包工具使用
  17. 扫雷游戏详解——附源码
  18. BST中序遍历(Iterative)
  19. esxi虚拟服务器网络搭建,小姜学网络(使用VMware ESXi 5.5搭建VMware虚拟化平台一)...
  20. configure文件的生成

热门文章

  1. mac 下禁止顽固的开机程序自启
  2. 地图行业应用的难点思考
  3. Photoshop从入门到发疯(一)身份证添加水印
  4. python截图工具和模拟鼠标键盘_python PyAutoGUI 模拟鼠标键盘操作和截屏功能
  5. space header page consists of zero bytes in data
  6. linux下arm架构中,触摸屏下没有鼠标事件,采用qtouchevent事件来代替,左右滑动显示完文本
  7. 完美解决PC电脑0x0和0x800BFA07等错误,成功加入Windows10/11预览体验计划
  8. BusyBox v1.22.1 (Ubuntu 1:1.22.0-15ubuntu1) built-in shell (ash) 开机黑屏
  9. Windows2000 内核级进程隐藏、侦测技术[毕业论文]
  10. matlab零状态响应幅度频谱,matlab零状态、零输入响应