网上的b站视频下载工具其实已经是一箩筐了,但是大部分有个问题,就是不支持批量下载。

不废话,直接说搜索的结果,目前发现的两个可用的:

b站下载姬:https://github.com/FlySelfLog/downkyi 最好用的就是这个了,我也是用这个。

自己号称东半球第二快的用go语言实现的程序:https://github.com/sodaling/FastestBilibiliDownloader 这个东西,首先因为作者太懒,没有打包成exe,所以导致配置起来相当麻烦,你直接下载下来跑的话会各种报错,需要下载很多go的库,同时,需要你有一点go语言基础。然后是,这个东西本身是有问题的,下载一个up主的视频会少了最后一页,大概是他的代码的for循环少了个+1吧。因为代码很凌乱很绕,感觉像在炫技一样,我对go语言的研究也不深,所以就不改他的代码了,直接pass。

用b站下载姬批量下载完某up主的视频之后就是转换问题了。为什么要转换呢,这是因为我在b站上面看up主兔肉菌的绘画类视频觉得很有意思,很有学习价值,所以想要弄成pdf来临摹,这样也方便我打印嘛。

于是想到了python是可以用opencv库来截图的。那就好办了:)

上代码,第一个是单个的版本,第二个是批量转换:

import os
import time
import cv2
import shutil
from fpdf import FPDFfilename = input("请输入下载的文件名(注意不要添加文件名后缀):")try:cap = cv2.VideoCapture(os.path.dirname(os.path.abspath(__file__)) + '\\' + filename + '.flv')print("读取视频成功...")
except:print("读取视频失败,请检查文件名或文件路径是否正确...")outputpath = os.path.dirname(os.path.abspath(__file__)) + '\\output'
if not os.path.exists(outputpath):print("创建临时文件夹output...")os.makedirs(outputpath)
else:print("检测到临时文件夹output...")count = 0
num = 1
print("开始截屏...")
while cap.isOpened():ret, frame = cap.read()if ret:cv2.imwrite(os.path.dirname(os.path.abspath(__file__)) + '\\output\\frame{:d}.jpg'.format(count), frame)count += 100 # i.e. at 300 fps, this advances one secondprint("正在截取第"+str(num)+"张")num += 1cap.set(1, count)else:cap.release()print("截屏完成,共计"+str(num)+"张~")breakimagelist = os.listdir(outputpath)
print("开始将图片合并后pdf,请耐心等待几秒钟...")
#format 后面的是尺寸,我们的视频默认就是这个尺寸,所以不用改了
pdf = FPDF(unit = "pt", format = [1920, 1080])
# imagelist is the list with all image filenames
for image in imagelist:pdf.add_page()pdf.image(outputpath + "\\" + image,0,0)
pdf.output(os.path.dirname(os.path.abspath(__file__)) + '\\'+ filename +'.pdf', "F")
print("pdf合成完成!")filelist=os.listdir(outputpath)                #列出该目录下的所有文件名
for f in filelist:filepath = os.path.join(outputpath,f)   #将文件名映射成绝对路劲if os.path.isfile(filepath):            #判断该文件是否为文件或者文件夹os.remove(filepath)                 #若为文件,则直接删除elif os.path.isdir(filepath):shutil.rmtree(filepath,True)        #若为文件夹,则删除该文件夹及文件夹内所有文件
shutil.rmtree(outputpath,True)
print("清空并删除临时文件夹output...")t = 5
while t:print(str(t) + "秒后关闭...")t -= 1time.sleep(1)
print("关闭,下次见~")
import os
import datetime
import cv2
import shutil
from fpdf import FPDFrootdir = os.getcwd() + '\\全部'li = os.listdir(rootdir)if not os.path.exists(os.getcwd() + '\\output'):os.makedirs(os.getcwd() + '\\output')def mprint(s):print(str(datetime.datetime.now())+" " + s)def convert(index,whole,lii,f):mprint('处理第'+str(index)+'个视频,共'+str(whole)+'个')temp = os.getcwd() + '\\output\\'+liitry:cap = cv2.VideoCapture(rootdir + "\\" + lii + "\\" + f)count = 0num = 1if not os.path.exists(temp):os.makedirs(temp)while cap.isOpened():ret, frame = cap.read()if ret:cv2.imencode('.jpg',frame)[1].tofile(temp+'\\frame{:d}.jpg'.format(count))count += 100 # i.e. at 300 fps, this advances one secondmprint("正在截取第"+str(index)+"个视频第"+str(num)+"张")num += 1cap.set(1, count)else:cap.release()mprint("截屏完成,共计"+str(num)+"张~")breakexcept:mprint("读取视频失败,请检查文件名或文件路径是否正确...")imagelist = os.listdir(temp)mprint("开始制作第"+str(index)+"个pdf,请耐心等待几秒钟...")#format 后面的是尺寸,我们的视频默认就是这个尺寸,所以不用改了pdf = FPDF(unit = "pt", format = [1920, 1080])# imagelist is the list with all image filenamesfor image in imagelist:pdf.add_page()pdf.image(temp + "\\" + image,0,0)pdf.output(temp +'.pdf', "F")mprint("第"+str(index)+"个pdf合成完成!")filelist=os.listdir(temp)                #列出该目录下的所有文件名for f in filelist:filepath = os.path.join(temp,f)   #将文件名映射成绝对路劲if os.path.isfile(filepath):            #判断该文件是否为文件或者文件夹os.remove(filepath)                 #若为文件,则直接删除elif os.path.isdir(filepath):shutil.rmtree(filepath,True)        #若为文件夹,则删除该文件夹及文件夹内所有文件shutil.rmtree(temp,True)for i in range(0,len(li)):for root,dirs,files in os.walk(os.path.join(rootdir,li[i])):for f in files:if f.endswith(".mp4"):convert(i+1,len(li),li[i],f)break

第二个脚本需要放在下载姬下载的视频的那个download文件夹里面才能跑。

用工具批量下载哔哩哔哩视频并且将内容转换成pdf相关推荐

  1. 读取哔哩哔哩网站下载的json字幕,并将其内容转换成srt字幕保存

    Matlab实现json字幕转换为srt字幕(哔哩哔哩网站下载的json字幕) 在B站下载了一个英文视频,点开来看,发现没有字幕,又在B站上下了字幕,是json格式的,但我的PotPlayer不支持j ...

  2. 【爬虫】批量下载B站收藏夹视频 - Python

    批量下载B站收藏夹视频 起因 开发过程 环境需求 B站API介绍 收藏夹基本信息 收藏夹中各个视频的AV号 收藏夹中各个视频的BV号 最终代码 起因 不知道大家在浏览自己的B站收藏夹的时候,有没有遇到 ...

  3. 前端js html转换成pdf可下载打印;前端js可批量生成条形码;前端js可批量生成二维码,生成letter标签

    注意:本文调试的是letter纸尺寸 前端js html转换成pdf可下载打印  html2canvas  + jspdf 前端js生成条形码 Options · lindell/JsBarcode ...

  4. Android进阶之路 - 批量下载、缓存图片、视频

    之前已经记录过,批量下载图片和缓存本地的方式,此篇主要记录批量下载图片.视频,同时缓存在本地的功能实现 关联篇 Android进阶之路 - 批量下载.缓存图片 Android进阶之路 - 批量下载.缓 ...

  5. python批量下载抖音无水印视频,附软件

    网上很多那种抖音视频解析,去水印下载的网站,不过都只可以下单个,下下来大多数标题还是乱码.一点都不geek. 咱们懒人找资源的粉丝最大的优点就是懒,这种重复性的活python帮咱们搞定. 批量下载抖音 ...

  6. 如何批量下载美拍作者页短视频

    作者页的短视频是热门的,不管是视频搬运工还是用户自己收藏都喜欢高颜值的短视频.那如何批量下载美拍作者页短视频?一起来看小编的操作吧. 百度搜索"视频下载高手"软件并下载双击打开视频 ...

  7. 如何将ppt批量转换成pdf?

    如何将ppt批量转换成pdf?相信每个上班族都一样,工作时都要使用到很多种办公文件,例如:word.ppt.pdf.txt.图片等,不同格式的文件有着不同的特点以及不同的作用.ppt是工作汇报时最常用 ...

  8. php 把ppt转pdf文件大小,ppt转换成pdf 怎么将ppt文件批量转换为pdf文件?ppt高质量转换pdf的方法...

    在工作上,有时候要处理多个文件,并且会涉及到各种资料文档的格式转换问题.前两天就有狸友跟小编说工作中需要将大量资料文件ppt转换成pdf格式再传输给他人.如果一个个将ppt转化为pdf的话工作量也是很 ...

  9. 快速批量把jpg转换成pdf的方法

    快速批量把jpg转换成pdf的方法 很多微友反映,有时在办公过程中遇到需要图片快速批量转化成PDF格式文件或者将多个图片合并为一个PDF文件的情况,想知道有没有一个支持多种格式的JPG转换成PDF转换 ...

最新文章

  1. bat修改文件内容_在win10系统中一键修改MapGIS67系统库背景色
  2. The application could not be verified
  3. 【Docker】 安装 nexus3
  4. MySQL部署2002_MySQL入门02-MySQL二进制版本快速部署
  5. ASP.NET MVC 4 (一)路径映射
  6. Shell重定向的概念笔记
  7. button 隐藏属性_PyQt5实现仿QQ贴边隐藏功能!有点意思
  8. python小明爬楼梯_爬楼梯(Python and C++解法)
  9. linux常用命令行编辑快捷键
  10. 怎么进入本地组策略编辑器
  11. Photoshop简单案例(5)——利用ps进行颜色替换
  12. 全国大学生智能汽车竞赛-室外光电组无人驾驶挑战赛-2019
  13. Excel 去重找其他几列的最大值
  14. HBASE region简介
  15. led流水灯c语言程序移位,LED流水灯程序 移位写法
  16. reviewer中文_专家审稿意见回复范文如何回复中文审稿人意见结尾如何写
  17. 使用第三方软件管理苹果设备
  18. html的slider位置调整,ios设置UISlider的起始位置和增量
  19. 结构方程模型分析流程
  20. ECCV2020解读:SNE-RoadSeg: Incorporating Surface Normal Information into Semantic Segmentation...

热门文章

  1. 2017寒假第一篇随笔(寒假作业一)
  2. HTML 表格tablecaptionthtrtdtheadtbodytfootcolcolgroup
  3. 将War发布到Tomcat7上遇到的问题及其解决
  4. cs_EmailQueue_Failure///cs_Emails_Dequeue///cs_Emails_Enqueue
  5. 冷启动问题:如何构建你的机器学习组合?
  6. 时间同步-ntp服务器的搭建(docker版本)
  7. 【代码审计】使用SonarQube进行代码质量分析管理
  8. 使用Troll对ARM Cortex-M处理器进行系统内核调试
  9. 取消chrome下input和textarea的聚焦边框
  10. 转:如何进行软件架构设计?