2011年9月6日火曜日

gmongoとROMEでRSSフィードのエントリをmongodbに格納する

gmongoとROMEでRSSフィードのエントリをmongodbに格納するには、以下のコードを実行します。
@Grab(group='com.gmongo', module='gmongo', version='0.8')
@Grab(group='rome', module='rome', version='1.0')
import com.mongodb.*
import com.gmongo.*
import com.sun.syndication.feed.synd.*
import com.sun.syndication.io.*

uri = "http://feeds.dzone.com/dzone/frontpage?format=xml"
SyndFeed feed = new SyndFeedInput(false).build(
  new InputStreamReader(new URL(uri).openStream(), "UTF-8")
)

mongo = new GMongo("localhost", 27017)
db = mongo.getDB("local")
col = db["entries"]
// ユニークインデックスなければ作成する
col.ensureIndex(
  new BasicDBObject([feedTitle:true, link:true]),
  new BasicDBObject([unique:true])
)
col.setWriteConcern(WriteConcern.NORMAL);
// RSS/Atomのエントリーをコレクションに追加
for( entry in feed.entries ){
  wr = col.insert([feedTitle:feed.title, link:entry.link,
    publishedDate:entry.publishedDate, title:entry.title])
  println "error:" + wr.getError()
}

動作環境
Groovy 1.8.0, JDK6 Update22, gmongo 0.8, MongoDB 1.8.2

関連情報
gmongoのウェブサイト
https://github.com/poiati/gmongo

groovyとMongoDBのまとめ

0 件のコメント:

コメントを投稿