ishiducaの日記 このページをアンテナに追加 RSSフィード

2010-09-13

[]MongoDBをはじめてみました その2 12:31 MongoDBをはじめてみました その2 - ishiducaの日記 を含むブックマーク はてなブックマーク - MongoDBをはじめてみました その2 - ishiducaの日記 MongoDBをはじめてみました その2 - ishiducaの日記 のブックマークコメント

昨日の復習でやってみた。

Twitter検索の結果をそのまま書き込むだけなんだけど。

やっているのはこんな事

  • Twitter検索APIに適当な検索語彙を投げる
  • 返ってきた結果(JSONなテキスト)をPerlのオブジェクト(ハッシュ)に変換する
  • MongoDBのオブジェクトを使って変換したハッシュを書き込む

insert.pl

$ insert.pl \#tkdhoncho

って感じで使う

#!/usr/bin/env perl
use strict;
use warnings;
use URI;
use LWP::UserAgent;
use MongoDB;
use JSON;
use Data::Dumper;

@ARGV or die qq(not found query\n);

my $uri = URI->new( 'http://search.twitter.com/search.json' );
$uri->query_form( "q" => $ARGV[0] );

my $ua = LWP::UserAgent->new;
my $response = $ua->get( $uri );
$response->is_success or die $response->status_line;

my $json = decode_json( $response->{_content} );

my $connection = MongoDB::Connection->new( host => 'localhost', port => 27017 );
my $database   = $connection->mydb;
my $collection = $database->things;

my $id   = $collection->insert($json);
my $data = $collection->find_one({ _id => $id });

print Dumper $data;

exit 0;

mongo shellで確認

> db.things.find();
{ "_id" : ObjectId("4c8d9057a74100ed03000000"), "page" : NumberLong( 1 ), "query" : "%23tkdhoncho", "completed_in" : 0.024583999999999998, "refresh_url" : "?since_id=24333258105&q=%23tkdhoncho", "results_per_page" : NumberLong( 15 ), "max_id" : NumberLong( 2.43333e+10 ), "results" : [
	{
		"source" : "<a href="http://twitter.com/">web</a>",
		"to_user_id" : null,
		"geo" : null,
		"profile_image_url" : "http://a0.twimg.com/profile_images/428821568/876_2_normal.png",
		"from_user_id" : NumberLong( 422216 ),
		"iso_language_code" : "ja",
		"created_at" : "Sat, 11 Sep 2010 14:23:28 +0000",
		"text" : "散歩がてらに立ち寄ったというのに完全にスルーしてた #tkdhoncho:「上越のニュースサイト:上越タウンジャーナル » Blog Archive » 上越のご当地グルメ!?サメカレー新登場」 http://j.mp/b10Z70",
		"metadata" : {
			"result_type" : "recent"
		},
		"id" : NumberLong( 2.41979e+10 ),
		"from_user" : "ishiduca"
	}
], "since_id" : NumberLong( 0 ) }

書き込みは成功している。数値は NumberLong( xxx ) って書き込まれてるんですね。

GalinaGalina2013/02/02 13:52That takes us up to the next level. Great piosntg.

qitqxoraqqitqxoraq2013/02/04 13:50j4iVkd <a href="http://zgvbeoiqthbt.com/">zgvbeoiqthbt</a>

gqmgcgcyqlgqmgcgcyql2013/02/04 20:25SPLwIf , [url=http://kxfbcpbfzdqr.com/]kxfbcpbfzdqr[/url], [link=http://ogxostzwzdko.com/]ogxostzwzdko[/link], http://blrvjetftbmv.com/

トラックバック - http://perl.g.hatena.ne.jp/ishiduca/20100913