クリップボード内の HTML ソースを編集するにはどうすればよいですか?

クリップボード内の HTML ソースを編集するにはどうすればよいですか?

Pidgin インスタント メッセンジャー ウィンドウから HTML の一部を切り取ると、それをそのまま Thunderbird の新しい HTML メールに簡単に貼り付けることができます。すべての書式設定 (フォント、色など) が保持されるため、Ubuntu 13.10 デスクトップ クリップボードのどこかに HTML ソースがあるはずです。

しかし、HTML ソースを微調整したいと思います。

クリップボードにある HTML ソースを実際に取得するにはどうすればよいでしょうか。それをテキスト ファイルに投げ込み、Vim などでマークアップを操作し、この HTML ソースを Web ページで使用したり、Thunderbird の「挿入 → HTML」にフィードしたりしたいと思います。

うーん、こんな感じかな画像を貼り付け(言及されているクリップボード上のグラフィックをディスクに取得しますか?)request_rich_text()ではなく を使用しますrequest_image()。まれにクリップボードから HTML ソースを取得したい場合、小さな Python スクリプトを使用してもかまいません。

クリップボードにあるものは、実際には「リッチ テキスト」である可能性があります。

Pythonスクリプトこの答え出力

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

私のPidginログはHTML形式なので、それがアクセスする方法の1つですこれクリップボードを完全にバイパスする HTML ソース。元の質問 (クリップボードから HTML を取得する方法) に対する回答にまだ興味があります。

答え1

見つかりました! クリップボードに HTML ソースがある場合に HTML ソースを取得する方法は次のとおりです。

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

これ助けました。

これ私の場合は機能しませんでした。コールバックが入力されませんでした。

答え2

何を言おうとしているのかはわかります。WYSIWYG を受け入れる何かに貼り付けて、そこで編集し、Thunderbird にコピーして貼り付けてみてはいかがでしょうか。

おそらくbluegriffonかlibreoffice writerが動作するでしょう。

答え3

これはスクリプトの修正版です。編集html を直接実行します。

また、文字エンコードの問題も処理します。Windowsを使用している人からの電子メールに返信する場合、エンコードがUTF-16のままになっている可能性があり、編集には適していません。chardetモジュールPython で。

'vi'を、選択したテキスト エディターに置き換えます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()

これにより、完全な編集サイクルが実行され、クリップボードが「その場で」変更されます。

私は、Thunderbird の HTML エディタ機能の欠如という厄介な問題を補うためにこれを使用しています。

  1. すべて選択ctrl+aメッセージ作成ウィンドウ内
  2. ctrl+c
  3. 上記のスクリプトを実行すると、エディタが開きます。
    1. HTMLソースに変更を加える
    2. 保存して終了
  4. ctrl+v作成ウィンドウでは、コンテンツ全体が HTML 編集バージョンで上書きされます。

答え4

がある答えユーティリティを直接使用するxclip:

xclip -selection clipboard -o -t text/html

GTK3/Python3 によって、元の回答を壊すような変更がいくつか導入されたようなので、今ではこれが最も簡単で信頼できる方法だと思います。

関連情報