Converti VMSG in CSV
Estrai i record SMS dai backup VMSG in file CSV ricercabili e compatibili con i fogli di calcolo.
Crea file CSV online
Non sappiamo ancora leggere i file VMSG, quindi questa conversione non è disponibile. Se puoi esportare il tuo lavoro in uno di questi formati o in altri, ne ricaviamo un CSV:
Come convertire vmsg in csv file
- Piattaforme mobili
- Ancora nessuna valutazione.
Un vecchio backup del telefono o un'utility di messaggistica può esportare i record SMS come .vmsg, mentre fogli di calcolo, database e strumenti di reporting generalmente richiedono .csv. La conversione trasforma i record dei messaggi in righe che possono essere cercate, filtrate, modificate o importate.
Che cos'è il formato VMSG
VMSG, chiamato anche vMessage, è un formato basato su testo utilizzato dai vecchi telefoni cellulari, dai software per la gestione del telefono e dalle utility di backup degli SMS. Un file contiene comunemente le sezioni BEGIN:VMSG, BEGIN:VENV e BEGIN:VBODY, con proprietà come TEL, DTSTART, SUBJECT, BODY, X-IRMC-BODY, X-IRMC-TYPE e X-IRMC-BOX.
VMSG è leggibile come testo normale, ma i suoi record annidati e le proprietà specifiche del produttore non vengono visualizzati automaticamente come righe e colonne. Alcuni file memorizzano il numero di telefono in una sezione VCARD circostante invece che all'interno del corpo del messaggio.
Che cos'è il formato CSV
CSV rappresenta i dati tabellari come righe e campi. Excel, LibreOffice Calc, Google Sheets, gli strumenti di importazione dei database e la maggior parte delle librerie di scripting lo supportano. Un'esportazione dei messaggi utilizza comunemente colonne come date, phone, type, folder, subject e body.
CSV è utile per ordinare in base alla data, filtrare i messaggi in entrata e in uscita, cercare nel testo dei messaggi, importare i record in un altro sistema e creare un archivio di testo compatto. Non conserva la sintassi VMSG, gli allegati, gli stati di consegna o i metadati specifici del produttore, a meno che tali valori non vengano esportati esplicitamente in colonne aggiuntive.
Convertire il file con uno script locale
Non esiste un'implementazione standard universale di VMSG: i produttori di telefoni e i programmi di backup utilizzano nomi di proprietà e codifiche differenti. Un piccolo parser locale in Python è generalmente più sicuro che caricare messaggi privati su un generico sito web di conversione.
Installa Python 3, salva quanto segue come vmsg_to_csv.py e posizionalo accanto al file sorgente:
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])Esegui python vmsg_to_csv.py messages.vmsg messages.csv. Sui sistemi che utilizzano il comando python3, esegui python3 vmsg_to_csv.py messages.vmsg messages.csv. Apri il risultato in Calc o Excel; il byte-order mark UTF-8 aiuta il software per fogli di calcolo a rilevare i caratteri non ASCII.
Prima della conversione, apri una copia del file VMSG in un editor di testo e controlla i nomi effettivi delle proprietà. Lo script riconosce gli alias comuni, tra cui BODY, X-IRMC-BODY, TEXT e MESSAGE. Se i messaggi utilizzano un altro nome, aggiungilo all'elenco del corpo nello script. Se il file utilizza un set di caratteri diverso da UTF-8, modifica la codifica di input e verifica i caratteri accentati prima di elaborare l'intero backup.
Altre opzioni di conversione
Un'utility dedicata come vmsg2csv può funzionare per una specifica variante di backup del telefono, ma verifica prima la sua origine, le proprietà supportate e l'output con una piccola copia. La disponibilità e la compatibilità delle utility meno recenti variano e molte non decodificano correttamente il testo quoted-printable, le righe ripiegate o i campi specifici del produttore.
LibreOffice Calc ed Excel possono aprire CSV, ma non sono parser VMSG affidabili. L'importazione di un file VMSG tramite File → Open funziona solo dopo che i record sono già stati normalizzati in righe delimitate.
I convertitori online generici raramente indicano VMSG come input supportato e potrebbero interpretare erroneamente la sua struttura annidata. Utilizza un servizio online solo se supporta esplicitamente VMSG, spiega le proprie norme di conservazione ed eliminazione, utilizza HTTPS e non richiede accessi all'account non necessari. Non caricare backup SMS contenenti messaggi privati, numeri di telefono o codici di autenticazione, a meno che il rischio per la privacy non sia accettabile.
Verificare i dati convertiti
Confronta diverse righe CSV con la sorgente, inclusi i messaggi contenenti virgole, interruzioni di riga, virgolette, caratteri non ASCII e corpi vuoti. Il writer CSV di Python racchiude correttamente tra virgolette le virgole e le interruzioni di riga incorporate, ma un programma del telefono potrebbe memorizzare contenuti multilinea o quoted-printable in una forma specifica del produttore che richiede un'ulteriore decodifica.
Conserva il file VMSG originale. CSV è un formato di interscambio appiattito e potrebbe omettere allegati, lo stato di lettura o consegna, la struttura dei contatti, i timestamp con informazioni sul fuso orario e i campi non inclusi nelle colonne di output selezionate.