跳至主要内容

优雅地备份微信图片和视频

介绍

本文针对 Android 平台的微信应用。
一般来说,手机闪存的路径为 storage/emulated/0/,微信文件夹位于闪存的 Tencent/MicroMsg/ 目录下。
Tencent/MicroMsg/ 目录下,有一个由字母和数字组成的长度为 32 字节的文件夹,消息里的图片和视频都会保存到这个文件夹中;
当你在微信聊天中长按图片或视频点击「保存」时,这些图片或视频又会被保存到 Tencent/MicroMsg/ 目录下的 WeiXin 文件夹中。
Tencent
├─MicroMsg
│    ├─由32个字母和数字组成的目录
│    │    ├─image2  <-- 消息中的图片保存位置
│    │    │      ...
│    │    │
│    │    ├─video   <-- 消息中的视频保存位置,包括自己录制的小视频
│    │    │      191538241116e34a53c87982.jpg  <-- 对应小视频的缩略图
│    │    │      191538241116e34a53c87982.mp4
│    │    │      202131031216e34a53c197510.jpg <-- 对应小视频的缩略图
│    │    │      202131031216e34a53c197510.mp4
│    │    │      ...
│    │    └─...
│    ├─WeiXin
│    │    │  1482227010527.mp4          <-- 手动保存的小视频
│    │    │  mmexport1482227010527.jpg  <-- 手动保存的图片
│    │    │  ...
│    │    │
│    │    └─...
│    └─...
└─...
对于想备份的视频和图片,文件名看似杂乱无章,也不好区分个时间。如果像 Dropbox 备份的规则一样,把文件名改为 2016-12-21 12:30:55.jpg 这样多好啊!

接下来,重命名

其实 WeiXinvideo 两个文件夹下的文件命名是有规则的。
  1. 重命名 WeiXin 文件夹下的文件
    WeiXin 文件夹下的视频文件其实是由 Unix 时间戳来命名的,1482227010527 转换为可读时间为 2016/12/20 17:43:30。图片文件无非就是在这个时间戳上又加了个 mmexport 前缀。
    但是,这个时间戳是你保存那一刻的时间,不是你收到这个图片或视频那一刻的时间。好吧,如果不在意这个时间的话,那就写个 Python 脚本 重命名吧。
  2. 重命名 video 文件夹下的文件
    video 文件夹下图片和视频是成对存在的,同名的图片是视频的缩略图。如果发现只有一个图片而没有对应的视频,那是因为你在微信聊天中长按删除了视频。
    这些视频和缩略图的命名也是有规则的,以 191538241116e34a53c87982.mp4 为例。
    19 15 38 24 11 16 e34a53c87982.mp4
    %H %M %S %d %m %y
    翻译过来就是:
    2016-11-24 19.15.38
    这个时间是你收到小视频那一刻的时间
    
    因为 video 中包含了微信聊天中收到的所有小视频,所以 WeiXin 文件夹下的视频是它的一个子集。而且!这里的小视频时间戳可以认为就是录制时的时间。 对于强迫症的我们,这是多么值得激动的事情!赶紧写个 Python 脚本 重命名吧!

以后备份,就可以只用备份微信 video 下的视频和 WeiXin 下的图片了。

评论

此博客中的热门博文

网盘端到端加密 Cryptomator

1. Crytomator 是什么 Cryptomator 是一款开源的文件加密工具,它支持在本地硬盘上创建多个加密仓库,这些加密仓库以文件卷(硬盘卷)的形式挂载到系统目录中,存放到文件卷中的文件都会自动加密。 如果把加密仓库的目录放到网盘的同步目录下,配合如 iCloud、Dropbox、OneDrive、坚果云 等云盘使用,就能达到端到端加密同步的效果。 2. 同类工具对比 同类的文件加密工具除 Cryptomator 之外,还有 gocryptfs、encfs 等。其中 Cryptomator 使用 Java 开发,而且提供了 macOS、Windows、Linux、iOS 和 Android 上个 GUI 版本,从易用性上来说体验最佳。 gocryptfs v1.7 encfs v1.9.5 ecryptfs v4.19.0 cryptomator v1.4.6 securefs v0.8.3 CryFS v0.10.0 First release 2015 ( ref ) 2003 ( ref ) 2006 ( ref ) 2014 ( ref ) 2015 ( ref ) 2015 ( ref ) Language Go C++ C Java C++ C++ License MIT ( ref ) LGPLv3 / GPLv3 ( ref ) GPLv2 GPLv3 ( ref ) MIT ( ref ) LGPLv3 ( ref ) Development hotspot Austria USA USA (RedHat) Germany China Germany Lifecycle Active Maintenance Active ( ref ) Active Active Active File interface FUSE FUSE In-kernel filesystem FUSE/WebDAV FUSE FUSE Platforms Linux, macOS, 3rd-party Windows port,3rd-party Android port Linux, macOS, 3rd-par...

WebP 更新

腾出时间,把博客中的图片转换成了 WebP 格式。 同时,把图床从 imgur 换到了 Github,开启了 jsDelivr 加速。加速规则很简单: # 假如 Bob 的 Github 账号中 Repo 仓库下有一张图片 path2pic.webp # 如果直接引用 Github 中的图片,链接为: https://github.com/Bob/Repo/blob/master/path2pic.webp # jsDelivr 加速后的链接为: https://cdn.jsdelivr.net/gh/Bob/Repo/path2pic.webp 整理记录博客的过程,也是对自己成长的一次梳理。 二十岁,对互联网世界刚刚开始探索,每有新发现,折腾之余又乐于分享。分享时往往站在一个初入门的视角,难免有些拖沓冗余,从图片的使用量也能看出来,前期多于这几年。 三十多岁后,发现了技术的相通性,思想借鉴,用在新的场景下,就换成了一个新名词。新鲜东西的出现,总能看到历史上的影子,探索时也少有了年轻时的激情。 二十岁,痴迷技术,也从技术和新发现中获取成就感。三十多岁,发现技术只是技术,最感谢兴趣的其实是钱。 去年公司解散,同学帮忙内推到大厂,开启了 995 的工作,更没有时间来整理博客。今天腾出来时间整理一番,啰嗦一下以此纪念。 图片转换 WebP 写了个批量处理的脚本,附上 链接 。 ​

如何拥有一个漂亮的故事线

一、背景介绍 最初发现 TimelineJS 是在 2014 年。为了制造一个惊喜,用它做了一个与爱人从相识到结婚的时间线。 转眼 2020,TimelineJS 也有了第三个版本。 对于平时有记录习惯的人来说,拥有一个关于自己的易读美观的故事线是一件非常有成就感的事,我自己便属于这类人。另一方面,TimelineJS 仍然非常小众,而且国内几乎没有对它的介绍和使用说明。本文的目的是便是能够把它的使用方法描述清晰。 TimelineJS 能做什么 官网: https://timeline.knightlab.com/ TimelineJS 是 Northwestern University Knight Lab 社区的一个产品,它可以用来制作时间线(时间轴)的故事,元素支持文本、图片、音乐、视频、地图。官网罗列出的类型包括: Twitter, Flickr, YouTube, Vimeo, Vine, Dailymotion, Google Maps, Wikipedia, SoundCloud, Document Cloud and more! 在官网上能看到几个示例,比如对美国歌手惠特妮·休斯顿的生平介绍: https://timeline.knightlab.com/examples/houston/index.html 本文适用的读者 TimelineJS 虽然适用简单,但如果你能够: 懂点前端知识; 懂点网站托管知识; 最好熟悉 JSON 语法; 最好能科学上网(不会也没关系,一样可以本地使用); 那么,TimelineJS 对你来说毫无门槛。 二、几种使用方法 要想使用 TimelineJS 制作故事线,需要从以下两个方面考虑: 故事线的数据存放到哪里 故事线的网页运行在哪里 幸运的是,这两个方面官方都考虑到了,使用 Google docs 来存放故事线的数据,Knight Lab 提供页面托管。只要按照这里的 4 个步骤 https://timeline.knightlab.com/#make 就能生成 Knight Lab 给你的一个链接。对于想尝试一下的人来说,这样就足够了,简单么! 但是,它实际上是支持以下三种组合使用的: Knight Lab + ...