Como posso editar a origem do HTML na área de transferência?

5

Se eu cortar algum HTML de uma janela do Instant Messenger do Pidgin, posso colá-lo facilmente em um novo e-mail HTML no Thunderbird. Todas as formatações (fontes, cores, etc) são preservadas, portanto, parece que minha área de transferência do Ubuntu 13.10 deve ter a fonte HTML em algum lugar.

Mas eu gostaria de ajustar o código HTML.

Como posso realmente chegar ao código-fonte HTML quando ele está na área de transferência? Eu gostaria apenas de jogá-lo em um arquivo de texto, trabalhar na marcação no Vim ou qualquer outra coisa, então usar essa fonte HTML em uma página da Web ou alimentá-la no "Inserir → HTML" do Thunderbird.

Hmm, talvez algo como PasteImg (mencionado em Obtendo um gráfico na área de transferência para o disco? ), mas usando request_rich_text() em vez de request_image() ? Eu não me importaria de usar um pequeno script Python nas raras vezes em que eu queria obter fontes HTML da área de transferência.

O que está na área de transferência pode, na verdade, ser "rich text".

O script Python de esta resposta saídas

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

Acontece que meus logs do Pidgin estão em HTML, então essa é uma maneira de acessar essa fonte HTML, ignorando completamente a área de transferência. Ainda estou interessado na resposta à pergunta original (como recuperar o HTML da área de transferência).

    
por Adam Monsen 28.02.2014 / 23:20

4 respostas

6

Encontrou! Veja como chegar ao código HTML quando houver algum na sua área de transferência:

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

Isso ajudou.

Este não funcionou para mim. Meu callback nunca foi inserido.

    
por Adam Monsen 03.03.2014 / 08:10
1

Eu vejo o que você está tentando entender. Tente colar em algo que exija wysiwyg, edite-o lá e copie e cole no Thunderbird?

Talvez o gravador bluegriffon ou libreoffice funcione.

    
por Ace 01.03.2014 / 00:33
1

Aqui está uma modificação do seu script, que na verdade permite editar o html diretamente.

Ele também lida com problemas de codificação de caracteres: se você responder a um e-mail de alguém usando o Windows, é provável que a codificação esteja presa em UTF-16, o que não é bom para edição. Talvez seja necessário instalar o chardet module em Python.

Substitua 'vi' pelo editor de texto de sua escolha, em 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()

Isso faz um ciclo de edição completo, modificando a área de transferência "no lugar".

Eu o uso para compensar a falta irritante de um recurso de editor de html do Thunderbird:

  1. selecione todos com ctrl + a na janela de composição da mensagem
  2. ctrl + c
  3. execute o script acima, que abre um editor -
    1. faça as alterações na fonte de html
    2. salve e saia
  4. ctrl + v na janela de composição sobrescreve todo o conteúdo com sua versão editada em html.
por leftaroundabout 17.03.2015 / 00:10
0

Eu realmente não uso o Thunderbird, mas você deve poder usar uma extensão para ajudar a editar a fonte no Thnderbird - por exemplo:

link não foi atualizado por muito tempo
link

    
por Wilf 01.03.2014 / 01:20