仕事中、一瞬の隙も見逃さずに情報収集できるRubyワンライナーとスクリプト
情報収集はビジネスマンとしての基本である。しかし普段シェルで作業する者としては、毎回ブラウザを立ち上げる時間すら不毛である。よって、シェルから一瞬で情報収集できるRubyのワンライナーを書いた。
上からYahoo, はてな, Naverまとめ, 2ちゃん
$ ruby -r open-uri -e 'open("http://www.yahoo.co.jp").read.scan(/topics.+?>([^<]+?)</) {|m| puts m}'
$ ruby -r open-uri -e 'open("http://b.hatena.ne.jp/hotentry").read.scan(/entry-link.+>(.+?)</) {|m| puts m}'
$ ruby -r open-uri -e 'open("http://matome.naver.jp/").read.scan(%r{matomename.+?-->(.+?)<!-}m) {|m| puts m}'
$ ruby -r open-uri -e 'open("http://uni.2ch.net/newsplus/").read.scan(/<a.+?>\d+?:\s(.+?)</) {|m| puts m}' | nkf -w
あれ?
普通にブラウザ開いた方が早いw
なので
コマンド一発で情報収集できるスクリプトを書いた
news
#!/usr/bin/env ruby require 'open-uri' require 'nkf' defined_sites = { 'yahoo' => { 'url' => 'http://www.yahoo.co.jp', 'regexp' => /topics.+?>([^<]+?)</ }, 'hatena' => { 'url' => 'http://b.hatena.ne.jp/hotentry', 'regexp' => /entry-link.+>(.+?)</ }, 'naver' => { 'url' => 'http://matome.naver.jp/', 'regexp' => /matomename.+?-->(.+?)<!--/m }, '2ch' => { 'url' => 'http://uni.2ch.net/newsplus/', 'regexp' => /<a.+?>\d+?:\s(.+?)</ } } class Site attr_accessor :url, :regexp def initialize yield self end def fetch open(@url) do |f| f.read.scan(@regexp) {|m| puts NKF.nkf('-w', m.join)} end end end site_names = ARGV.empty? ? defined_sites.keys : ARGV sites = [] site_names.each do |site_name| raise 'not defined' unless defined_sites.keys.include? site_name sites << Site.new do |s| s.url = defined_sites[site_name]['url'] s.regexp = defined_sites[site_name]['regexp'] end end sites.map(&:fetch)
こいつに実行権限を与えて、pathを通して、newsコマンド
$ news 東電社長 時効主張せずと明言 鳩山元首相、招かれ訪中へ 高2自殺 前日に平手30-40発? JTB 企業の体力測定事業参入 魔女狩りで禁固20年 ネパール 本田にミランがオファー準備 安藤美姫がトヨタ自動車退社 金爆・鬼龍院のNSC芸人時代 今日の話題(27件) 一番福へ全速力 ...
キタ!
yahooとhatenaだけ表示したければ
$ news yahoo hatena
対象サイトを追加したければ、ハッシュ(defined_sites )に追加すればOK!
これで一瞬の隙も見逃さずに情報収集する「できるビジネスマン」になれる!
※注 ネタです
※追記 Rubyワンライナーについてまとめた
Rubyワンライナー入門