本蒟蒻有个爱好,喜欢保存各个方面的数据,比如录制电视新闻、下载重要网页、抄写消息文章,保存起来 然后放着等长毛,长到3米高就能吃了 。有这么个爱好那自然微博是必去之地,截屏复制截到手疼,更重要的就是下载这个那个微博视频保存起来。而作为手机一族,微博视频的操作很让人迷惑:

如果是竖屏的视频,那好说,直接点右上角三个点,然后保存到手机,接下来就出现在DCIM里了:


然而横屏的视频就很让人迷惑:点开只给了一个“缓存”:

然后也能看到之前缓存的视频:

然而就是不知道这些视频放在哪。。。

。。。。。。。。。。


人不能憋死,于是经过一番地毯式搜索,摸到了这些缓存视频的保存位置——

——在主存储目录下/sina/weibo/.weibo_video_cache_new这个隐藏着的旮旯里。。。

2019-09-21更新:已经改到了\sina\weibo\storage\video_download里,cover里是封面图,接下来操作的是video文件夹。

(对了,得先能显示隐藏文件。。。)

里面是一堆文件夹,每个文件夹对应一个视频

每个文件夹里面有一个config.json记录视频信息,还有一个没后缀名的东西

连接电脑,MTP把这些东西搞出来:

那个json,没什么新鲜的:

剩下的这个就是操作对象——用视频播放器打开,直接就能播——
然后我们就看到了这是MPEG4视频。。。

所以理论上来说把这个文件后面加个.mp4就能看了,然而——现在有120个视频等着我收拾。。。
这要从头改到尾,估计手要断。

于是第一反应就是求助批处理,那么我们面临这么些个问题:

  • 文件夹名、视频名都是乱的,怎么能够分别读取每个文件夹的视频并批量搞出来?

第一直观想法是dir,这样可以列出所有下面的东西。

  • 然而dir这种显示格式很小清新,怎么能够从中读出这个那个是什么东西、叫什么名?

dir /?如是说:

显示目录中的文件和子目录列表。

DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]

[drive:][path][filename]
指定要列出的驱动器、目录和/或文件。

/A 显示具有指定属性的文件。
属性 D 目录 R 只读文件
H 隐藏文件 A 准备存档的文件
S 系统文件 I 无内容索引文件
L 解析点 - 表示“否”的前缀
/B 使用空格式(没有标题信息或摘要)。
/C 在文件大小中显示千位数分隔符。这是默认值。用 /-C 来
禁用分隔符显示。
/D 跟宽式相同,但文件是按栏分类列出的。
/L 用小写。
/N 新的长列表格式,其中文件名在最右边。
/O 用分类顺序列出文件。
排列顺序 N 按名称(字母顺序) S 按大小(从小到大)
E 按扩展名(字母顺序) D 按日期/时间(从先到后)
G 组目录优先 - 反转顺序的前缀
/P 在每个信息屏幕后暂停。
/Q 显示文件所有者。
/R 显示文件的备用数据流。
/S 显示指定目录和所有子目录中的文件。
/T 控制显示或用来分类的时间字符域。
时间段 C 创建时间
A 上次访问时间
W 上次写入的时间
/W 用宽列表格式。
/X 显示为非 8.3 文件名产生的短名称。格式是 /N 的格式,
短名称插在长名称前面。如果没有短名称,在其位置则
显示空白。
/4 用四位数字显示年

可以在 DIRCMD 环境变量中预先设定开关。通过添加前缀 - (破折号)
来替代预先设定的开关。例如,/-W。

那么 /B这个很耐人寻味:

使用空格式(没有标题信息或摘要)。

让咱们试试:

成功单独搞出来了文件名。

  • 有了文件名,怎么根据这些文件名收拾各组数据?

那当然就是for循环。cmd的for很强势,我们在这里用到这条语法:

FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

那么我们就可以这样把这一堆文件名全都写进editlib这么个文件里:

  for /f "delims=" %%i in ('dir /ad/b') do echo %%i>>editlib
::for /f "格式“  %%变量 in ('命令')   do  XXX
::delims:cmd的for循环关键字,相当于用等号后面的那个东西来进行对数据的分割,这里留空就是“换行”,每读到dir输出的一个换行就代表读到了一个文件夹名,可以换下一个写入了
::变量要用两个百分号
::这里的命令就是dir,/ad就是显示完整目录
::最后echo全都写入editlib里。

接下来我们就有了完整的文件夹名列表:

于是接下来的操作就是——

  • 循环按照这个表进去每个文件夹里
  • 删掉config.json
  • 把里面剩下的东西(这个视频)拷出来
  • 把这个文件拷出来放到上一个目录里
  • 回来
  • 删掉这个文件夹。

那么求助C++来写这么个批处理:

#include<bits/stdc++.h>
using namespace std;
int main()
{system("cd.>editlib");system("cd.>operatorlib.bat");system("cd.>controllib.bat");//创建这么三个文件FILE * fout;//用fout写文件,写出上面的那套方法到一个批处理里:fout=fopen("controllib.bat","wb");fprintf(fout,"@echo off\r\n");fprintf(fout,"for /f \"delims=\" %%%%i in ('dir /ad/b') do echo %%%%i>>editlib\r\n");//“\“拿来转义用免得编译器以为那个双引号是字符串结束,用4个”%“来fprintf 2个百分号。fclose(fout);//关文件system("controllib.bat");//运行一次,然后就有了editlib这个文件夹列表freopen("editlib","r",stdin);//重定向标准输入输出流读这个editlibfreopen("operatorlib.bat","w",stdout);//按照一定语法输出到另一个批处理operatorlib.bat里,这就是我们实现这一系列骚操作用的批处理:string way;//每一个文件夹名while(cin>>way)//分行读入{string outputa=way;//然并卵cout<<"cd "<<outputa<<endl;//进到这个文件夹里cout<<"del config.json"<<endl;//删掉config.jsoncout<<"for /f \"delims=\" %%j in ('dir /b/s') do rename %%j "<<way<<".mp4"<<endl;//故伎重演,用dir /s/b就可以搞出来里面唯一的那个文件的文件名和完整路径,放入变量%%j里,然后重命名这个文件。cout<<"copy * .."<<endl;//把它拷出来cout<<"cd .."<<endl;//回来cout<<"rmdir /s/q "<<outputa<<endl;//删掉那个文件夹,准备收拾下一个。}fclose(stdin);fclose(stdout);//关文件system("operatorlib.bat");//运行一下这个批处理system("del editlib");system("del operatorlib.bat");system("del controllib.bat");//删掉多余的东西return 0;
}

编译好,放进这个目录里,运行~

搞定。把这个程序删掉,剩下视频整理走。


备注:

  • 本人是一个蒟蒻,从未在专业角度接受过有关cmd命令及C++的知识传授,一切仅凭自己摸索搞出来。我可以想见,我这个方法极端的LOW,更好的方法一定层出不穷。还希望各位大神看了勿喷,给新手一些支持,谢谢!

  • 实验证明,微博会把你点了缓存的视频还有你平时看的没用的视频缓存都放进这里。测试表明(MIUI 10.3.2 安全中心 垃圾清理)可以先运行一遍手机的垃圾清理再往外搞文件,删掉那些没用的缓存,只留下点过缓存了的。


最后放上这个程序

这个程序

提取码:xc1c

操作完毕。光速逃(雾


2019/09/15更新:发现了一处问题,已经修改。
因为未能详细排查错误,忽略错误提示就直接应用到了实战中,结果收集了半个多月的视频全被rmdir打了水漂。。。

总结经验教训:

  • 写程序不能忽略任何错误提示,并必须经过仔细、严格的测试方可投入使用!要不就是像这样以白忙活了半个月(甚至更惨)作为代价!!

  • 重要资料必须做好备份工作!!!

数据千万条
备份第一条
操作不备份
数据两行泪

转载于:https://www.cnblogs.com/izwb003/p/weibo_cache_video_copy.html

微博缓存视频导出自行解决方案相关推荐

  1. 优酷android 离线 导出来,手机优酷缓存的视频如何导出 缓存视频导出到电脑方法...

    优酷手机客户端导出的视频都是分段flv,无法通过其他播放器进行播放,那么要怎么导出到可播放格式呢?是否可以输出到电脑?下面小编就为你带来具体的流程. 导出步骤: 首先我们需要打开手机的文件夹,本机文件 ...

  2. Node.js脚本项目合集(一):Node.js+FFmpeg实现批量从B站导出离线缓存视频到mp4格式,mp4转mp3,实现听歌自由

    Node.js脚本项目合集(一):Node.js+FFmpeg实现批量从B站导出离线缓存视频到mp4格式,mp4转mp3,实现听歌自由 前言 一.准备工作以及介绍 1.什么是FFmpeg 2.FFmp ...

  3. 腾讯视频下载的视频怎么导出来_手机腾讯视频怎么缓存视频电影

    本文小编给大家分享的是腾讯视频下载的视频怎么导出来_手机腾讯视频怎么缓存视频电影.相比其它的视频客户端,腾讯视频的多维度筛选,大数据比对,更有利于用户发现和推荐自己喜爱的影视剧内容.腾讯视频播放器推荐 ...

  4. 刘志勇:微博短视频百万级高并发架构

    本文来自新浪微博视频平台资深架构师刘志勇在LiveVideoStackCon 2018讲师热身分享,并由LiveVideoStack整理而成.分享中刘志勇从设计及服务可用性方面,详细解析了微博短视频高 ...

  5. oom 如何避免 高并发_微博短视频百万级高可用、高并发架构如何设计?

    本文从设计及服务可用性方面,详细解析了微博短视频高可用.高并发架构设计中的问题与解决方案. 今天与大家分享的是微博短视频业务的高并发架构,具体内容分为如下三个方面: 团队介绍 微博视频业务场景 &qu ...

  6. 微博短视频千万级高可用、高并发架构如何设计?

    作者:刘志勇,本文来自新浪微博视频平台资深架构师刘志勇在 LiveVideoStackCon 2018 讲师热身分享,并由 LiveVideoStack 整理而成. 本文从设计及服务可用性方面,详细解 ...

  7. 微博短视频百万级高可用、高并发架构如何设计?

    本文从设计及服务可用性方面,详细解析了微博短视频高可用.高并发架构设计中的问题与解决方案. 今天与大家分享的是微博短视频业务的高并发架构,具体内容分为如下三个方面: 团队介绍 微博视频业务场景 &qu ...

  8. 【miscellaneous】监狱智能视频监控系统设计解决方案

    监狱智能视频监控系统设计解决方案 一.系统概况 随着司法监狱管理系统内视频监控系统的日益发展,现有的被动式人工监控这一传统模式已无法满足新形势下的监管工作需求,尤其是现在靠轮询的视频监控方式,无法对突 ...

  9. 缓存在哪里_APP下载的视频都在哪?教你将缓存视频拿出来

    [PConline应用]很多朋友都会用手机APP看视频,而国内的视频网站APP们也提供了视频下载的功能.但是,用这些APP下载的视频,却只能够在同一个APP当中查看!例如用哔哩哔哩的APP下载了一个视 ...

  10. UWP 手绘视频创作工具技术分享系列 - 手绘视频导出

    原文:UWP 手绘视频创作工具技术分享系列 - 手绘视频导出 手绘视频最终的生成物是视频文件,前面几篇主要讲的是手绘视频的创作部分,今天讲一下手绘视频的导出问题.主要以 UWP 为例,另外会介绍一些 ...

最新文章

  1. [翻译]AKKA笔记 - CHILD ACTORS与ACTORPATH -6
  2. IOS设计模式学习(1)设计模式初窥
  3. 大学生学python到底有没有有-除了不会生孩子,Python还有啥不会的呢
  4. 不讲CRUSH的Ceph教程是不完整的
  5. Mongodb的安装部署
  6. Python入门100题 | 第033题
  7. 实验Matlab数值运算,MATLAB数值实验一(数据的插值运算及其应用完整版
  8. python dict遍历_Python学习笔记:19个pythonic编程习惯,让你的Python入门更优雅
  9. aes c# java_AES加密,C#和java相同
  10. JavaScript实现knight Tour骑士之旅算法(附完整源码)
  11. apollo 部署 使用
  12. Mac键盘突然停止响应如何处理
  13. 打log的方式检查程序里面的问题 及示例代码 详解
  14. 中国推动全球4G标准制定
  15. python几次方_Python中表示某个数几次方的方法
  16. MAXHUB会议平板的无线投屏怎么用?
  17. word2007如何删除尾注分隔符
  18. html tooltips效果,div+css样式自制带小三角的tooltips效果
  19. 债券价格和到期收益率的关系_债券市场价格与到期收益率
  20. Photoshop精讲精练笔记

热门文章

  1. 我很高兴,很欣慰:)
  2. php twitter 登陆sdk,使用Twitter OAuth(PHP)登录Twitter的问题
  3. jQuery插件开发标准写法
  4. 计算机定时关机计划任务失败,如何设置定时关机任务?电脑设置定时关机任务方法...
  5. 桌面版 Linux 为什么打不过 Windows?Linus 现身说法!
  6. Win11电脑摄像头打开看不见,显示黑屏如何解决?
  7. Vim实用技巧_7.模式匹配和查找
  8. Unity3d打包程序报错NotSupportedException: Encoding 437 data could not be found.
  9. SC0095-AT32F437使用USB挂载SD卡作为U盘使用
  10. Ps“反转负冲”人像处理一例