Python+FFmpeg提取哔哩哔哩安卓缓存
主要参考360个人博物馆的一个文章1,在评论区看到好像这个头条2的才是原出处?
首先说一下注意事项:
手机直接连在电脑上,可以复制文件,但是不能够通过命令行访问。其原因大概是没有挂载盘符,导致其路径一直在
/此电脑
下面。FFmpeg
的安装等不再赘述,我这里已经安装好了。而且这里的FFmpeg
已经加入环境变量,即全局可调用。如果没有加入环境变量,则需要通过安装路径/ffmpeg.exe
或者进入安装文件夹,通过.\ffmpeg.exe
来调用
E:\Android\data\tv.danmaku.bili\download\10590361\c_17482191
| entry.json
| danmaku.xml
|
\---64index.jsonaudio.m4svideo.m4s
在上图当中,10590361
是缓存视频的文件夹,c_17482191
是该分P的文件夹。其中64
这个文件夹是该分P的视频video.m4s
,音频audio.m4s
等信息,而entry.json
则是该分P的信息及整个系列的信息。
不同的缓存当中,存储视频和音频的文件夹名不一定相同,这个是64
,我也见过16
的,一般都是数字
代码如下:
import json
# 用于解析json
import os
# 用于新建文件夹等
import re
# 用于替换字符
import time
# 用于计时At = time.time()
# 记录总耗时def validateTitle(title):rstr = r"[\/\\\:\*\?\"\<\>\|]"# '/ \ : * ? " < > |'new_title = re.sub(rstr, "", title)# 替换为下划线return new_titlepathI = "E:/Android/data/tv.danmaku.bili/download/929386644/"
# 缓存所在的目录listF = os.listdir(pathI)
# 该缓存下有几个视频文件夹pathF = pathI + listF[0] + '/entry.json'
# 该缓存下P1的信息文件路径with open(pathF, encoding='utf-8') as fileI:infoJ = json.load(fileI)
# 读入文件dirT = validateTitle(infoJ['title'])dirN = 'D:/NetVideo/'+dirT + '/'
# 新的文件夹路径,包含中文dirO = 'D:/NetVideo/Tmp/'
# 旧的临时文件夹路径,用于FFmpeg的命令if not(os.path.exists(dirO)):os.mkdir(dirO)# 按照临时文件夹的名字创立文件listFL = len(listF)
handleP = []# 循环该缓存下的每一个分P
for index,itemF in enumerate(listF):print(index+1,'/',listFL,' ','*'*20)trnT = time.time()pathF = pathI + itemF + '/'# 该分P的路径os.chdir(pathF)# 将工作目录改为当前路径with open('entry.json',encoding='utf-8') as fileI:infoJ = json.load(fileI)# 读入该分P的信息fileO = dirO+'O.mp4'# 该分P视频的临时文件名,不含中文fileNC = validateTitle(infoJ['page_data']['part'])# 去除文件名当中不能存在的字符fileN = dirO + fileNC + '.mp4'# 该分P的实际文件名,包含中文print(fileNC)commandS = 'ffmpeg -loglevel quiet -i video.m4s -i audio.m4s -codec copy '+fileO# 拼接命令# print(commandS)# # 查看命令# print(fileN)# # 查看文件名sunDir = [i for i in os.listdir(pathF) if os.path.isdir(i) ]# 找到该文件夹下面的子文件夹os.chdir(pathF+sunDir[0]+'/')# 将工作目录调整到分P文件夹下,包含视频的文件夹# 一般每一份缓存,各分P文件夹的名字不不相同# 但是各分P文件夹下保存视频的文件夹名字一般相同,为数字print(pathF+sunDir[0]+'/')# os.system('echo %cd%')# # 打印当前目录# ffmpeg -f concat -i N.txt -c copy D:/NetVideo/output.mp4# # 判断文件是否存在if not(os.path.exists(fileN)):if (os.path.exists(pathF+sunDir[0]+'/'+'video.m4s')):print("Get video.m4s !!!")os.system(commandS)else:print("No video.m4s !!!")handleP.append(pathF+sunDir[0]+'/')# continuecommandS = 'ffmpeg -loglevel quiet -f concat -i N.txt -c copy'+fileOlistN = os.listdir(pathF+sunDir[0]+'/')listN.remove('index.json')with open("N.txt",'w') as F:for i in listN:F.write('file '+i+'\n')os.system(commandS)os.remove('N.txt')os.rename(fileO, fileN)# 将视频文件重命名回实际文件名,包含中文os.rename(fileO, fileN)# 将视频文件重命名回实际文件名,包含中文print('Iter Cost: {}'.format(time.time() - trnT))os.rename(dirO,dirN)
# 将视频文件夹重命名为实际文件名,包含中文print(handleP)print('\nTotal Cost: {}\n\n\n\n'.format(time.time() - At))# import os
# os.chdir('E:/Android/data/tv.danmaku.bili/download/10590361/c_17482207/lua.flv720.bili2api.64/')
# listN = os.listdir()
# listN.remove('index.json')
# with open('tmp.txt','w') as F:
# for i in listN:
# F.write('file '+i+'\n');
# fileO = "D:/NetVideo/O.mp4"
# # -loglevel quiet
# # 13 Unsupervised Learning - Linear Methods
# commandS = "ffmpeg -loglevel quiet -f concat -i tmp.txt -c copy "+fileO
# os.system(commandS)
# os.remove('tmp.txt')
给两个参考文献:
使用 FFmpeg(bilibili视频m4s合成mp4)
使用 FFmpeg(bilibili视频blv合成mp4)
ffmpeg 取消控制台打印信息,不打印log日志
史上最详细!如何将B站缓存的m4s文件无损转换为mp4格式 ↩︎
超级详细!如何将B站缓存m4s文件无损转换为mp4格式 ↩︎
Python+FFmpeg提取哔哩哔哩安卓缓存相关推荐
- 哔哩哔哩视频合并 B站缓存视频合并 安卓版 音视频合并 基于ffmpeg
说明 此软件是为了帮助网友合并哔哩哔哩缓存视频,Android上将bilibili缓存视频合并导出为mp4,你可以将它理解为一个专用的格式工厂,并不涉及破解相关内容,仅仅用于学习技术交流,严禁用于商业 ...
- python爬取哔哩哔哩视频_荐爬取哔哩哔哩中的cosplay小视频
爬取哔哩哔哩小视频 前言:想必大家都对小视频感兴趣吧,今天的爬虫的内容为将哔哩哔哩中的视频下载到本地,今天爬取的网站为 URL : https://vc.bilibili.com/p/eden/all ...
- Python爬取哔哩哔哩实时直播弹幕
用Python爬取哔哩哔哩直播弹幕,关键在于找到哔哩哔哩网站的一个POST网址,和应该POST的数据.代码不长,十分简单.关键在于浏览器开发者工具的使用.希望对于新入门的萌新有一定的借鉴意义. 1.找 ...
- 【爬虫+数据清洗+可视化分析】用Python分析哔哩哔哩“阳了“的评论数据
目录 一.背景介绍 二.爬虫代码 爬虫部分不作讲解. 三.可视化代码 3.1 读取数据 3.2 数据清洗 3.3 可视化 3.3.1 IP属地分析-柱形图 3.3.2 评论时间分析-折线图 3.3.3 ...
- 安卓上哔哩哔哩视频的导出
哔哩哔哩安卓app版本:6.50.0(release-b7000181) 步骤: 1.将手机和电脑用数据线连接,文件传输模式. 2.打开手机文件系统. 3.点击"Android文件夹&quo ...
- 菜鸟弟弟从零开始的爬取Bilibili弹幕的Python爬虫教程-哔哩哔哩 - ( ゜- ゜)つロ 干杯~
从零开始的爬取Bilibili弹幕的Python爬虫教程 或许可以作为一个爬虫小白的练手的demo? 还是先看看什么是爬虫吧!(还有Bilibili! ) 网络爬虫: 网络爬虫(又称为网页蜘蛛,网络机 ...
- 利用python批量合并手机哔哩哔哩下载的视频各分段
从手机哔哩哔哩上下载的一个电视剧,分为很多P,每一P里面又被分成了如下几个段的blv文件(本质上是flv格式),利用Python+ffmpeg,将这个系列的视频每一P都合并成单个的文件,只要输入这个视 ...
- Python爬取哔哩哔哩(bilibili)视频
本篇文章主要给大家讲解下如实使用python 爬取哔哩哔哩中的视频,首先我是一名大数据开发工程师,爬虫只是我的一个业余爱好,喜欢爬虫的小伙伴可以一起交流.好了多了就不多说了喜欢的朋有可以收藏,转发请复 ...
- 【Python】通过哔哩哔哩弹幕获取发送者id
哔哩哔哩弹幕逆向 用途 查找bilibili.com中弹幕的发送者 如何使用 终端中输入: python bili_reverse.py 然后会提示让你输入BV号,你输入弹幕所在的BV号,开头带不带B ...
- python百度云链接哔哩哔哩弹幕网_Python爬取哔哩哔哩实时直播弹幕
Python爬取哔哩哔哩实时直播弹幕 Python爬取哔哩哔哩实时直播弹幕 用Python爬取哔哩哔哩直播弹幕,关键在于找到哔哩哔哩网站的一个POST网址,和应该POST的数据.代码不长,十分简单.关 ...
最新文章
- PLM的关键点—实施篇
- 用原生 js jquery 实现知乎收起答案功能
- python开发需要掌握哪些知识-学习Python应该掌握哪些知识点?
- 全球与中国光电通信芯片市场数据专项调研及竞争格局分析报告2022-2028年版
- lua的面向对象编程,封装,继承,多态的实现
- 测试用例设计方法_黑盒测试——测试用例设计方法
- 石头剪刀布 -2013编程之美全国测试赛 每日一练
- linux安装tomcat后启动报错Cannot find ./catalina.sh的解决方法
- Linux开发_最全在Ubnutu环境下为你的程序设置快捷启动项和启动时管理员权限
- Unity第一人称可视化传送门制作
- 股票交易软件接口编程语言
- 最全可编辑世界地图中国地图素材
- CardView-卡片布局
- gitlab推送企业微信几种方式汇总
- 用友ERP-供应链1-模块及价值
- python中keys是什么意思_python中的key是什么意思
- 计算机按键去抖动的方式,机械按键如何去处理按键抖动的问题
- 小新pro13睡眠后无法唤醒_东芝笔记本睡眠后无法唤醒怎么办
- 微信:签名不对,请检查签名是否与开放平台上填写的一致
- surface pro3 禁用触屏方法
热门文章
- android xutils 教程,Android xUtils更新到3.0后的基本使用规则详解
- 蓝海灵豚医疗器械信息管理系统B/S
- android 投影pc,手机高清投影到PC方案
- MFC新建Access数据库和表(vs2015+Access2016)
- 行为树 --- [3] BehaviorTree.CPP在Windows下的使用(基于VSCode)
- 低代码平台上的出入库管理
- jlink 与 swd 接口定义
- 斐讯K2刷华硕固件+全套工具
- inSSIDer使用方法
- 十进制进制法_进制转换方法(进制转换方法的口诀)