¿Cómo puedo editar la fuente de HTML en el portapapeles?

¿Cómo puedo editar la fuente de HTML en el portapapeles?

Si corto algo de HTML de una ventana de mensajería instantánea Pidgin, puedo pegarlo fácilmente palabra por palabra en un nuevo correo electrónico HTML en Thunderbird. Todo el formato (fuentes, colores, etc.) se conserva, por lo que parece que mi portapapeles de escritorio Ubuntu 13.10 debe tener la fuente HTML en alguna parte.

Pero me gustaría modificar la fuente HTML.

¿Cómo puedo acceder a la fuente HTML cuando está en el portapapeles? Me gustaría simplemente colocarlo en un archivo de texto, trabajar en el marcado en Vim o lo que sea, luego usar esta fuente HTML en una página web o enviarla a "Insertar → HTML" de Thunderbird.

Mmmm, tal vez algo comoPegarImg(mencionado en¿Obtener un gráfico del portapapeles en el disco?), pero usando request_rich_text()en lugar de request_image()? No me importaría usar un pequeño script de Python las raras veces que quiero obtener una fuente HTML del portapapeles.

Lo que hay en el portapapeles puede ser en realidad "texto enriquecido".

El script Python deesta respuestasalidas

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

Resulta que mis registros Pidgin están en HTML, así que esa es una forma de accederesteFuente HTML, sin pasar por el portapapeles por completo. Todavía estoy interesado en la respuesta a la pregunta original (cómo recuperar HTML del portapapeles).

Respuesta1

¡Lo encontré! A continuación se explica cómo acceder a la fuente HTML cuando hay algo en el portapapeles:

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

Esteayudó.

Esteno funcionó para mí. Mi devolución de llamada nunca fue ingresada.

Respuesta2

Veo a lo que intentas llegar. ¿Intenta pegar algo que requiera wysiwyg, edítelo allí y luego copie y pegue en Thunderbird?

Quizás bluegriffon o libreoffice escritor funcionen.

Respuesta3

Aquí hay una modificación de su script, que en realidad permiteediciónel html directamente.

También soluciona problemas con la codificación de caracteres: si respondes a un correo electrónico de alguien que usa Windows, es probable que la codificación esté bloqueada en UTF-16, lo que no sirve para editar. Es posible que necesite instalar elchardetmóduloen pitón.

Reemplácelo 'vi'con el editor de texto de su elección, en formato 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()

Esto realiza un ciclo de edición completo, modificando el portapapeles "en su lugar".

Lo uso para compensar la molesta falta de una función de edición html en Thunderbird:

  1. seleccionar todocon ctrl+aen la ventana de redacción de mensajes
  2. ctrl+c
  3. ejecute el script anterior, que abre un editor –
    1. haga sus cambios en la fuente html
    2. guardar y Salir
  4. ctrl+ven la ventana de redacción sobrescribe todo el contenido con su versión editada en HTML.

Respuesta4

Hayuna respuestaen el que utiliza directamente la xcliputilidad:

xclip -selection clipboard -o -t text/html

Lo encuentro más fácil y confiable ahora, ya que GTK3/Python3 parece haber introducido algunos cambios que rompieron la respuesta original.

información relacionada