如何从小米通话录音中筛选出有价值的文件
2022-01-03 本文已影响0人
伊丽莎白菜
〇、需求背景
- 本人长期使用小米手机,并且一直开启着通话录音,录音也一直备份到云端,这样可以令我感到安全;
- 我的小米云空间满了,我又没钱氪金续容量,只能把文件下载到本地磁盘,然后再备份到移动硬盘,至少留两个备份,这样可以令我感到安全;
- 但是当我把录音文件都下载下来,几年攒了几千几万个,一眼看去全是没有备注的陌生号码,大概都是快递和外卖;
- 如何筛选出有价值的,值得保留的文件?我总不能一个个找吧,累死我呀...
- 还好我会写脚本,是时候把技能用到实处了。
一、筛选脚本
非常简单易懂,耗费了大概10分钟,完美解决了问题。
import java.io.File;
import java.util.List;
import java.util.regex.Pattern;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.io.FileUtil;
public class MiRecordFilter {
public static void main(String[] args) {
String src = "E:\\录音";
String dest = "E:\\录音\\dest";
// 有中文备注的
final Pattern namedPattern = Pattern.compile("[\\u4e00-\\u9fa5]");
// 某一时期的陌生号码命名
final Pattern allNumPattern = Pattern.compile("通话录音@[0-9]+");
// 某一时期的陌生号码命名
final Pattern timeBasedPattern = Pattern.compile("[0-9]{2}月[0-9]{2}日 [0-9]{2}点[0-9]{2}分_[0-9]+");
// 其他无价值的文件
final List<String> excludeKeywords = ListUtil.toList("快递外卖", "私密号码");
File[] files = new File(src).listFiles(file -> {
String name = file.getName();
return namedPattern.matcher(name).find()
&& !allNumPattern.matcher(name).find() && !timeBasedPattern.matcher(name).find()
&& excludeKeywords.stream().filter(name::contains).count() == 0;
});
File descDir = new File(dest);
FileUtil.mkdir(descDir);
for (File file : files) {
System.out.println(file.getName());
FileUtil.move(file, descDir, true);
}
}
}
二、筛选结果
不同时期的小米通话录音文件命名有所不同,大概是这样。打包备份之后,删除云空间的所有录音。
sound-records-filtered