提取腾讯手机助手的来电识别数据库并导入安卓通讯录

发布于 / 实用软件 / 0 条评论

腾讯手机助手我在IOS上用过一段时间,来电识别、来电拦截、号码标记功能感觉算是比较好用的,但是我有一台安卓手机作为收短信专用的机器,上面安装了短信转发app,但是它转发的来电和短信必须要号码在手机通讯录里才能显示是什么人给你发的。如果不在通讯录里面就会显示未知,我回拨的时候只能一个一个去查,比较麻烦。

所以我想着能不能提取出这些手机助手的号码数据库来导入我的安卓手机呢?

正好IOS上买的NiceCaller软件新出了一个提取 腾讯手机助手 数据库的功能,大概提取出来是这样的:

就是这个db数据库文件,我们把它提取到电脑上,用Navicat打开它,表结构大概是这样的:

用下列查询语句将号码和识别名称提取出来:

SELECT t1.number, t2.localized_label
FROM PhoneNumber t1
JOIN PhoneNumberIdentificationEntry t3 ON t1.id = t3.phone_number_id
JOIN Label t2 ON t2.id = t3.label_id;

查询出来直接全选复制出来就行:

但是默认是带86开头的,我们可以用正则去掉开头的86。“^86”

到这里我们就获得了一个接近10w行的电话簿txt,你也可以直接把它当黄页用,不过我这里是还需要转换为vcf格式来导入手机通讯录(安卓机可以本地导入,Iphone只能icloud导入,不支持这么多行,只能一次性导入几千,多了不行)

这里用到的是python,txt转vcf,你需要将上一步拿到的文本保存为phone.txt,然后python3 ./test.py

def generate_vcf(input_file, output_file):
    with open(input_file, 'r', encoding='utf-8') as f:
        lines = f.readlines()

    with open(output_file, 'w', encoding='utf-8') as f:
        for line in lines:
            line = line.strip()
            if line:
                entry = line.split('\t')
                if len(entry) == 2:
                    f.write('BEGIN:VCARD\n')
                    f.write('VERSION:3.0\n')
                    f.write('PRODID:-//Apple Inc.//iOS 12.0//EN\n')
                    f.write(f'N:;{entry[1]};;;\n')
                    f.write(f'FN:{entry[1]}\n')
                    f.write(f'TEL;type=OTHER;type=VOICE;type=pref:{entry[0]}\n')
                    f.write('REV:1999-12-31T23:59:59Z\n')
                    f.write('END:VCARD\n')


# 调用函数并生成vcf文件
generate_vcf('phone.txt', 'phone.vcf')

好的,现在就已经生成了一个vcf文件:

由于这个VCF实在是太大了,我的安卓旧机器导入了两天才导入成功,慢慢等待吧

如果你没有这些工具懒得自己提取,我这里提供我提取的文件,但是后续更新就别指望了:

https://administration.lanzouq.com/b0r96vfdc

密码:2lvt

本文基于《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
转载原创文章请注明,转载自: 沧水的博客 » 提取腾讯手机助手的来电识别数据库并导入安卓通讯录
Not Comment Found