Hatena::ブログ(Diary)

jiroの日記 このページをアンテナに追加 RSSフィード

2009-01-01

[]YouTubeの映像をまとめてMP4でDLしてiPod touchで見る

上の動画をiPodで見たくなった。ということで、まとめてDLするスクリプトを書いてみた。すごいアドホックな処理なので、汎用性とか全く意識してません。

使い方は、保存したい題名とvideo_idをタブセパレーテッドなファイルに書いておく。下のような感じで。ファイル名はlist.tsvとでもしておきましょう。

ドラッグフック	Ik3zwrMjjHE
ファルカンフェイント	Q-KpVcBCc1Q
ラーボデバッカ	SCW5ymYssp0

で、下のようにコマンドを実行するだけ

ruby fetch_youtube_mp4.rb list.tsv

ソースは貼付けておきます。

#/usr/bin/env ruby

# fetch_youtube_mp4.rb

require 'open-uri'

ar = []
ARGF.each do |line|
	info = line.split(/\t/)
	ar.push info
	throw 'format error' if info.length != 2
	info[1].chomp!
end
ar.each do |info|
	puts "fetching: #{info[0]} #{info[1]}"
	t = nil
	open("http://jp.youtube.com/watch?v=#{info[1]}") do |f|
		f.each_line do |line|
			next unless line =~ /var swfArgs = .*"t": "([^"]*)"/
			t = $1
		end
	end
	url = "http://www.youtube.com/get_video?fmt=18&video_id=#{info[1]}&t=#{t}"
	puts url
	open(url) do |f|
		open("#{info[0]}.mp4", 'w') do |mp4|
			mp4.write f.read
		end
	end
end

2008-06-13

[]バッチ処理でWebページをPDFに変換する

WebページをPDFにバッチ処理で変換するなんてことができたらいいなぁと思っていて、いろいろ調べました。最初はAirを使ってなにかできないかなとか。


でも、調べていくと、LivePDFプリンタAPIなんていうものがあるのを発見しました。ということはOLEを使えば自動印刷ができる!?

ということでやってみました

#!ruby -Ks
require 'win32ole'

Printer = WIN32OLE.new('LivePDF.Printer')
shell = WIN32OLE.new('Shell.Application')
OLECMDEXECOPT_PROMPTUSER = 1    #印刷ダイアログ表示
OLECMDEXECOPT_DONTPROMPTUSER = 2 #印刷ダイアログ非表示
OLECMDID_PRINT = 6              #印刷
OLECMDID_PRINTPREVIEW = 7       #印刷プレビュー

def url2PDF(ie, url, savePath)
  Printer.SetFilePath(savePath)

  # トップページ
  ie.Navigate url
  while ie.Busy
    puts "Connecting #{url}"
    sleep 1
  end

  # デフォルトのプリンターでいきなり印刷されちゃうので
  # とりあえずコメントアウトしておきます。
  # ちゃんと理解して下の行のコメントをはずしてください
  #ie.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
  
  # ファイルができるまでまつ
  while !File.exist?(savePath)
    puts "Printing #{url}"
    sleep 1
  end
end

ie = WIN32OLE.new("InternetExplorer.Application")
url2PDF(ie, "http://www.yahoo.co.jp", "c:\\yahoo.pdf")
url2PDF(ie, "http://www.google.com", "c:\\google.pdf")
ie.Quit()

デフォルトのプリンタで印刷するようにコーディングされています。間違って実際の紙を出力してしまわないように、ie.ExecWBの所をコメントアウトしてます。ここのコメントアウトを外せば印刷してくれます。


この機能を使えば、WikiにかかれたものをPDFにまとめて出力したり、いろいろできることが増えます。明日会社でPDF出力してみよう。

2007-10-03

[]Railsでロガーにタイムスタンプを追加する

RubyのデフォルトのLoggerはログのフォーマットに時間等が入っているのに、なぜRailsで使用するLoggerはタイムスタンプが出ていないんだろうと調べていて、id:elm200がまさにこの問題を解決してくれていました。id:elm200ありがとうございます。参考にさせていただきます。

2007-09-30

[]Railsでタイムゾーンを日本にする

単純だけど、envinronment.rbの最後に

ENV['TZ'] = 'Asia/Tokyo'

とする。こうすれば、DBへの接続にも日本のタイムゾーンを使用してくれる。

日本向けのサービスならこれでOKそう

2007-07-14

[]RefeがOSXで文字化け

Rubyの環境を整えようといろいろ環境をいじっていたんだけど

RefeがOSXで文字化けしてしまう。

対処方法は

http://fragments.g.hatena.ne.jp/samurai20000/20060326/1143380535

require 'iconv'

を追加して22行目を

Iconv.iconv("UTF-8","EUC-JP", str)に変更

これで文字化けなく使えるようになった。

だそうで、、、