来整理一下囤了N年的照片吧!

背景: 看着越来越不靠谱的百度盘, 想起自己还存着好几年的照片在上面, 是唯一的储备, 就有点慌. 于是某天花了点时间全部下了下来, 80多g, 3300多个文件, 放在一个文件夹里
显然, 面对这么一个超大的文件夹和这么多文件, 无论是查阅还是备份都十分不方便, 简直反人类
"书到用时方恨少", 慨叹自己贫瘠的知识, 跌跌撞撞试着写了一个工具来整理
思路:
方向很自然地应该考虑按时间来分类文件, 那么就这么整理:
2011
+1
++1.jpg
++2.jpg
+5
++3.jpg
++1.mp4
以年为名分类建立文件夹, 其中以月为名再分类建立文件夹, 存放相应日期的照片
日期读取:
一般理想状态, 文件日期是鼠标右击"属性"里的日期
但事情往往没有这么简单, 文件导出迁移, 属性里的日期可能不是其真实拍摄日期, 可以利用照片的EXIF信息, 里面有一项"CreateDate"存放着其拍摄时的日期
关于EXIF, 详见: https://en.wikipedia.org/wiki/Exif
然而要是照片视频的EXIF信息也"掉了", 那还有最后一个线索就是文件名, 文件名一般有类似
2014-03-04
20140304
这样两种格式, 通过正则可以分析出来
所以, 要获取日期需要去尝试获得这三种日期来求最小值, 即最原始时期的值
这是获取日期的基本思路
文件入口:
考虑到方便使用, 用户只需要指定一个文件夹即可, 通过函数递归遍历其内部所有文件并返回一个"平坦的"数组
整理方式:
考虑到风险, 程序通过复制的方式来整理文件, 不会对原文件做改动, 就算程序有bug也要保证原文件的安全
于是, 遵循着以上基本理念, 一番折腾就有了下面这个工具
https://www.npmjs.com/package/classify-my-files
已放到了npm上, 方便下载使用
由于代码里用了'fsPromises'导致了需要目前最新的node v10环境, 可以在这个链接下载
http://nodejs.cn/download/
说实话, 毕竟学艺不精, 代码还是写得乱七八糟, 但能用, 望各位海涵😂
自己试了一下那80多g的文件, 还好一个不落地全部复制了, 只是极个别文件日期很是迷, 但绝大多数达到了预期, 还算是成功了