Converter VMSG para CSV
Extraia registros de SMS de backups VMSG para arquivos CSV pesquisáveis e compatíveis com planilhas.
Crie ficheiros CSV online
Ainda não conseguimos ler ficheiros VMSG, por isso esta conversão não está disponível. Se conseguir exportar o seu trabalho para um destes formatos ou outros, transformamo-lo em CSV:
Como converter vmsg para csv arquivo
- Plataformas móveis
- Nenhuma avaliação ainda.
Um backup antigo de telefone ou utilitário de mensagens pode exportar registros de SMS como .vmsg, enquanto planilhas, bancos de dados e ferramentas de geração de relatórios normalmente exigem .csv. A conversão transforma os registros de mensagens em linhas que podem ser pesquisadas, filtradas, editadas ou importadas.
O que é o formato VMSG
VMSG, também chamado de vMessage, é um formato baseado em texto usado por telefones celulares antigos, software de gerenciamento de telefones e utilitários de backup de SMS. Um arquivo geralmente contém as seções BEGIN:VMSG, BEGIN:VENV e BEGIN:VBODY, com propriedades como TEL, DTSTART, SUBJECT, BODY, X-IRMC-BODY, X-IRMC-TYPE e X-IRMC-BOX.
VMSG pode ser lido como texto simples, mas seus registros aninhados e propriedades específicas do fornecedor não são exibidos automaticamente como linhas e colunas. Alguns arquivos armazenam o número de telefone em uma seção VCARD ao redor, em vez de dentro do corpo da mensagem.
O que é o formato CSV
CSV representa dados tabulares como linhas e campos. Excel, LibreOffice Calc, Google Sheets, ferramentas de importação de bancos de dados e a maioria das bibliotecas de scripting oferecem suporte a ele. Uma exportação de mensagens normalmente usa colunas como date, phone, type, folder, subject e body.
CSV é útil para ordenar por data, filtrar mensagens recebidas e enviadas, pesquisar o texto das mensagens, importar registros para outro sistema e criar um arquivo de texto compacto. Ele não preserva a sintaxe VMSG, anexos, estados de entrega ou metadados específicos do fornecedor, a menos que esses valores sejam exportados explicitamente para colunas adicionais.
Converter o arquivo com um script local
Não existe uma implementação universal do padrão VMSG: fornecedores de telefones e programas de backup usam nomes de propriedades e codificações diferentes. Um pequeno parser local em Python geralmente é mais seguro do que enviar mensagens privadas para um site genérico de conversão.
Instale Python 3, salve o conteúdo a seguir como vmsg_to_csv.py e coloque-o ao lado do arquivo de origem:
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])Execute python vmsg_to_csv.py messages.vmsg messages.csv. Em sistemas que usam o comando python3, execute python3 vmsg_to_csv.py messages.vmsg messages.csv. Abra o resultado no Calc ou Excel; a marca de ordem de bytes UTF-8 ajuda o software de planilhas a detectar caracteres não ASCII.
Antes da conversão, abra uma cópia do arquivo VMSG em um editor de texto e verifique os nomes reais de suas propriedades. O script reconhece aliases comuns, incluindo BODY, X-IRMC-BODY, TEXT e MESSAGE. Se as mensagens usarem outro nome, adicione-o à lista de corpos no script. Se o arquivo usar um conjunto de caracteres diferente de UTF-8, altere a codificação de entrada e teste os caracteres acentuados antes de processar todo o backup.
Outras opções de conversão
Um utilitário dedicado, como vmsg2csv, pode funcionar para uma variante específica de backup de telefone, mas verifique sua origem, as propriedades compatíveis e a saída usando primeiro uma cópia pequena. A disponibilidade e a compatibilidade de utilitários antigos variam, e muitos não decodificam corretamente texto quoted-printable, linhas dobradas ou campos específicos do fornecedor.
LibreOffice Calc e Excel podem abrir CSV, mas não são parsers VMSG confiáveis. Importar um arquivo VMSG por meio de File → Open só funciona depois que os registros já tiverem sido normalizados em linhas delimitadas.
Conversores online genéricos raramente listam VMSG como entrada compatível e podem interpretar incorretamente sua estrutura aninhada. Use um serviço online somente se ele oferecer suporte explícito a VMSG, explicar sua política de retenção e exclusão, usar HTTPS e não exigir acesso desnecessário à conta. Não envie backups de SMS contendo mensagens privadas, números de telefone ou códigos de autenticação, a menos que o risco à privacidade seja aceitável.
Verificar os dados convertidos
Compare várias linhas do CSV com a origem, incluindo mensagens que contenham vírgulas, quebras de linha, aspas, caracteres não ASCII e corpos vazios. O writer de CSV do Python coloca corretamente entre aspas vírgulas e quebras de linha incorporadas, mas um programa de telefone pode armazenar conteúdo multilinha ou quoted-printable em um formato específico do fornecedor que exija decodificação adicional.
Guarde o arquivo VMSG original. CSV é um formato de intercâmbio achatado e pode omitir anexos, status de leitura ou entrega, estrutura de contatos, registros de data e hora com informações de fuso horário e campos que não foram incluídos nas colunas de saída selecionadas.