大家好,这次给的大家介绍安卓系统中B站的离线文件如何保存到电脑中。
1)首先在Android\data\tv.danmaku.bili\download可以找到我们下载的文件,我下载了一套理论力学的视频,放在了download下的17338839这个文件夹里,因此我下载的视频就放在Android\data\tv.danmaku.bili\download\17338839下。
2)让我们点开这个文件夹看一下,里面果然是一个又一个的文件夹。
3)每个文件夹下都有一部分我下载的视频,合起来就是一套完整的视频。以名字为2的文件夹进行说明,点看这个文件夹,可以看到另一个文件夹和两个文件,在lua.flv360.bili2api.15这个文件夹下放着我下载的视频文件,以blv为后缀。什么?为什么这个视频的名字是个编号呢。大家别着急,在entry.json文件中part关键字后面就是这个视频真正的名字,大家可以复制这个名字,然后重命名视频。
4)如果有很多这样的视频需要命名呢,我写了一个Matlab程序,供大家参考,使用前,我把原来按数字1,2,3……命名的那些文件夹拷在了E:\17338839\video文件夹下,newvideo文件夹用来存放提取出的视频文件。
%Findbilibili用于查找blv文件,并拷贝到newvideo文件夹下
clc;clear;
PrjPath='E:\17338839';
RunNam='video';
NewRunNam='newvideo';
NewPrjPath=strcat(PrjPath,'\',NewRunNam);
mkdir(NewPrjPath);
Path=strcat(PrjPath,'\',RunNam);
ListName{1,1}=Path;
first=1;%ListName的当前元素下标
rear=1;%ListName的最后一个元素下标
DlcPath={};%各工况路径及名称
DlsLen=0;%工况个数
disp('开始搜索...');
while(1)
disp(char(strcat('正在搜索第',num2str(first),'个文件夹,名为"',Path,'"')));
SubPath=dir(Path);
Len=length(SubPath)-2;
for i=1:Len
if ~SubPath(i 2,1).isdir%判断是否为文件夹
PjNamPos=findstr(SubPath(i 2,1).name,'.blv.');%*.$TE文件中记录了工况是否正确仿真完
if PjNamPos
DlsLen=DlsLen 1;
DlcPath{DlsLen,1}=Path;%DlcPath中记录各小工况的路径
DlcPath{DlsLen,2}=SubPath(i 2,1).name(1:PjNamPos-1);%工况名字
SlashPos=findstr(Path,'\');
NamFid=fopen(strcat(Path(1:SlashPos(length(SlashPos))),'entry.json'),'r','n','utf-8');
LinStr=fgetl(NamFid);
fclose(NamFid);
ParPod=findstr(LinStr,'"part"');
vidPod=findstr(LinStr,')","');
DlcPath{DlsLen,3}=LinStr(ParPod 8:vidPod(2));
DlcPath{DlsLen,4}=strrep(strrep(strcat(DlcPath{DlsLen,3},'_',num2str(str2num(DlcPath{DlsLen,2}) 1)),'(','('),')',')');
try
copyfile(strcat(DlcPath{DlsLen,1},'\',DlcPath{DlsLen,2},'.blv'),strcat(NewPrjPath,'\',DlcPath{DlsLen,4},'.blv'),'f');
catch
disp(DlcPath{DlsLen,1});
return;%直接结束程序,下面的不运行了;break是直接结束本循环
end
clear SlashPos;
end
else
rear=rear 1;
ListName{rear,1}=strcat(Path,'\',SubPath(i 2,1).name);
end
end
first=first 1;
if first>rear
break;
end
Path=ListName{first,1};
end
disp(strcat('搜索完毕,共搜索',num2str(first-1),'个文件夹,找到',num2str(DlsLen),'个文件.'));
,