由于工作原因驻场开发,地区限制,酒店竟没有wifi,所以开了流量套餐
其中就包括B站在线观看,缓存视频单独走流量计算,每个月有30G的流量,
虽然可以愉快的手机刷B站,但是明显PC看视频才更爽,
且开热点给PC看B站的流量是不算在单独流量内的
所以就想到了,利用手机缓存视频,传到PC看
翻了一下,安卓不知道何时之后的更新,B站客户端缓存路径不再刻意配置
直接放在应用的路径下面
以魅族Flyme9 安卓8为例,B站缓存目录在
/Andriod/data/tv.danmaku.bili/download
拷贝整个文件夹至电脑
一列数字开头的文件夹,应该就是ID或者番号
再里面是一个c_的文件夹,里面有
80
audio.m4s
index.json
video.m4s
danmaku.xml
entery.json
entery.json 入口文件,其中title就是视频名称
danmaku.xml 弹幕文件
80 应该是视频清晰度的区分
拷贝到一个文件夹下面,下载ffmpeg,我是放在了用户根目录,相当于 ~路径
const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');
const bash = (dirName, title) => `~/ffmpeg -i ${dirName}/video.m4s -i ${dirName}/audio.m4s -codec copy ${title}.mp4`
const fileListStr = execSync(`find ${__dirname} -name 'entry.json'`, {
encoding: 'utf-8'
});
fileListStr.split('\n').filter(Boolean).forEach(file => {
// file就是entery.json
const config = fs.readFileSync(file, 'utf-8');
let { title } = JSON.parse(config);
// 注意这里视频标题可能会有空格,转换成加号
title = title.replace(/ /g, '+');
try {
const dirName = path.dirname(file)
const output = `${__dirname}/temp/${title}`
const commond = bash(`${dirName}/80`, output)
execSync(commond);
} catch (error) {
fs.appendFileSync('./error.txt', title + '\n')
}
})