Wie kann ich den HTML-Quellcode in der Zwischenablage bearbeiten?

Wie kann ich den HTML-Quellcode in der Zwischenablage bearbeiten?

Wenn ich HTML aus einem Pidgin-Instant-Messenger-Fenster ausschneide, kann ich es problemlos unverändert in eine neue HTML-E-Mail in Thunderbird einfügen. Die gesamte Formatierung (Schriftarten, Farben usw.) bleibt erhalten, sodass es so aussieht, als ob die HTML-Quelle irgendwo in meiner Ubuntu 13.10-Desktop-Zwischenablage vorhanden sein muss.

Aber ich möchte die HTML-Quelle optimieren.

Wie kann ich eigentlich an die HTML-Quelle gelangen, wenn sie sich in der Zwischenablage befindet? Ich möchte sie einfach in eine Textdatei einfügen, die Auszeichnung in Vim oder was auch immer bearbeiten und diese HTML-Quelle dann in einer Webseite verwenden oder sie in Thunderbirds „Einfügen → HTML“ einspeisen.

Hmm, vielleicht so etwas wieBild einfügen(erwähnt inEine Grafik aus der Zwischenablage auf die Festplatte übertragen?), aber die Verwendung request_rich_text()anstelle von request_image()? Ich hätte nichts dagegen, in den seltenen Fällen, in denen ich einen HTML-Quellcode aus der Zwischenablage abrufen möchte, ein kleines Python-Skript zu verwenden.

Der Inhalt der Zwischenablage kann tatsächlich „Rich Text“ sein.

Das Python-Skript vondiese AntwortAusgänge

Current clipboard offers formats: ('TIMESTAMP', 'TARGETS', 'MULTIPLE',
'SAVE_TARGETS', 'COMPOUND_TEXT', 'STRING', 'TEXT', 'UTF8_STRING', 'text/html',
'text/plain')

Es stellte sich heraus, dass meine Pidgin-Protokolle in HTML vorliegen. Das ist also eine Möglichkeit,DasHTML-Quelle, wobei die Zwischenablage vollständig umgangen wird. Mich interessiert immer noch die Antwort auf die ursprüngliche Frage (wie rufe ich HTML aus der Zwischenablage ab).

Antwort1

Gefunden! So gelangen Sie an die HTML-Quelle, wenn sich welche in Ihrer Zwischenablage befindet:

#!/usr/bin/env python
import gtk
print (gtk.Clipboard().wait_for_contents('text/html')).data

Dasgeholfen.

Dashat bei mir nicht funktioniert. Mein Rückruf wurde nie eingegeben.

Antwort2

Ich verstehe, worauf Sie hinauswollen. Versuchen Sie, es in etwas einzufügen, das WYSIWYG akzeptiert, dort zu bearbeiten und es dann in Thunderbird einzufügen?

Vielleicht funktionieren Bluegriffon oder LibreOffice Writer.

Antwort3

Hier ist eine Modifikation Ihres Skripts, die es tatsächlich ermöglichtBearbeitungdas HTML direkt.

Es behandelt auch Probleme mit der Zeichenkodierung: Wenn Sie auf eine E-Mail von jemandem antworten, der Windows verwendet, ist die Kodierung wahrscheinlich auf UTF-16 festgelegt, was für die Bearbeitung nicht geeignet ist. Möglicherweise müssen Sie daschardetModulin Python.

Ersetzen Sie es 'vi'durch den Texteditor Ihrer Wahl in subprocess.call(....

#!/usr/bin/env python
import gtk
import chardet
import os
import getopt
import subprocess

dtype = 'text/html'
htmlclip = gtk.Clipboard().wait_for_contents(dtype).data
encoding = chardet.detect(htmlclip)['encoding']

# Shove the clipboard to a temporary file
tmpfn = '/tmp/htmlclip_%i' % os.getpid()

with open (tmpfn, 'w') as editfile:
   editfile.write(htmlclip.decode(encoding))

# Manually edit the temporary file
subprocess.call(['vi', tmpfn])

with open (tmpfn, 'r') as editfile:
   htmlclip = editfile.read().encode(encoding)

# Put the modified data back to clipboard
gtk.Clipboard().set_with_data(
      [(dtype,0,0)],
      lambda cb, sd, info, data: sd.set(dtype, 8, htmlclip),
      lambda cb, d: None )
gtk.Clipboard().set_can_store([(dtype,0,0)])
gtk.Clipboard().store()

Dadurch wird ein vollständiger Bearbeitungszyklus ausgeführt, wobei die Zwischenablage „an Ort und Stelle“ geändert wird.

Ich verwende es, um das ärgerliche Fehlen einer HTML-Editor-Funktion in Thunderbird auszugleichen:

  1. Wählen Sie Alleim ctrl+aNachrichtenerstellungsfenster
  2. ctrl+c
  3. Führen Sie das obige Skript aus, das einen Editor öffnet –
    1. Nehmen Sie Ihre Änderungen an der HTML-Quelle vor
    2. speichern und Beenden
  4. ctrl+vim Verfassen-Fenster überschreibt den gesamten Inhalt mit Ihrer HTML-bearbeiteten Version.

Antwort4

Es gibteine Antwortbei dem das xclipDienstprogramm direkt verwendet wird:

xclip -selection clipboard -o -t text/html

Ich finde es jetzt am einfachsten und zuverlässigsten, da GTK3/Python3 einige Änderungen eingeführt zu haben scheint, die die ursprüngliche Antwort beschädigt haben.

verwandte Informationen