Hatena::Grouprubyist

たばさの RSSフィード

07/19(土) 2008

clipboard

| clipboard - たばさの を含むブックマーク はてなブックマーク - clipboard - たばさの

http://jp.rubyist.net/magazine/?0005-RLR

動かなくなっているので修正

require "win32/clipboard"
include Win32
 
def quote(data)
  "["+data+"]"
end

old=Clipboard.data
# クリップボードのデータの取得
puts "Data on clipboard was: " + quote(Clipboard.data)
 
# クリップボードにデータを追加
Clipboard.set_data("test")
 
# クリップボードのデータを再び取得
puts "Data on clipboard is now: " + quote(Clipboard.data)
 
# クリップボードのデータを消去
Clipboard.empty

# クリップボードのデータを再び取得
puts "at last, Data on clipboard is now: " + quote(Clipboard.data)

# クリップボードにデータを追加
Clipboard.set_data(old)

# クリップボードのデータを再び取得
puts "recovered, Data on clipboard is now: " + quote(Clipboard.data)

firefoxのlocation.urlをコピーしてどこかに保存しようとしているんだけど、できればlinux,windows共通で。

見当たらん。

ubuntuで強制終了 初

| ubuntuで強制終了 初 - たばさの を含むブックマーク はてなブックマーク - ubuntuで強制終了 初 - たばさの

google notebookいれて長いのをコピペして固まったので電源ボタン長押し。CtrlAltDelはない?

そのあとからか、

google:ubuntu ネットワークアイコンがクルクル回る

こんな症状。firefoxも繋がったり繋がらなかったり不安定。

ping www.google.com

などと端末でやってみる。unknownになったり0% lossになったり100% lossになったり。


追記

Ubuntu/インストール後の設定 - TOBY SOFT wiki

DHCPの場合」の下二行をコピペで追加して「ネットワークの設定を有効にする」でアイコンの状態は直った。難易度高すぎ。

backupはしてあるけどどこが問題かわからないという事実。結果からすると/etc/をrestoreすれば直ったのかな?

clipboardにurlが来たら内容をメールで送る

|  clipboardにurlが来たら内容をメールで送る - たばさの を含むブックマーク はてなブックマーク -  clipboardにurlが来たら内容をメールで送る - たばさの

メモ用なのでhtmlテキストを保存することのみ対応です。

(修正版は最後に追加。自分で使ってエラー修正したら随時更新)

#!ruby
require "uri"
require "open-uri"
require "win32/clipboard"
include Win32


last=Clipboard.data

while 1
  if last=~/^http/
    puts last 
    tmp="c:\\tmp\\tmp.htm"
    open(last){|f|
      open(tmp,"w"){|g| g.puts f.readlines*''}
      puts `tmail "#{last}" "clip" "#{tmp}"`
      `firefox "http://b.hatena.ne.jp/add?mode=confirm&url=#{URI.escape(last)}"`
    }
  else
    puts "(#{last})"
  end
  (sleep 5; data=Clipboard.data) until data!=nil && data.size>0 && last!=data
  last=data
end

tmail.batは

http://www.vector.co.jp/soft/win95/net/se076776.html

を使ってパスの通ったところにおいておきます。

[path]ssmail mymail@aaa.aa %*

などとしておきます。


エスケープ処理してないな。

追記'08/7/23:escapeするようにした。


追記'08/7/26:titleをメールの件名に使うためにmechanizeを使った版

#!ruby -Ks
require 'uri'
require 'open-uri'
require 'win32/clipboard'
require 'nkf'
require 'mechanize'

include Win32

def q da
  NKF::nkf('-s -m0',da )
end

last=Clipboard.data

while 1
  if last=~/^http/
    puts last
    tmp="c:\\tmp\\tmp.htm"

    mec = WWW::Mechanize.new.get(last)
    title = mec.title
    html = mec.root.to_s

    open(tmp,"w"){|g| g.puts html}
      puts `tmail "#{q(title)} #{last}" "clip" "#{tmp}"`
      `firefox "http://b.hatena.ne.jp/add?mode=confirm&url=#{URI.escape(last)}"`
  else
    puts "(#{last})"
  end
  (sleep 2; data=Clipboard.data) until data!=nil && data.size>0 && last!=data
  last=data
end

追記'08/7/29:title内の改行でエラーになるのを修正、エラー処理追加(スキップするだけ)

#!ruby -Ks
require 'uri'
require 'open-uri'
require 'win32/clipboard'
require 'nkf'
require 'mechanize'

include Win32

def q da
  NKF::nkf('-s -m0',da )
end

last=Clipboard.data
($emu=true; puts "[emu-mode, no exec]")  if ARGV[0].to_s.downcase=="-d"

while 1
  if last=~/^http/
    puts last #,"ok?"
    #gets
    tmp="tmp.htm"

    begin
      mec = WWW::Mechanize.new.get(last)
      title = mec.title.gsub("\n"," ")
      html = mec.root.to_s
      # puts"title=[#{title}],html.size=[#{html.size}]"

      open(tmp,"w"){|g| g.puts html}
      if $emu
        puts"[#{q(title)}]"
        puts "http://b.hatena.ne.jp/add?mode=confirm&url=#{URI.escape(last)}"
      else
        puts `tmail "#{q(title)} #{last}" "clip" "#{tmp}"`
        `firefox "http://b.hatena.ne.jp/add?mode=confirm&url=#{URI.escape(last)}"`
      end
    rescue Exception => e
      puts "[error]#{e}"
    end

  else
    puts "(#{last})"
  end
  (sleep 2; data=Clipboard.data) until data!=nil && data.size>0 && last!=data
  last=data
end

追記:'08/8/5 titleの改行処理修正。htmlをコピーすると一時ファイルにしてブラウザで開く(gmailに送ったものを見るため)。

gmail内で文字列を検索できるようにエンコードを変換して送る。そのまま開くと文字化けするので一時ファイルにして開くときはまた変換するということをやってます。

#!ruby -Ks
require 'uri'
require 'open-uri'
require 'win32/clipboard'
require 'nkf'
require 'mechanize'


include Win32

def e da
  NKF::nkf('-e -m0',da )
end

def s da
  NKF::nkf('-s -m0',da )
end

def u da
  NKF::nkf('-u -m0',da )
end

last=Clipboard.data
($emu=true; puts "[emu-mode, no exec]")  if ARGV[0].to_s.downcase=="-d"
tmp="tmp.htm"

while 1
  if last=~/^http/
    puts last #,"ok?"
    #gets

	begin
		mec = WWW::Mechanize.new.get(last)
		title = s(mec.title).gsub(/\s+/," ")
		html = s(mec.root.to_s)
		puts"title=[#{title}],html.size=[#{html.size}]"
		puts"[maybe too big for gmail]" if html.size > 15000000

		open(tmp,"w"){|g| g.puts html}
		if $emu
			puts"title=[#{title}]"
			puts "http://b.hatena.ne.jp/add?mode=confirm&url=#{URI.escape(last)}"
		else
			#puts `tmail-pi "#{s(title)} #{last}" "clip" "#{tmp}"`
			puts `tmail-pi "#{s(title)} #{last}" "-f=#{tmp}"`
			`firefox "http://b.hatena.ne.jp/add?mode=confirm&url=#{URI.escape(last)}"`
		end
	rescue Exception => e
		puts "[error]#{e}"
	end
  elsif last && last.downcase=~/<html/
     data0=last
    (data0=e(last)) if last.downcase=~/charset=euc-jp/
    (data0=s(last)) if last.downcase=~/charset=shift_jis/
    (data0=u(last)) if last.downcase=~/charset=utf-8/

    puts "(open html code)" 
	if $emu
	  puts data0
	else
      open(tmp,"w"){|g| g.puts data0} 
      `firefox #{tmp}`
	end
  else
    puts "(#{last})"
  end
  (sleep 2; data=Clipboard.data) until data!=nil && data.size>0 && last!=data
  last=data
end

(だめだな物によって文字化けする ttp://sankei.jp.msn.com/affairs/crime/080805/crm0808051201007-n1.htm)


clipboardにurlが来たら・・ ubuntu版

|   clipboardにurlが来たら・・ ubuntu版 - たばさの を含むブックマーク はてなブックマーク -   clipboardにurlが来たら・・ ubuntu版 - たばさの

(修正版はこちら http://rubyist.g.hatena.ne.jp/hatecha/20080721/p1

クリップボードのテスト失敗。

aptitude search gtk | less

/ruby

と検索して「libgtk2-ruby」かなあと、

sudo aptitude install libgtk2-ruby

でインストール。クリップボードのテストもできた。


#!/usr/bin/ruby

require 'gtk2'
require 'open-uri'

clip = Gtk::Clipboard;
text = clip.get('PRIMARY');

#puts text.wait_for_text;

last=text.wait_for_text

while 1
  if last=~/^http/
    puts last #,"ok?"
    #gets
    tmp="/tmp/mp.htm"
    open(last){|f|
      open(tmp,"w"){|g| g.puts f.readlines*''}
     # 
      `firefox "http://b.hatena.ne.jp/add?mode=confirm&url="#{last}`
    }
  else
    puts "(#{last})"
  end
  (sleep 2; data=clip.get('PRIMARY').wait_for_text) until data!=nil && data.size>0 && last!=data
  last=data
end

mail,sendmailまだわからない

トラックバック - http://rubyist.g.hatena.ne.jp/hatecha/20080719
カレンダー
<< 2008/07 >>
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
archive Error : RSSが取得できませんでした。