B站视频离线
问题:windows端b站视频离线困难,且我想2.5倍速啊哈哈哈。
解决方法如下:
1. 在Microsoft Store安装哔哩哔哩
会很卡,多刷新,如果出现微软商店无法联网,错误代码: xxxx
,请点此处(来源百度经验)
2. 在这个版本哔哩哔哩中缓存视频
如果您只是需要一个缓存功能,没有把文件拿出来的想法,到这就可以了。
问题是界面很不友好,切p、改速度啥的都很难受。
3. 查看视频存储位置
更改设置(否则默认存储到c盘中),顺便查看存储位置
修改完成长这样:
4. 文件提取&整理
观察下载后的文件长什么样子
这里的flv文件是可以用potplayer直接播放的,也就是我们要提取的文件。
但是这文件命名看着难受,而且多p视频存在多个文件夹内。
所以我要写个小程序把视频整理成我想要的样子。
步骤如下:
首先观察:
这些名字信息存储在哪里
一看.info 这个后缀,应该就在这里了
用记事本打开其中一个,看到:
{"Type":0,"GroupKey":null,"File":null,"IsSelected":false,"IsLastHit":false,"DownloadState":"正在下载弹幕","Aid":"50747658","Cid":"88848348","SeasonId":null,"EpisodeId":null,"Title":"[中英字幕]吴恩达机器学习系列课程","Uploader":"岁月觞","Description":"https://study.163.com/course/introduction.htm?courseId=1004570029&_trace_c_p_k2_=60b3accf313c45bcbd5dddc890ff4346\n适合初学机器学习、深度学习的人学习。\n视频的讲义:https://github.com/TheisTrue/MLofAndrew-Ng","CoverURL":"http://i2.hdslb.com/bfs/archive/0aff68fab987a889d1cca8620266e66b2b03d9f2.jpg","Tag":null,"From":"vupload","PartNo":"1","
PartName":"1-1.欢迎参加《机器学习》课程","Format":1,"TotalParts":1,"DownloadTimeRelative":169641265,"CreateDate":"2019-04-28 18:08","TotalTime":"00:06:55.0300000","TotalTimeString":null,"PartTime":[415030],"TotalSizeString":"18MB","IsSinglePart":false,"IsDownloaded":false,"HasDanmaku":false,"FontSize6":10.0,"FontSize8":12.0,"FontSize10":14.0,"FontSize12":16.0,"FontSize14":18.0,"FontSize16":20.0,"FontSize18":22.0,"FontSize20":24.0,"FontSize22":26.0,"FontSize24":28.0,"FontSize30":34.0,"FontSize34":38.0}
这玩意有点像字典,可以看到 "PartName"
这一项就是我想要的,查了半天也没查到怎么读.info文件里的这个字段(有会的大佬教教我),所以只能把整个当一个字符串处理。
用python写了段程序,用于将.flv文件改为"PartName"的名字,并将其移出这个文件夹
代码不长,就放在这了:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/2/15 7:48
# @Author : Eiya_ming
# @Email : eiyaming@163.com
# @File : t02_TransName.py
import os
def get_partName(filename: str) -> str:
with open(filename, 'r', encoding='utf8') as f:
a = f.read()
a = a.split("\"PartName\":\"")[1]
return a.split('\"')[0]
def Rename_Move(fold: str):
files = os.listdir(fold)
for f in files:
if '.info' in f:
partname = get_partName(fold+'/'+f)
break
for f in files:
if '.flv' in f:
os.rename(fold+'/'+f, partname + '.flv')
break
folds = os.listdir()
for fold in folds:
if '.' not in fold:
Rename_Move(fold)
把这个.py文件放在视频文件的上层文件夹中,运行一次,就可以把视频文件改好名字放在当前文件夹中(对程序稍作修改可以指定移动的位置)
执行效果:
然后我的做法是用potplayer建立一个专辑
然后就可以随意了。。
写在最后
这种操作只用于个人学习,请勿用于商业牟利。
没有强迫症就可以直接用app下载,就看就完了。