2008年2月11日

[ruby-list:44602] アーティストのニュースを自動取得


ども。はじめまして、soraと言います。

c,c++ 出身の ruby 初心者です。

ここ数日、このMLを拝見させていただき、
るびきちさんと kabu and ruby さんの暖かい
メールのやり取りとか、その他の有益な内容

など感動しまくりです。

一人で勉強するより、やっぱこういうの良いですね。

んで、調子こいて僕も便乗させてください。


今回、itunes 絡めた ruby のツールを作成しました。
いろいろとご指摘いただければ幸いです。

使い方などは、当方のブログにて記載しました↓

[soraなりの日々]
http://sora2hs.blog70.fc2.com/blog-entry-247.html

++--------++--------++--------++--------++--------++
Keep making things, that's my project for life.

e-mail : sora.hs@xxxxx
blog http://sora2hs.blog70.fc2.com/
++--------++--------++--------++--------++--------++

#!/usr/bin ruby -Ku
#
# music_news.rb -
#
# The source code packaged with this file is Free Software
#
# Copyright (C) 2008 by Takafumi Kawano <sora dot hs at gmail dot com>.
#
require 'kconv'
require 'rubygems'
require 'rbosa'
require 'mechanize'

class MNewsLoad
# @@gurl = 'http://www.google.co.jp/webhp?hl=ja'
@@gurl = 'http://www.google.com/'
@@gcontent = 'q'

def initialize(url)
@url = url
end

def search(artist)
@agent = WWW::Mechanize.new()
@agent.user_agent_alias = 'Mac Safari'
page = @agent.get(@@gurl)

form = page.forms.with.name("f").first
form.q = artist + ' site:' + @url
@agent.submit(form)
end

def get(url)
@agent.get(url)
end
end

class ITunes
def initialize
@itunes = OSA.app('iTunes')
end

def get_current_track
track = @itunes.current_track
end
end

class News
def initialize(engine)
@engine = engine
if @engine == 0 then
@load = MNewsLoad.new('http://www.excite.co.jp/music/news/')
else
@load = MNewsLoad.new('http://music.yahoo.co.jp/music_news/')
end
@itunes = ITunes.new()
@track = @itunes.get_current_track
end

def start
loop do
self.get_news
sleep(5)
end
end

def get_news
puts ''
puts ''
puts ''
puts ''
puts ''
puts '----------------------------------------'
print Kconv.kconv(@track.name, Kconv::UTF8) + "\n"
print Kconv.kconv(@track.artist, Kconv::UTF8) + "\n"
puts @track.duration
puts @track.date_added.to_s

news = @load.search(@track.artist)
news.links.each do |link|
if @engine == 0 then
if %r! http://www.excite.co.jp/music/news/story/! =~ link.href
page = @load.get(link.href)
doc = page.root
print Kconv.kconv(doc.search('.news_topicstitle').inner_text, Kconv::UTF8) + "\n"
print Kconv.kconv(doc.search('.news_newstext').inner_text, Kconv::UTF8) + "\n"
print Kconv.kconv(doc.search('.news_newstext_emp').inner_text, Kconv::UTF8) + "\n"
sleep(20)
end
else
if %r! http://music.yahoo.co.jp/music_news/d/! =~ link.href
page = @load.get(link.href)
doc = page.root
print Kconv.kconv(doc.inner_text, Kconv::UTF8) + "\n"
sleep(40)
end
end

if self.is_changed? then
break
end
end
end

def is_changed?
track = @itunes.get_current_track
if @track.artist != track.artist then
true
else
false
end
end
end

s_engine = 0 # 0=excite, 1=yahoo
News.new(s_engine).start

投稿者 xml-rpc : 2008年2月11日 00:11
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/69662
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。