Hatena::Grouprubyist

たばさの RSSフィード

11/25(火) 2008

clipboardにurlが来たら内容をメールで送ってはてブ 修正

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

(履歴: http://rubyist.g.hatena.ne.jp/hatecha/?word=clipboard

はてなブックマークが更新されたので合わせて書き換え。addurlが変わり、idがないと動かないようなので、idpathの部分は書換えます。mailについても前述の通り。

ubuntuは未テスト。(最近使ってないので)


共通部分

# hatebconfirm.rb
def hatebconfirm id
	"http://b.hatena.ne.jp/#{id}/add.confirm?url="
end

/append?http...でもよいようで。


win


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

include Win32

# idを書き換える
myId ="hatecha"
confirmUrl =hatebconfirm myId

class Object
  alias old_puts puts
  def puts a
    old_puts a
    $stdout.flush
  end
end


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

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

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

class Time
  def form
    a=self
    "#{a.year}#{format "%02d",a.month}#{format "%02d",a.day}.#{format"%02d",a.hour}#{format "%02d",a.min}#{format"%02d",a.sec}"
  end
end

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

while 1
  if last=~/^http/
    puts last #,"ok?"
    #gets
    tmp="d:\\path\\clip#{Time.now.form}.htm"

	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 "#{confirmUrl}#{URI.escape(last)}"
		else
			puts `tmail "#{s(title)} #{last}" -f=#{tmp} #{tmp}`
			`firefox "#{confirmUrl}#{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(tmptmp,"w"){|g| g.puts data0} 
      `firefox #{tmptmp}`
	end
  else
    puts "(#{last})"
  end
  sleep 5
  (sleep 5; data=Clipboard.data) until data!=nil && data.size>0 && last!=data
  last=data
end
__END__



ubuntu

#!/usr/bin/ruby

require 'uri'
require 'gtk2'
require 'open-uri'
require 'hatebconfirm'

clip = gtk::clipboard;
text = clip.get('primary');

myId ="hatecha"
confirmUrl =hatebconfirm myId


#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*''}
     # puts `mail -t -s "cache:#{last}" "clip" "#{tmp}"`l
      `firefox "#{confirmUrl}#{URI.escape(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
__END__

エディタあちこちでインデントが不統一

トラックバック - http://rubyist.g.hatena.ne.jp/hatecha/20081125
カレンダー
<< 2008/11 >>
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
archive Error : RSSが取得できませんでした。