2013-05-07[n年前へ]
■Youtube動画をMP3ファイルとして保存するRuby+Waitrコードを書いてみよう!
Youtube動画をmp3ファイルとして保存するRubyスクリプトを、(ブラウザ操作用ライブラリである)Waitrを使って書いてみました。Youtube 動画URLからMP3ファイルを生成するWEBサイトYouTube mp3へのアクセス・作業を、Ruby/Watirで自動化するコードです。
まず、下記コードを、たとえばyoutube2mp3.rbという名前で保存します(ちなみに、下記コードはFirefoxを操作するコード例です)。
require 'rubygems' require 'watir-webdriver' # sudo gem install hoge profile = Selenium::WebDriver::Firefox::Profile.new profile['browser.download.dir']="hoge" # 保存先 profile['browser.download.folderList']=2 profile['browser.helperApps.neverAsk.saveToDisk']="audio/mpeg" def url2mp3( url, b ) b.text_field( :id => 'youtube-url' ).set url b.button( :id => 'submit' ).click Watir::Wait.until(60,2) do b.text.include? "successfully" end url = b.links.select{ |link| /get/=~link.href } url[0].click if url.length == 1 sleep 20 # wait for "file save" end b = Watir::Browser.new :firefox, :profile=>profile b.goto 'http://www.youtube-mp3.org/' b.wait open( ARGV[0] ) do |file| file.readlines.each { |url| url2mp3( url.strip, b ) } end b.closeその上で、MP3ファイルとして保存したいYoutubeリンクを(各行に動画URLとなっている)テキストファイルとして保存します。つまり、(中身が)こんな具合になっているテキストファイルを作ります。
http://www.youtube.com/watch?v=s_lCJsJPUeY http://www.youtube.com/watch?v=4YhEAn0XPzcこのファイルが、たとえば、list.txtという名前にしたのであれば、あとは
ruby youtube2mp3.rb list.txtと(Rubyスクリプトを)実行すると、Youtube動画の音声部分が、MP3ファイルとして自分のPCに保存されていきます。
「使うのに手間が掛かって面倒だ」と思うWEBサイト・作業があれば、こんな風に(あなたを楽にする)自動化スクリプトを書いてみるのはいかがでしょうか。
2015-12-30[n年前へ]
■富士ゼロックス企業広報誌「電子版GRAPHICATION(2)」をPDF化するスクリプト
富士ゼロックスの企業広報誌「グラフィケーション(GRAPHICATION)」は、掛け値無くグラフ誌として貴重で素晴らしい雑誌だった。時代の流れか他事情かはわからないけれど、数ヶ月前に「電子版で再スタートする」という通知がされ、数日前から電子版が閲覧できるようになった。
以前、グラフィケーションについて、「電子版には移行しない。作成にずっと携わってきた編集者が引退する時は閉刊することになるだろう」と聞いたことがあるような気がする。「もったいない」と強く感じ覚えがある。
今回の電子版は、タイトルがGraphication(2)と変わっている。末尾の編集者サインも、今回は以前の(T)ではなくなっている。いつも時代が変わっていくと同じように、グラフィケーションも少しづつ姿を変えているんだろう。
…それはともかく、「電子版でもいいからグラフィケーションは残って欲しい」と強く願っていたはずの自分が、タブレットやWEB表示では不便を感じる体になっていた。そこで、仕方がなく、Ruby / Watirでスクリプトを書いてPDFで保存して読むことにした(OCRは富士通のScanSnapツールに後処理させた)。一回、PDF化してしまえば、PDFで環境依存少なく読むこともできるし、(必要に応じて)紙としてプリントアウトして読むこともできる。
今回書いたスクリプトは、一回ブラウザにレンダリング(ラスタライズ)させてから・OCRを掛けているのは無駄この上ない。しかし、そんな問題を解決するようなスクリプトは、おそらく(私と同じような)グラフィケーション愛読者が一瞬のうちに作成してしまうに違いない。
何はともあれ、グラフィケーションが新たに・続いてくれることが、何より嬉しい。
下記スクリプトは、起動するとFirefoxを立ち上げます。その後、しばらくしてスクリーンキャプチャをしつつページを自動でめくっていくので、FirefoxのウィンドウサイズをA4縦サイズに合うような(画面サイズが許す限りの最大の)大きさにしてください。…また、スクリプト中のURLには「号数」が埋め込まれているので、その数字を書き換えておきます。また、ページ範囲も埋め込まれているので、そのページ番号最大値も書き換えて下さい。
require 'rubygems' require 'watir-webdriver' b = Watir::Browser.new :firefox sleep 10 [*1..63].each do |i| puts i b.goto 'https://graphication2.s3.amazonaws.com/html/001/index.html#/spreads/'+i.to_s sleep 5 b.driver.save_screenshot './capture/'+(100+i).to_s+'.png' sleep 1 end b.close