Konversi VMSG menjadi CSV
Ekstrak catatan SMS dari backup VMSG menjadi file CSV yang dapat dicari dan kompatibel dengan spreadsheet.
Buat berkas CSV secara online
Kami belum bisa membaca berkas VMSG, jadi konversi ini belum tersedia. Jika Anda bisa mengekspor pekerjaan Anda ke salah satu format ini atau lainnya, kami akan mengubahnya menjadi CSV:
Bagaimana mengkonversi vmsg ke csv berkas
- Platform seluler
- Belum ada peringkat.
Utilitas backup ponsel atau messaging lama mungkin mengekspor data SMS sebagai .vmsg, sementara spreadsheet, database, dan tools pelaporan biasanya memerlukan .csv. Konversi mengubah data pesan menjadi baris yang dapat dicari, difilter, diedit, atau diimpor.
Apa itu format VMSG
VMSG, juga disebut vMessage, adalah format berbasis teks yang digunakan oleh ponsel lama, software phone-suite, dan utilitas backup SMS. Sebuah file biasanya berisi bagian BEGIN:VMSG, BEGIN:VENV, dan BEGIN:VBODY dengan properti seperti TEL, DTSTART, SUBJECT, BODY, X-IRMC-BODY, X-IRMC-TYPE, dan X-IRMC-BOX.
VMSG dapat dibaca sebagai plain text, tetapi record bertingkat dan properti khusus vendor tidak otomatis ditampilkan sebagai baris dan kolom. Beberapa file menyimpan nomor telepon di bagian VCARD yang membungkusnya, bukan di dalam message body.
Apa itu format CSV
CSV merepresentasikan data tabular sebagai baris dan field. Excel, LibreOffice Calc, Google Sheets, database import tools, dan sebagian besar scripting libraries mendukungnya. Ekspor pesan biasanya menggunakan kolom seperti date, phone, type, folder, subject, dan body.
CSV berguna untuk mengurutkan berdasarkan tanggal, memfilter pesan masuk dan keluar, mencari teks pesan, mengimpor record ke sistem lain, dan membuat arsip teks yang ringkas. CSV tidak mempertahankan sintaks VMSG, attachment, status delivery, atau metadata khusus vendor, kecuali nilai-nilai tersebut secara eksplisit diekspor ke kolom tambahan.
Konversi file dengan local script
Tidak ada implementasi standar VMSG yang universal: vendor ponsel dan program backup menggunakan nama properti dan encoding yang berbeda. Python parser lokal berukuran kecil biasanya lebih aman daripada mengunggah pesan pribadi ke website konversi umum.
Install Python 3, simpan kode berikut sebagai vmsg_to_csv.py, lalu letakkan di sebelah source file:
import csv
import sys
import quopri
def decode(value, params):
if any(p.upper() == 'ENCODING=QUOTED-PRINTABLE' for p in params):
value = quopri.decodestring(value).decode('utf-8', errors='replace')
slash = chr(92)
return (value.replace(slash + 'n', '\n')
.replace(slash + 'N', '\n')
.replace(slash + ',', ',')
.replace(slash + ';', ';')
.replace(slash + slash, slash))
def convert(source, destination):
rows = []
record = None
contact_tel = ''
in_vcard = False
with open(source, encoding='utf-8-sig', errors='replace') as handle:
lines = []
for raw in handle:
line = raw.rstrip('\r\n')
if line.startswith((' ', '\t')) and lines:
lines[-1] += line[1:]
else:
lines.append(line)
for line in lines:
upper = line.upper()
if upper == 'BEGIN:VCARD':
in_vcard = True
continue
if upper == 'END:VCARD':
in_vcard = False
continue
if upper == 'BEGIN:VBODY':
record = {}
continue
if upper == 'END:VBODY':
if record is not None:
record['_CONTACT_TEL'] = contact_tel
rows.append(record)
record = None
continue
if ':' not in line:
continue
left, value = line.split(':', 1)
parts = left.split(';')
name = parts[0].upper()
value = decode(value, parts[1:])
if in_vcard and name == 'TEL':
contact_tel = value
elif record is not None:
record[name] = value
def first(row, names):
for name in names:
if row.get(name, ''):
return row[name]
return ''
columns = ['date', 'phone', 'type', 'folder', 'subject', 'body']
with open(destination, 'w', newline='', encoding='utf-8-sig') as handle:
writer = csv.DictWriter(handle, fieldnames=columns)
writer.writeheader()
for row in rows:
writer.writerow({
'date': first(row, ['DTSTART', 'DATE']),
'phone': first(row, ['TEL', 'X-IRMC-RECIPIENT', 'TO', 'FROM', '_CONTACT_TEL']),
'type': first(row, ['X-IRMC-TYPE', 'TYPE']),
'folder': first(row, ['X-IRMC-BOX', 'FOLDER']),
'subject': first(row, ['SUBJECT']),
'body': first(row, ['BODY', 'X-IRMC-BODY', 'TEXT', 'MESSAGE'])
})
if len(sys.argv) != 3:
raise SystemExit('Usage: python vmsg_to_csv.py input.vmsg output.csv')
convert(sys.argv[1], sys.argv[2])Jalankan python vmsg_to_csv.py messages.vmsg messages.csv. Pada sistem yang menggunakan command python3, jalankan python3 vmsg_to_csv.py messages.vmsg messages.csv. Buka hasilnya di Calc atau Excel; UTF-8 byte-order mark membantu software spreadsheet mendeteksi karakter non-ASCII.
Sebelum konversi, buka salinan file VMSG di text editor dan periksa nama properti yang sebenarnya. Script mengenali alias umum, termasuk BODY, X-IRMC-BODY, TEXT, dan MESSAGE. Jika pesan menggunakan nama lain, tambahkan nama tersebut ke body list dalam script. Jika file menggunakan character set non-UTF-8, ubah input encoding dan uji karakter beraksen sebelum memproses seluruh backup.
Opsi konversi lainnya
Utilitas khusus seperti vmsg2csv mungkin berfungsi untuk varian phone-backup tertentu, tetapi verifikasi source, properti yang didukung, dan output-nya menggunakan salinan kecil terlebih dahulu. Ketersediaan dan kompatibilitas utilitas lama beragam, dan banyak di antaranya tidak mendekode teks quoted-printable, folded lines, atau field khusus vendor dengan benar.
LibreOffice Calc dan Excel dapat membuka CSV, tetapi keduanya bukan VMSG parser yang andal. Mengimpor file VMSG melalui File → Open hanya berfungsi setelah record dinormalisasi menjadi baris yang dibatasi delimiter.
Online converter umum jarang mencantumkan VMSG sebagai input yang didukung dan mungkin salah membaca struktur bertingkatnya. Gunakan layanan online hanya jika layanan tersebut secara eksplisit mendukung VMSG, menjelaskan kebijakan penyimpanan dan penghapusannya, menggunakan HTTPS, dan tidak memerlukan akses akun yang tidak perlu. Jangan mengunggah backup SMS yang berisi pesan pribadi, nomor telepon, atau authentication codes kecuali risiko privasinya dapat diterima.
Periksa data hasil konversi
Bandingkan beberapa baris CSV dengan source, termasuk pesan yang berisi koma, line break, tanda kutip, karakter non-ASCII, dan body kosong. CSV writer Python mengapit koma dan line break yang disisipkan dengan benar, tetapi program ponsel mungkin menyimpan konten multiline atau quoted-printable dalam bentuk khusus vendor yang memerlukan decoding tambahan.
Simpan file VMSG asli. CSV adalah flattened interchange format dan mungkin tidak menyertakan attachment, status telah dibaca atau delivery, struktur kontak, timestamp dengan informasi timezone, serta field yang tidak disertakan dalam kolom output yang dipilih.