Hatena::Grouprubyist

たばさの RSSフィード

10/06(月) 2008

発見人生ぽいなにか

| 発見人生ぽいなにか - たばさの を含むブックマーク はてなブックマーク - 発見人生ぽいなにか - たばさの

暇なのでrssを使ってランダムにブログを見たい。などという時に。


これを使います。

http://builder.japan.zdnet.com/sp/ruby-doukaku-panel/story/0,3800086254,20375937,00.htm

rssjoin.rbの前半と後半を以下のように書き換え,-urlオプションでurlリストを出力するようにします。

1から4行

require 'rss'
require 'optparse'

opt = OptionParser.new
opt.on('-url') {|v| $urlmode=v }
opt.on('-r') {|v| $rand=v }
opt.parse!(ARGV)

rss_feeds = []
rss_urls = []

35行目


case 
when $urlmode
  if $rand
    puts rss_urls.sort_by{rand}
  else
    puts rss_urls
  end
else
  puts rss.to_s
end
$stderr.print rss_urls.size

rss-browse.rb (ngのところとfirefoxのところは書き換える)


require 'optparse'

opt = OptionParser.new
$timer=5
$from=1
opt.on('-t 5') {|v| $timer=v.to_i }
opt.on('-f from') {|v| $from=v.to_i }
opt.on('-r') {|v| $random=v }
opt.on('-silent') {|v| $silent=v }
opt.parse!
if ARGV==[]
  puts "output rss or urls (unique)"
  puts opt.to_s
  exit
end

$stderr.puts "timer:#{$timer}"

open(ARGV[0]){|f|
  $links=f.readlines.map{|i|i.chomp}
 # p links
}

$stderr.puts "links:#{$links.size}"

# 書き換える。
ng="[tmpなど適当なパス]/rssgetend.txt"

open(ng){|f|
  $nglinks=f.readlines.map{|i|i.chomp}
 # p links
}
$links=$links-$nglinks

def append ng,u
  open(ng,"a"){|f|
    f.puts u
  }
end

$links=$links.sort_by{rand} if $random
$stderr.puts "new:#{$links.size}"
$links.each_with_index{|i,index|
  next if $from>index+1
  `firefox "#{i}"`
  append ng,i
  if $silent
    $stderr.print "."
  else
    $stderr.puts "#{i} #{index+1}/#{$links.size}"
  end
  sleep $timer
}


rssget_and_browse.rb

これはEUCで保存する。


#ruby -Ke
require 'uri'
require 'nkf'
$KCODE = 'EUC'

# ファイル名は適当なものに書き換える。
rsslist="list.txt"

# blog検索keywordリスト書き換える。半角空白か改行で区切る。
# 漢字コードでエラーの場合は%w<...>を%w(...), %w|...|などに変えてみる。
key=%w<
ティッシュ姫 ジャニーズ
piano ピアノ
>

# rssのリストを書き換え
puts system('ruby rssjoin.rb -url -r http://sankei.jp.msn.com/rss/news/points.xml "http://rss.asahi.com/f/asahi_newsheadlines" >#{rsslist}')

key.each{|j|
  k=URI.escape(j)
  print system('ruby rssjoin.rb -url -r "http://blog.search.goo.ne.jp/search_goo/result/?MT='+k+'&from=web&da=all&dc=10&st=time&tg=all&ts=all&fs=all&rm=1&rss=2" >>#{rsslist}')
}

# -t40で40秒おき。
puts system('ruby rss-browse.rb #{rsslist} -t40 -silent -r')


これらを同じフォルダに保存し、

ruby rssget_and_browse.rb

で実行。

browseはCtrl-Cで中断したら

ruby rss-browse.rb (rsslistの名前) -t40 -silent -r

で再開。

一度開いたものはlog(ngで指定したファイル)に残して開かないようにした。たまに消さないとどんどんでかくなる。

firefox2の場合、about:configopenなどを検索

browser.link.open_external

の値を1にしたりするとタブが増えなくていいかも。そうしたくないときは切り替えなくてはならないのでどうしたものか。


あと、cmdを使う都合で、url%CD%などwindows環境変数があると置き換えられてエラーになる。


追記:

rss-browse.rb実行時のランダムオプション付け忘れていたので修正。

追記:

ブラウザを先に立ち上げておかないとだめな気がします。

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