¿Cómo convertir archivos .textClipping de Apple a texto sin formato/HTML?

Si selecciona texto en una aplicación (p. ej., Safari, Chrome o cualquier otra aplicación que permita arrastrar texto) y arrastra la selección a un panel del Finder, se creará un archivo en el panel con una .textClippingextensión invisible. La extensión puede o no estar visible en Finder dependiendo de su configuración.

Originalmente asumí que el archivo es texto sin formato e intenté cambiarle el nombre para agregar una .txtextensión, pero al hacer doble clic aún se abre con Finder.

Luego verifiqué el tipo de archivo:

file 'some text.textClipping'
>> some text.textClipping: Apple binary property list

cat-ing muestra un encabezado bplist00?XUTI-Data?seguido de texto legible.

Lo intenté:

mv 'some text.textClipping' 'some text.txt'

pero incluso después de esto, todavía se abre con Finder y no con la aplicación asociada para los .txtarchivos.

Otra 'rareza' es que arrastrar un archivo .textClipping al terminal, que a veces uso como una forma de insertar la ruta completa, tiene el efecto inesperado de insertar el contenido del archivo en lugar de su ruta.

Desearía poder usar .textClippingarchivos para crear rápidamente fragmentos de páginas web y otras aplicaciones, pero por razones obvias, quiero evitar que los fragmentos se almacenen en algún formato binario propietario de Apple.

¿Hay alguna forma de convertir los fragmentos a un formato portátil, como texto sin formato? ¿Cómo es que este tipo de archivos se comportan de manera diferente a otros? ¿Hay alguna propiedad de archivo extendida? Entonces como quitarlo para que los archivos dejen de ser 'especiales'?

Respuestas (2)

Más búsquedas en Google sobre las listas de propiedades binarias de Apple me llevaron a intentar plutil -convert xml1 note.textClippingque produzca un archivo XML con el texto legible del fragmento como texto UTF-8, luego versiones codificadas en base64 del mismo texto en UTF-16, mac-plain y HTML.

Incluso después de convertir el formato binario a XML, Finder aún abre el archivo en su propio visor, sin importar la extensión configurada (p. ej ., .plisto .xml).

La ejecución /bin/ls -alen la carpeta muestra un @junto al nombre del archivo que indica que el archivo tiene atributos extendidos, por lo que parece que están causando el comportamiento "especial" en Finder.

Esta respuesta me lleva a probar

xattr -l note.plist 

lo que revela que parte del contenido de la nota se almacena como una clave de atributo extendida.

Y finalmente, borrar todos los atributos extendidos convirtió el archivo en un archivo 'normal', por lo que ahora se abre con la aplicación asociada:

xattr -c note.plist 

El comando anterior es para un solo archivo, para eliminar los atributos extendidos de todos los archivos en la ejecución de la carpeta actual:

xattr -rc .

Los atributos extendidos pueden ser útiles en algunos casos; por ejemplo, si descargó un archivo con Safari o Chrome, la URL original se almacenará como un atributo extendido que puede ver xattr -l myfile.ziphaciendo clic con el botón derecho en un archivo en Finder y seleccionando Obtener información > El La URL se mostrará en Más información > Desde dónde. (Otra razón para no usar wget cuando desea realizar un seguimiento del origen del archivo).

Un pequeño fragmento de python3 que se puede agregar como una Acción rápida en Finder con la ayuda de ootb Automator.app (Nuevo> Acción rápida> buscar y arrastrar Run Shell Scriptal panel de trabajo derecho).

import plistlib
import sys
from pathlib import Path

clippath = Path(sys.argv[1])

with clippath.open('rb') as fi:
    plist = plistlib.load(fi)
    utf8text = plist['UTI-Data']['public.utf8-plain-text']
    html = plist['UTI-Data']['public.html']

    with clippath.with_suffix(".txt").open(mode='w', encoding='utf-8') as ft:
        ft.write(utf8text)

    with clippath.with_suffix(".html").open(mode='wb') as ft:
        ft.write(html)

Así es como debe verse el fragmento en Automator (suponiendo que tenga instalado python3 /usr/local/bin/python3):

ingrese la descripción de la imagen aquí

Al hacer clic en Guardar en Automator, se le pedirá un nombre (p. ej Convert Clipping., ). Una vez guardado, haga clic con el botón derecho en un archivo en Finder, seleccione Quick Actions> Convert Clipping. Se crearán dos archivos nuevos .txty .html(si crea recortes de una página web, la versión HTML conservará los enlaces).