代码改变生活-使用You-Get下载bilibili的视频【一】
本文为博主原创,未经许可严禁转载。
本文链接: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 轮子都已经造好了,我就对着我自己的需求 做些简单的扩展】
细致说下 我的要求:
- 可下载单个视频,也可以多个视频批量下载,也可以下载某up的全部视频;
- 能够指定下载路径;
- 只下视频,不下弹幕;
- 尽可能下载高清的视频;
(我不是大会员,最高只能是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:
- 高清画质:我选了–format=dash-flv,是因为 --format=dash-flv 和 --format=flv 我看都是1080p,但第二个 我家里电脑下载速度慢;
- –no-caption 不下载其他文件(字幕,歌词,弹幕。。。);
- -o 指定保存路径
- –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的视频【一】相关推荐
- python批量下载bilibili视频_如何批量下载bilibili的视频?
貌似现在 you-get 已经支持批量下载了.通过下面命令就可以批量下载了 you-get --playlist 网址 本来是带这个需求来的,看到 Venchi 的答案,装了 Python3 之后发现 ...
- 代码改变生活-文件重命名
我上个月底 请假去了趟重庆玩,开开心心地拍了些照片.在酒店因为想投屏看看视频,就在手机装了个nPlayer Pro(安卓客户端):晚上看看<极挑>的重庆那几期,白天再去打卡,美滋滋呀... ...
- 代码改变生活——利用路由器的“MAC地址过滤功能”限制别人的网速
最近遇到点小小的烦心事:通过一个无线家用路由器,两个人共用2M的宽带.网速已经很苦逼了,更苦逼的是别人一看电视,我这边的网速就接近0啊,2M网络,平均下载速度应该200KB/S左右,两个共用时,一个人 ...
- Python使用you-get批量下载bilibili网站视频
需要安装python,然后pip install you-get. 安装步骤在官方说明上很清楚,就不写了. 使用 you-get --playlist -o F:\bilibili https:// ...
- Maven问题总结 - 3 - 技术改变生活商业成就梦想 - 51CTO技术博客
Maven问题总结 - 3 - 技术改变生活商业成就梦想 - 51CTO技术博客 Maven问题总结 - 3 - 技术改变生活商业成就梦想 - 51CTO技术博客 Maven问题总结 - 3 2010 ...
- 如何用技术改变生活 哪个瞬间你突然觉得读书真有用?
作者:南慕伦 链接:https://www.zhihu.com/question/35720340/answer/262160679 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...
- Google改变生活
Google改变生活(国内首本全面介绍Google应用图书,掌握Google掌握未来) 作者:韩梅 等 定价:39.00元(附光盘) 出版社:机械工业出版 ISBN:978-7-111-29192- ...
- 如何通过一行代码下载B站视频?
文章目录 如何通过一行代码下载B站视频? Step1:安装you-get Step2:下载B站视频 总结 如何通过一行代码下载B站视频? You-Get 是一个基于 Python 3 的下载工具.使用 ...
- Python改变生活 | OCR识别的花样使用
这是Python改变生活系列的第四篇,在上文Python改变生活 | 轻松识别数百个快递单号_中讲了一个需求的解决办法,即用python识别条形码来获取快递单号. 该问题我一共想了两个方案,所以今天接 ...
最新文章
- Python:通过远程监控用户输入来获取淘宝账号和密码的实验(一)
- 成绩统计自动计算表格_电气计算太慢?62套自动计算EXCEL表格,一键下载秒出结果...
- 文档工具GitBook使用
- MySQL - 体系结构初探
- docker 安装mysql5.6
- line-height:2和line-height:2em的区别,它们是有区别的
- Java编程,打印昨天的当前时刻
- (3)QuartusII 封装网表文件(FPGA不积跬步101)
- 福利网站!程序员面试——算法工程师面试大全第一部分
- js实现搜索框智能提示上下移动效果
- 2017/12/29
- python datetime和unix时间戳之间相互转换
- python ui自动化_python-UI自动化
- 手动打开与关闭软键盘
- 《一代大商孟洛川》经典台词
- uilabel 左上对齐_UILabel一行居中对齐与多行左对齐
- 最终幻想14 服务器维护,《FF14》服务器遭到攻击 官方补偿方案今日不收时长费...
- 国内外常用学术网站(访问不了“谷歌学术”的,试一试有惊喜哦)
- JAVA 日期加减计算
- UVM交互式调试库:缩短调试周转时间