¿Cómo puedo convertir registros .ichat en archivos de texto?

¿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.

Respuestas (9)

Los archivos que guarda Mensajes tienen una ichatextensió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.

Las transcripciones de iChat ( .ichatarchivos) no son bases de datos SQLite.

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.

https://peterkaminski09.github.io/baskup

¿Funciona con los archivos de registro de iChat?
Utiliza sus archivos de registro de iChat que se encuentran en su ./Library/Messages/chat.db para convertirlos en un archivo de texto.
Esto funcionó muy bien para mí, ¡gracias! Sin embargo, noté que puede omitir el comienzo de los historiales de mensajes si tiene conversaciones que son MUY largas (a menos que se pierdan para siempre si iMessage no guarda todos los mensajes como pensé). Sin embargo, ¡todavía hizo el trabajo!
Creo que el principal problema que he notado es que cuando abres tu Macbook después de haber enviado muchos mensajes en tu teléfono, hay una demora entre iMessage en Mac y el teléfono, y esto hace que los mensajes se corten.
Esto parece muy útil, pero ¿hay alguna forma de eliminar mensajes antiguos una vez que se hayan exportado/archivado/lo que sea?

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.

¿Podría proporcionar una mejor descripción de su respuesta? Eso es sugerente pero no muestra ninguna respuesta particular para el usuario con pasos.