Wie kann ich die HTML-Quelle in der Zwischenablage bearbeiten?

7

Wenn ich HTML aus einem Pidgin-Instant-Messenger-Fenster ausschneide, kann ich es einfach wörtlich in eine neue HTML-E-Mail in Thunderbird einfügen. Alle Formatierungen (Schriftarten, Farben usw.) bleiben erhalten, sodass meine Ubuntu 13.10-Desktop-Zwischenablage anscheinend irgendwo die HTML-Quelle haben muss.

Aber ich möchte die HTML-Quelle optimieren.

Wie komme ich tatsächlich zur HTML-Quelle, wenn sie sich in der Zwischenablage befindet? Ich möchte es einfach in eine Textdatei werfen, das Markup in Vim oder was auch immer bearbeiten, dann diese HTML-Quelle auf einer Webseite verwenden oder es Thunderbirds "Einfügen → HTML" zuführen.

Hmm, vielleicht so etwas wie PasteImg (erwähnt unter Eine Grafik in der Zwischenablage auf die Festplatte bringen? ), Aber request_rich_text()anstelle von request_image()? Es würde mir nichts ausmachen, ein kleines Python-Skript zu verwenden, wenn ich selten eine HTML-Quelle aus der Zwischenablage abrufen möchte.

Was sich in der Zwischenablage befindet, kann tatsächlich "Rich Text" sein.

Das Python-Skript aus dieser Antwort wird ausgegeben

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. Dies ist also eine Möglichkeit, an diese HTML-Quelle zu gelangen und die Zwischenablage vollständig zu umgehen. Ich bin immer noch an der Antwort auf die ursprüngliche Frage interessiert (wie man HTML aus der Zwischenablage abruft).

Adam Monsen
quelle
Ich verstehe das nicht so gut. In der Zwischenablage haben Sie einfachen Text. Warum kopierst du es nicht einfach und fügst es ein? Ich denke, hier fehlt mir etwas.
Lucio
So können Sie die formatierte HTML von Pidgin kopieren - zB als fett statt <strong>bold</strong>, aber wollen Sie die HTML - Quelle kopieren , so dass Sie es bearbeiten können, oder möchten Sie bearbeiten , nachdem es in Thunderbird eingefügt wurde?
Wilf
@ Wilf, beide. Das Bearbeiten der HTML-Quelle nach dem Einfügen in Thunderbird wäre in Ordnung, aber der Zugriff auf die eigentliche HTML-Quelle in der Zwischenablage wäre noch besser, da ich diese auf einer Webseite oder was auch immer verwenden könnte.
Adam Monsen

Antworten:

6

Fand es! So gelangen Sie zur HTML-Quelle, wenn sich einige in Ihrer Zwischenablage befinden:

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

Das hat geholfen.

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

Adam Monsen
quelle
1
Ich mag diese Methode am besten
Ace
Großartig, genau das brauche ich für den Emacs- Organisationsmodus
xji
Scheint aber nicht auf Python3 / GTK3 zu funktionieren. xclip -selection clipboard -o -t text/htmlhat funktioniert.
Xji
1

Ich verstehe, worauf du hinaus willst. Versuchen Sie, in etwas einzufügen, das wysiwyg benötigt, bearbeiten Sie es dort und kopieren Sie dann das Einfügen in Thunderbird?

Vielleicht funktioniert Bluegriffon oder Libreoffice Writer.

As
quelle
Wenn das Einfügen dies nicht zulässt, müssen Sie zuerst zur HTML-Quelle gelangen. Sie können die Ordner .thunderbirdnach einem E-Mail-Entwurf durchsuchen und ihn bearbeiten.
Wilf
Gute Ideen, danke! Siehe meine letzte Antwort - Ich habe herausgefunden, wie es mit PyGTK geht.
Adam Monsen
1

Hier ist eine Modifikation Ihres Skripts, mit der Sie den HTML-Code direkt bearbeiten können.

Es werden auch Probleme mit der Zeichencodierung behoben: Wenn Sie auf eine E-Mail von jemandem antworten, der Windows verwendet, bleibt die Codierung möglicherweise in UTF-16 hängen, was für die Bearbeitung nicht geeignet ist. Möglicherweise müssen Sie das chardetModul in Python installieren .

Ersetzen Sie 'vi'durch einen 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()

Dies führt einen vollständigen Bearbeitungszyklus durch und ändert die Zwischenablage "an Ort und Stelle".

Ich benutze es, um Thunderbirds ärgerliches Fehlen einer HTML-Editor-Funktion auszugleichen:

  1. Wählen Siectrl+a im Fenster zum Erstellen von Nachrichten alle mit aus
  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+v Überschreibt im Erstellungsfenster den gesamten Inhalt mit Ihrer HTML-bearbeiteten Version.
links herum
quelle
Vielleicht funktioniert dies in Thunderbird, aber ich habe Probleme, kopierten unbearbeiteten Text (in meinem Fall in Konfluenz) sogar wieder
einzufügen
0

Ich benutze Thunderbird nicht wirklich, aber Sie sollten in der Lage sein, eine Erweiterung zu verwenden, um die Quelle in Thnderbird zu bearbeiten - zB:

https://addons.mozilla.org/en-us/thunderbird/addon/edit-html-source/ wurde seit Ewigkeiten nicht mehr aktualisiert
https://addons.mozilla.org/en-us/thunderbird/addon/stationery/

Wilf
quelle
2
"HTML-Quelle bearbeiten" war nicht mit meiner Version von Thunderbird kompatibel. Ich habe Stationery ausprobiert, konnte aber nicht herausfinden, wie HTML-Quellen angezeigt / bearbeitet werden.
Adam Monsen