ようこそゲストさん

chibilog

2009/04/08(水) Rubyで画像収集でも

はてブ情報 はてブに登録 はてブ数 2009/04/08 24:55 パソコン

Rubyのhpricotを使って画像系のサイトにアクセスして、HTMLの解析をして画像を保存するスクリプトを書いてみた。おかげで画像系のサイトを徘徊するのが便利になったので晒しておきます。サイトを徘徊ってか、ローカルに画像を保存しちゃうから徘徊しなくなって便利になったってことだけど・・・それにどうせ徘徊して手動で保存なんてするよりはスクリプトで一気にやっちゃえみたいな。ちょっとグレーなツールな気もする・・・

#!/usr/bin/env ruby

require 'rubygems'
require 'hpricot'
require 'open-uri'
require 'kconv'

base_path = '/Users/chibi/img/'
urls = [
  "",
]

$stdout.sync = true

def get_image(url, path)
  puts url
  puts path

  open(path, 'wb') do |file|
    open(url) do |data|
      file.write(data.read)
    end rescue return false
  end
end


urls.each do |url|
  image_urls = []
  
  doc = Hpricot(open(url).read)
  
  title = (doc/:title).inner_html.toutf8.strip
  #puts title
  save_path = File.join(base_path, title)
  Dir.mkdir(save_path) unless File.exist?(save_path)

  (doc/"a[@href$='.jpg']").each do |link|
    #image_title = link.inner_html.toutf8
    image_url = link[:href]
    image_urls << image_url
    #print image_title, "¥t", image_url, "¥n"
  end

  image_urls.each do |image_url|
    save_file = File.join(save_path, File.basename(image_url))
    
    if not File.exist?(save_file) then
      get_image(image_url, save_file)
    elsif File.zero?(save_file) then
      get_image(image_url, save_file)
    #else
      #puts "skip"
    end
  end
end

__END__

urlsの中に画像を収集したいサイトのURIを記述すればおk。もちろん複数の指定もおk。これはMacで使ってるんだけど、/Users/chibi/imgというディレクトリに指定したサイトの名前のディレクトリを作って、そこにガツガツそのサイトの画像を保存していく。もちろんこのツールを1日に何回も実行することになると思うので、既に画像が保存済みの場合はスキップするようにしてある。また画像の保存にたまに失敗することもあるので、サイズが0なものとかは次の実行時にもう1度取りに行くようにしてある。なお、HTMLの解析は、.jpgなリンクだけをターゲットにしてる。

基本的には問題無いんだけどlivedoorとかに対しては失敗に終わってるんだよな・・・アクセス制御かけられたみたいな挙動になる。このスクリプト回した後、取得に失敗してるから直接その画像のURIにブラウザからアクセスするとアクセス制御かけられてるような挙動になってる。何か違う問題な気もするけどまだ解決してない。しかしRubyなんてすげー久しぶりに使ったな。たまには書いておかないと忘れるなってことで。僕はPerlとPythonが好きなのでRubyって全然使わないんです。


参考サイト



名前:  非公開コメント   

URL(任意):
  • TB-URL  http://chibilog.name/0357/tb/

2009/04/08(水) MacBookのキーボードが効かなくなったww

はてブ情報 はてブに登録 はてブ数 2009/04/08 21:48 戯言

DoubleCommandってゆーキーリマップソフトをインストールしたらキーボードが何も反応しなくなったw てか、悪いのDoubleCommandじゃなくて、他にもキーリマップのソフトをインストールしていたので、こいつと干渉したっぽい。そう僕が悪いんです・・・とりあえず、キーボードが何も効かないのはマズイので、Windowsで困った時はリブートってのが定石だし、Macも似たようなもんだろうって思ってリブートしてあげました。でもキーボードが効かない・・・更に状況は悪化していて、ログインすら出来ない。そうログイン画面でユーザとパスワードを入れないといけないんだけど、打てない・・・

まぁ、スクリーンキーボードで打てばいいやって思ってたら無いし。じゃあSSHで繋ぐかって思ったら、立ち上がって無いみたいだし・・・ここまで来てようやく危機的状況ってことに気づきましたよ。本当にこれやばいんじゃね?ってマジで思った。でも待てよ、Mac様ってUnixだしシングルユーザモードとかあんだろ。セーフモードとか何でもいいけど、要はDoubleCommandさえ有効にならなければ、キーボードはちゃんと効いてくれるわけで。それで調べてみたところ、Shiftキーを押しながら電源を入れればセーフモードで立ち上げられるとのこと。よし先ずはこいつに託すか。

林檎マークのところで5分くらい待たされたけど、無事にセーフモードで立ち上がりました。ログイン画面が出てきて恐る恐るキー入力してみたところちゃんと反応してくれた。勝った・・・勝ったぞー!ふぉぉぉおーーー!!みたいな雄叫びをあげてログインしました。ログイン後は先ずターミナルを立ち上げて以下のようにDoubleCommandを削除。

$ sudo rm -rf /Library/PreferencePanes/DoubleCommandPreferences.prefPane
$ sudo rm -rf /Library/StartupItems/DoubleCommand
$ sudo rm -rf /Library/Receipts/DoubleCommand-1.6.8.pkg

まぁ、これで大丈夫だろうってことでリブート。今度は通常通りの立ち上げ。見事にキーボードはちゃんと効くようになってくれた。その後は、システム環境設定のパネルからDoubleCommandが削除されていることを確認っと。あとは、今後の為にということで、Applejackをインストール。備えあれば憂いなし。これで無事に復旧してくれました。

とりあえず、DoubleCommandだけど、ちゃんとキーリマップソフトが他に入ってる場合は絶対に入れないでみたいなことが書いてあるらしい。僕は当然ながら何も読まない主義なので知らなかったけど。まぁ、普通に考えてキーリマップソフトを何個も入れるってのは危険だよね。本当、READMEとかマニュアルって読むの大嫌いだからな・・・もっとREADMEとかマニュアルも今風にならないかね。2次元の萌えなロリコンキャラクターが漫画で解説してくれる感じで。これなら確実に読む。


1: 2009年04月09日(木) 午後3時29分

ノートでそれやったら死亡w

2: chibi 2009年04月09日(木) 午後7時22分

こんな風に書いてるけど、キーボードが効かなくなった時はマジで焦ったことは内緒の話w


名前:  非公開コメント   

URL(任意):
  • TB-URL  http://chibilog.name/0356/tb/