如何从小米通话录音中筛选出有价值的文件

2022-01-03  本文已影响0人  伊丽莎白菜

〇、需求背景

  1. 本人长期使用小米手机,并且一直开启着通话录音,录音也一直备份到云端,这样可以令我感到安全;
  2. 我的小米云空间满了,我又没钱氪金续容量,只能把文件下载到本地磁盘,然后再备份到移动硬盘,至少留两个备份,这样可以令我感到安全;
  3. 但是当我把录音文件都下载下来,几年攒了几千几万个,一眼看去全是没有备注的陌生号码,大概都是快递和外卖;
  4. 如何筛选出有价值的,值得保留的文件?我总不能一个个找吧,累死我呀...
  5. 还好我会写脚本,是时候把技能用到实处了。

一、筛选脚本

非常简单易懂,耗费了大概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
上一篇下一篇

猜你喜欢

热点阅读