Wie konvertiert man Apples .textClipping-Dateien in einfachen Text/HTML?

Wenn Sie Text in einer App auswählen (z. B. Safari, Chrome oder eine andere App, die das Ziehen von Text ermöglicht) und die Auswahl in ein Finder-Bedienfeld ziehen, wird im Bedienfeld eine Datei mit einer unsichtbaren .textClippingErweiterung erstellt. Die Erweiterung kann je nach Ihren Einstellungen im Finder sichtbar sein oder nicht.

Ursprünglich ging ich davon aus, dass es sich bei der Datei um einfachen Text handelt, und versuchte, sie umzubenennen, um eine .txtErweiterung hinzuzufügen, aber ein Doppelklick öffnet sie immer noch mit Finder.

Dann habe ich den Dateityp überprüft:

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

cat-ing zeigt es eine Kopfzeile bplist00?XUTI-Data?gefolgt von lesbarem Text.

Ich habe es versucht:

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

aber auch danach öffnet es sich immer noch mit dem Finder und nicht mit der zugehörigen App für die .txtDateien.

Eine weitere „Seltsamkeit“ ist, dass das Ziehen einer .textClipping-Datei in das Terminal – das ich manchmal zum Einfügen des vollständigen Pfads verwende – den unerwarteten Effekt hat, dass der Inhalt der Datei anstelle ihres Pfads eingefügt wird.

Ich wünschte, ich könnte .textClippingDateien verwenden, um schnell Snippets aus Webseiten und anderen Apps zu erstellen, aber aus offensichtlichen Gründen möchte ich vermeiden, dass die Snippets in einem Apple-eigenen Binärformat gespeichert werden.

Gibt es eine Möglichkeit, die Snippets in ein tragbares Format, z. B. reinen Text, zu konvertieren? Wie kommt es, dass sich diese Art von Dateien anders verhält als andere? Gibt es eine erweiterte Dateieigenschaft? Wie kann man es dann entfernen, damit die Dateien nicht mehr "besonders" sind?

Antworten (2)

Weiteres Googeln über Apples binäre Eigenschaftslisten führte mich zu einem Versuch plutil -convert xml1 note.textClipping, der eine XML-Datei mit dem lesbaren Text des Snippets als UTF-8-Text und dann base64-codierte Versionen desselben Textes in UTF-16, Mac-Plain und HTML erzeugt.

Selbst nach der Konvertierung des Binärformats in das XML-Format öffnet der Finder die Datei immer noch in seinem eigenen Viewer, unabhängig davon, welche Erweiterung eingestellt ist (z . B. .plistoder .xml).

Beim Ausführen /bin/ls -alim Ordner wird @neben dem Dateinamen ein angezeigt, das darauf hinweist, dass die Datei erweiterte Attribute hat, sodass es so aussieht, als würden sie das „besondere“ Verhalten im Finder verursachen.

Diese Antwort veranlasste mich, es zu versuchen

xattr -l note.plist 

was zeigt, dass ein Teil des Inhalts der Notiz als erweiterter Attributschlüssel gespeichert ist.

Und schließlich verwandelte das Löschen aller erweiterten Attribute die Datei in eine "normale" Datei, sodass sie jetzt mit der zugehörigen App geöffnet wird:

xattr -c note.plist 

Der obige Befehl gilt für eine einzelne Datei, um erweiterte Attribute für alle Dateien im aktuellen Ordner zu entfernen:

xattr -rc .

Erweiterte Attribute können in einigen Fällen nützlich sein – wenn Sie beispielsweise eine Datei mit Safari oder Chrome heruntergeladen haben, wird die ursprüngliche URL als erweitertes Attribut gespeichert, das Sie sehen können, xattr -l myfile.zipindem Sie im Finder mit der rechten Maustaste auf eine Datei klicken und Informationen abrufen > The Die URL wird unter Weitere Informationen > Woher angezeigt. (Ein weiterer Grund, wget nicht zu verwenden, wenn Sie den Ursprung der Datei verfolgen möchten.)

Ein winziges Python3-Snippet, das als Schnellaktion im Finder mit Hilfe der ootb Automator.app hinzugefügt werden kann (Neu > Schnellaktion > Suchen und auf das rechte Arbeitsfeld ziehen )Run Shell Script .

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)

So muss das Snippet im Automator aussehen (vorausgesetzt, Sie haben python3 in installiert /usr/local/bin/python3):

Geben Sie hier die Bildbeschreibung ein

Wenn Sie im Automator auf Speichern klicken , werden Sie nach einem Namen gefragt (z . B. Convert Clipping). Klicken Sie nach dem Speichern mit der rechten Maustaste auf eine Datei im Finder und wählen Sie Quick Actions> aus Convert Clipping. Es werden zwei neue Dateien erstellt .txtund .html(wenn Sie Ausschnitte aus einer Webseite erstellen, behält die HTML-Version Links bei).