¿Cómo se convierten los archivos de transcripción de iChat que crea Messages en archivos de texto legibles por humanos que se pueden abrir sin la aplicación Messages?
Como referencia, estos son los archivos de conversación ubicados en formato ~/Library/Messages/Archive
.
Simplemente abrir los archivos .ichat en un editor de texto incluye un montón de cadenas y hashes adicionales. Abrirlos en Mensajes y copiar y pegar en un editor de texto funciona, pero preferiría automatizar el proceso si es posible.
Los archivos que guarda Mensajes tienen una ichat
extensión de archivo.
Pero desde la línea de comando puede inspeccionarlos para ver que en realidad son archivos plist binarios:
$ file transcript.ichat
transcript.ichat: Apple binary property list
Resulta que puede convertir fácilmente archivos plist binarios en documentos XML legibles por humanos :
$ plutil -convert xml1 transcript.ichat
Ahora, cuando vuelves a ejecutar file
, puedes ver que es un archivo XML:
$ file transcript.ichat
transcript.ichat: XML document text
Adelante, ábralo y compruébelo usted mismo:
$ open transcript.ichat
Si está familiarizado con sqlite, puede exportar los mensajes directamente desde la base de datos en Mountain Lion iMessage.
sqlite3 /Users/(username)/Library/Messages/chat.db
Desde la base de datos, puede enviar comandos sql para obtener todos los mensajes y campos asociados que le interesen. Además, puede cambiar la configuración de salida para escribir directamente en un archivo.
Además, además de la base de datos, todas las fotos se almacenan en la carpeta Adjuntos.
Mira mi proyecto que tomará todas tus conversaciones y las convertirá en un archivo de texto legible. No convertirá solo un iMessage, sino que recopilará todos sus mensajes y archivos adjuntos, los respaldará y los colocará en un formato legible por humanos.
He creado una herramienta de línea de comandos para convertir estos archivos ichat a JSON separados por saltos de línea
La herramienta extrae la información esencial: mensaje, remitente, fecha
Puede ver el código fuente y/o descargar el binario en https://github.com/kfatehi/ichat2json
Si selecciona imprimir en los menús de archivo, cuando se abre el cuadro de impresión en la parte inferior izquierda, hay un botón de pdf con un menú desplegable. Desde aquí puede guardar como pdf, publicar secuencias de comandos, enviar por correo como pdf o enviar a iTunes.
Para aquellos con carpetas llenas de archivos .ichat en sus manos, sean o no parte de ~/Library/Messages, mi proyecto los convertirá instantáneamente a RTF o formato de texto sin formato: https://github.com/Amethyst -Software/convert-ichat-files (se proporciona binario preconstruido). Los mensajes básicos, así como los mensajes de transferencia de archivos (no los archivos en sí) y los eventos del cliente de chat se traducen a texto. Los chats grupales también son compatibles.
Creé una aplicación llamada "Past for iChat" para hacer esto (abrir iChats/Chat logs en macOS 11+ y exportarlos en varios formatos): https://zeezide.de/en/products/past/
Esta no sería una solución perfecta, pero noté que los mensajes siempre están entre Ä_
y _$
. Podría escribir un script para extraer todo el texto que comenzó y terminó con esos caracteres. (cualquier idioma con soporte rexex serviría)
Esta parece una aplicación ideal de flujos de trabajo de Automator o AppleScript, ya que ambos pueden tener un comportamiento de estilo "presionar botones en pantalla". Diría "tomar archivo como entrada" y usaría algo debajo de "imprimir" o "mensajes" si hay alguno de esos, o usaría AppleScript para decirle que abra el archivo y presione archivo e imprima y guarde como pdf y luego cerrar el archivo.
Sean Moubry
.ichat
archivos) no son bases de datos SQLite.