G2EX

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

介绍

本文针对 Android 平台的微信应用。

一般来说,手机闪存的路径为 storage/emulated/0/,微信文件夹位于闪存的 Tencent/MicroMsg/ 目录下。

Tencent/MicroMsg/ 目录下,有一个由字母和数字组成的长度为 32 字节的文件夹,消息里的图片和视频都会保存到这个文件夹中;

当你在微信聊天中长按图片或视频点击「保存」时,这些图片或视频又会被保存到 Tencent/MicroMsg/ 目录下的 WeiXin 文件夹中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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 为例。

    1
    2
    3
    4
    5
    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 下的图片了。