flvpop
一部のブログ記事の影響で動画サイトの利用頻度が増えつつあるため,作業しながら視聴しやすいようにプレイヤだけポップアップさせるのを書いた。
class FlvPop @usg = 'usage: flvpop url [width [height]]' @dic = { 'youtube.com/(?:watch\?v=|v/)([-\w]+)' => 'src="http://www.youtube.com/v/\1"', 'youku.com/v_show/id_([^.]+)' => 'src="http://player.youku.com/player.php/sid/\1/v.swf"', 'mofile.com/([^/]+)' => 'src="http://tv.mofile.com/cn/xplayer.swf" FlashVars="v=\1&autoplay=0"', } def self.pop url = getclip, w = 480, h = 400 unless url echo @usg return false end url = url.sub(%r[^\w*://], '') if prm = match(url) system %[mshta "about:#{<<-HTA.tr!("\"\n","' ")}"] <head><title>flvpop - #{url}</title> <style>body { margin: 0px; padding: 0px }</style></head> <body scroll="no"><embed type="application/x-shockwave-flash" #{prm} quality="high" width=#{w} height=#{h} /></body> <script>resizeTo(#{w + 12},#{h + 30})</script> HTA true else echo "error: no match for #{url}", @usg false end end def self.match url s = url.clone @dic.each_pair{|r, t| return s if s.sub!(/^.*#{r}.*$/,t) } nil end def self.echo *msgs msgs = msgs.map{|m|"echo #{m.gsub(/[&()\[\]{}^=;!'+,`~]/,'^\&')} &&"}*' ' system "cmd /c #{msgs} pause" end def self.getclip `mshta "javascript:#{<<-JS.gsub!(/\n/,'')}"` new ActiveXObject('Scripting.FileSystemObject') .getStandardStream(1) .write(clipboardData.getData('text')); close() JS end end FlvPop.pop *$* if $0 == __FILE__
WIN32OLEでIEを操ってとか考えてスクリプトにしたが結局mshtaに頼り切り。
そもそもHTAで作るべきだったか…。