La respuesta de @Memmo es genial y me puso en la dirección correcta. Sin embargo, el script ya no funciona, porque la indentación estaba cambiando para las exportaciones de Telegram. Además, quería una versión que funcione para todos los orígenes de país. Mi CSV de salida también se puede importar a Google Contacts sin la necesidad de convertirlo a VCard. Aquí está mi versión modificada:
import re
pathToFile = 'lists/contacts.html'
with open(pathToFile, encoding='utf-8') as f:
lines = tuple(l for l in f.readlines())
with open('csvToConvert.csv', "w", encoding="utf-8") as outputFile:
outputFile.write('Name,Group Membership,Phone 1 - Type,Phone 1 - Value\n')
for i,l in enumerate(lines):
if '
La exportación de datos se puede encontrar en Telegram Desktop en Configuración > Avanzado. El script anterior debe estar ubicado en la carpeta de Exportación de Datos resultante y debe ejecutarse con Python3.
Mi último paso fue fusionar los contactos usando Merge + en mi móvil después de la sincronización, porque el script creará una entrada por número, no por contacto.