本文为博主原创,未经许可严禁转载。
本文链接:https://blog.csdn.net/zyooooxie/article/details/111307733

这篇分享是我在csdn的第100篇原创了,真的是时光飞逝啊;那 这次分享来说些下载B站视频相关的;

这是我写的 代码改变生活的 category,有兴趣可以看看;

个人博客:https://blog.csdn.net/zyooooxie

需求背景

我手机装了bilibili的app,有时候因为喜欢、学习的缘故,会缓存些视频;之前缓存格式为blv,我将其保存到电脑里,都是直接改blv为mp4【改文件格式】;现在发现 有些是两个:audio.m4s和video.m4s,我想保存 得先合并; 感觉好麻烦啊!!!

此外 想弄清楚哪个是哪个,重命名 也很麻烦!!!

so 我想找个途径,只需要输入视频url 或者某up的空间url,就可触发下载,保存;

那要怎么做呢?
找到了知乎,看到 有人推荐you-get;

you-get

看了些教程,感觉 实操不难。

you-get下载视频

【因为you-get 轮子都已经造好了,我就对着我自己的需求 做些简单的扩展】

细致说下 我的要求:

  1. 可下载单个视频,也可以多个视频批量下载,也可以下载某up的全部视频;
  2. 能够指定下载路径;
  3. 只下视频,不下弹幕;
  4. 尽可能下载高清的视频;

(我不是大会员,最高只能是1080p-80;我了解到的qn值:4k-120 \ 1080p60-116 \1080p+为112 \ 1080p-80 \ 720p60-74 \ 720p-64 \ 480p-32 \ 360p-16)

    def down_bilibili_videos(self, url, multipart=None, down_path=r'F:\bili'):"""不用大会员cookies 下载视频:param url:地址 (此处为不带p=x的):param multipart:a multipart video:param down_path: 保存路径:return:"""if multipart is None:cmd = """you-get --format=dash-flv {} -o {} --no-caption""".format(url, down_path)else:os.chdir(down_path)new_dir = url.split('/')[-1]if not os.path.exists(new_dir):os.mkdir(new_dir)down_path = os.path.join(down_path, new_dir)cmd = """you-get --format=dash-flv --playlist {} -o {} --no-caption""".format(url, down_path)print(cmd)os.system(cmd)

【请留意:这是第一版,实际博主使用代码 在第二篇分享 , 第三篇分享】

说下我用的options:

  1. 高清画质:我选了–format=dash-flv,是因为 --format=dash-flv 和 --format=flv 我看都是1080p,但第二个 我家里电脑下载速度慢;
  2. –no-caption 不下载其他文件(字幕,歌词,弹幕。。。);
  3. -o 指定保存路径
  4. –playlist 是download all parts

获取某up主的所有视频BV号

上图 这个就是我的账号-未登录的时候; up空间

查看投稿,

查接口请求,

所以,可以写代码了;【因为我没投过稿,所以响应是没有bvid信息 ;{“code”:0,“message”:“0”,“ttl”:1,“data”:{“list”:{“tlist”:null,“vlist”:[]},“page”:{“pn”:1,“ps”:30,“count”:0}}},可以拿其他up主来试下】

    def get_UP_videos(self, up_mid, pagesize=25):url = 'https://api.bilibili.com/x/space/arc/search?mid={}&pn=1&ps={}'.format(up_mid, pagesize)# res = requests.get(url, headers=self.change_header)           # 伪造uares = requests.get(url)bvid_list = res.json()['data']['list']['vlist']bvid = [bv['bvid'] for bv in bvid_list]count = res.json()['data']['page']['count']chu = math.ceil(count / pagesize)if chu != 1:for i in range(2, chu):new_url = 'https://api.bilibili.com/x/space/arc/search?mid={}&pn={}&ps={}'.format(up_mid, i, pagesize)new_res = requests.get(new_url)new_bvid = [bv['bvid'] for bv in new_res.json()['data']['list']['vlist']]bvid.extend(new_bvid)print(bvid)return bvid

既然已经知道了BV号,写个循环,直接把所有视频下载下来了。

【下载的视频 仅做学习收藏之用,请尊重原创】

后面还一篇是 you-get下载bilibili视频时 遇到的某些意外情况和解决方式

交流技术 欢迎+QQ 153132336 zy
个人博客 https://blog.csdn.net/zyooooxie

代码改变生活-使用You-Get下载bilibili的视频【一】相关推荐

  1. python批量下载bilibili视频_如何批量下载bilibili的视频?

    貌似现在 you-get 已经支持批量下载了.通过下面命令就可以批量下载了 you-get --playlist 网址 本来是带这个需求来的,看到 Venchi 的答案,装了 Python3 之后发现 ...

  2. 代码改变生活-文件重命名

    我上个月底 请假去了趟重庆玩,开开心心地拍了些照片.在酒店因为想投屏看看视频,就在手机装了个nPlayer Pro(安卓客户端):晚上看看<极挑>的重庆那几期,白天再去打卡,美滋滋呀... ...

  3. 代码改变生活——利用路由器的“MAC地址过滤功能”限制别人的网速

    最近遇到点小小的烦心事:通过一个无线家用路由器,两个人共用2M的宽带.网速已经很苦逼了,更苦逼的是别人一看电视,我这边的网速就接近0啊,2M网络,平均下载速度应该200KB/S左右,两个共用时,一个人 ...

  4. Python使用you-get批量下载bilibili网站视频

    需要安装python,然后pip install you-get. 安装步骤在官方说明上很清楚,就不写了. 使用 you-get --playlist  -o F:\bilibili https:// ...

  5. Maven问题总结 - 3 - 技术改变生活商业成就梦想 - 51CTO技术博客

    Maven问题总结 - 3 - 技术改变生活商业成就梦想 - 51CTO技术博客 Maven问题总结 - 3 - 技术改变生活商业成就梦想 - 51CTO技术博客 Maven问题总结 - 3 2010 ...

  6. 如何用技术改变生活 哪个瞬间你突然觉得读书真有用?

    作者:南慕伦 链接:https://www.zhihu.com/question/35720340/answer/262160679 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  7. Google改变生活

    Google改变生活(国内首本全面介绍Google应用图书,掌握Google掌握未来) 作者:韩梅  等 定价:39.00元(附光盘) 出版社:机械工业出版 ISBN:978-7-111-29192- ...

  8. 如何通过一行代码下载B站视频?

    文章目录 如何通过一行代码下载B站视频? Step1:安装you-get Step2:下载B站视频 总结 如何通过一行代码下载B站视频? You-Get 是一个基于 Python 3 的下载工具.使用 ...

  9. Python改变生活 | OCR识别的花样使用

    这是Python改变生活系列的第四篇,在上文Python改变生活 | 轻松识别数百个快递单号_中讲了一个需求的解决办法,即用python识别条形码来获取快递单号. 该问题我一共想了两个方案,所以今天接 ...

最新文章

  1. Python:通过远程监控用户输入来获取淘宝账号和密码的实验(一)
  2. 成绩统计自动计算表格_电气计算太慢?62套自动计算EXCEL表格,一键下载秒出结果...
  3. 文档工具GitBook使用
  4. MySQL - 体系结构初探
  5. docker 安装mysql5.6
  6. line-height:2和line-height:2em的区别,它们是有区别的
  7. Java编程,打印昨天的当前时刻
  8. (3)QuartusII 封装网表文件(FPGA不积跬步101)
  9. 福利网站!程序员面试——算法工程师面试大全第一部分
  10. js实现搜索框智能提示上下移动效果
  11. 2017/12/29
  12. python datetime和unix时间戳之间相互转换
  13. python ui自动化_python-UI自动化
  14. 手动打开与关闭软键盘
  15. 《一代大商孟洛川》经典台词
  16. uilabel 左上对齐_UILabel一行居中对齐与多行左对齐
  17. 最终幻想14 服务器维护,《FF14》服务器遭到攻击 官方补偿方案今日不收时长费...
  18. 国内外常用学术网站(访问不了“谷歌学术”的,试一试有惊喜哦)
  19. JAVA 日期加减计算
  20. UVM交互式调试库:缩短调试周转时间

热门文章

  1. ST7701芯片820*320屏幕移植stemwin
  2. 硬件SPI控制ST7789V
  3. 鱼眼镜头拍摄全景图的教程方法
  4. 全球正规外汇交易平台大全
  5. 来自GDPR的警示:是时候关注您的客户数据了
  6. ORA-28000 帐户已被锁定问题处理
  7. linux系统路由器地址查询,如何在任何平台上查找路由器的IP地址
  8. 网上播放.flv格式的二种程序
  9. List,Set,Map集合总结
  10. mac 部署 ansible 记录