Pythonでtwitterの情報を取得する

必要なモジュール

インストール

python-twitterを入れれば他のモジュールも入ってくる模様

$ sudo easy_install python-twitter

アプリケーションを登録する

接続に必要なトークンを取得するために、My applications | Twitter Developersで作成するアプリケーションを登録する。

作成したアプリケーションページの「Details」の一番下にある、 「create my access token」を押してアクセストークンを作成しておく。

URLの入力があるけど、後から変更できるので仮のもので問題ない。

チュートリアル

トークン管理ファイル

生成したトークン等を保存するためにseccret.pyを作成します。

  • secret.py
twDict = {
    'consumer_key' : 'xxxxxxxxxxxxxxxxxxxx',
    'consumer_secret' : 'xxxxxxxxxxxxxxxxxxxx',
    'access_token_key' : 'xxxxxxxxxxxxxxxxxxxx',
    'access_token_secret' : 'xxxxxxxxxxxxxxxxxxxx'
}

自分のツイートを取得する

ここから実際の処理を書いていきます。

まずは、自分のツイートを取得する。 これで直近20件のツイートが取得できます。

import twitter
import secret

api = twitter.Api(
    consumer_key = secret.twDict['consumer_key'],
    consumer_secret = secret.twDict['consumer_secret'],
    access_token_key = secret.twDict['access_token_key'],
    access_token_secret = secret.twDict['access_token_secret']


)

# twitter.Statusオブジェクトが返ってくる
status = api.GetUserTimeline('mofumofu3n')                                                           for tweet in status:
    print tweet.text

twitter.Status

以下でドキュメントの確認ができる。

$ pydoc twitter.Status
twitter.Status = class Status(__builtin__.object)
 |  A class representing the Status structure used by the twitter API.
 |  
 |  The Status structure exposes the following properties:
 |  
 |    status.created_at // 作成日
 |    status.created_at_in_seconds # read only
 |    status.favorited
 |    status.favorite_count
 |    status.in_reply_to_screen_name
 |    status.in_reply_to_user_id
 |    status.in_reply_to_status_id
 |    status.truncated
 |    status.source
 |    status.id // ツイートID
 |    status.text // ツイート内容
 |    status.location
 |    status.relative_created_at # read only
 |    status.user // ユーザー
 |    status.urls // 
 |    status.user_mentions
 |    status.hashtags
 |    status.geo
 |    status.place
 |    status.coordinates
 |    status.contributors

ドキュメント

python-twitterのドキュメント読むためには下記のようにする。

英語だけど・・・

$ pydoc twitter.Api

mongoDBの操作

使用中のDBの確認

> db

存在するデータベースの確認

> show dbs
gamedb  0.203125GB
local   (empty)
test    0.203125GB

ドキュメントの作成

  • gamedbのtestコレクションにドキュメントを作成する。
  • insert時にコレクションが存在しない場合、自動で生成される
  • コレクションの構成は以下のようにする
name  : ユーザ名
score : 得点
date  : 日付(UNIXTIME)
  • コレクションを作成する
> use gamedb # DBを変更
switched to db gamedb
> db
gamedb
> db.test.insert({"name":"hoge", "score":1111, "date":1371961245}) # ドキュメント作成

ドキュメントの参照

  • コレクションに含まれる全ドキュメントを参照
> db.test.find()
{ "_id" : ObjectId("51c678406657d13ae3f6dafb"), "name" : "hoge", "score" : 1111, "date" : 1371961245 }
  • nameにfugaを指定してドキュメントを参照
> db.test.insert({"name":"fuga", "score":1111, "date":1371961245}) # ドキュメントを追加
> db.test.find({"name":"fuga"}) # 条件を指定して参照
{ "_id" : ObjectId("51c678e56657d13ae3f6dafc"), "name" : "fuga", "score" : 1111, "date" : 1371961245 }
  • nameにfuga以外を指定してドキュメントを参照
> db.test.find({"name":{$ne:"fuga"}})
{ "_id" : ObjectId("51c678406657d13ae3f6dafb"), "name" : "hoge", "score" : 1111, "date" : 1371961245 }

Android SDKのダウングレード方法

概要

revision22に変えてから軒並みビルド出来なくなった。

設定を変えるのも面倒なのでいっその事ダウングレードしてみる。

環境

準備

まず、Android SDKとADTを上記のリンクからダウンロードする。

Android SDKのみ解凍しておく。

ここではダウンロードディレクトリの下で解凍しておく。

Android SDKのインストール

すでにインストールされているAndroid SDKをゴミ箱にポイする。

自分の環境ではアプリケーションディレクトリにダウロードされているのでそれを削除。

$ rm -rf /Applications/android-sdk-macosx

次に解凍したAndroid SDK(android-sdk-macosx)をアプリケーションディレクトリに移動する。

$ cd ~/Downloads
$ mv android-sdk-macosx /Applications

移動したandroid-sdk-macosxディレクトリ内にあるtools/androidを実行する。

あとは、必要なAPI等を入れていく。

ここでAndroid SDK Toolsのチェックを必ず外す

そうしないとまたr22に戻ってしまうので要注意

API等のダウンロード作業にはかなり時間がかかるのでマターリする。

ADTのインストール

まずはEclipseを起動し、[ヘルプ]→[新規ソフトウェアのインストール]を開く

「使用可能なソフトウェア」のウィンドウが表示されるので、ここで[追加]を開く。

リポジトリーの追加」が表示されるので、[アーカイブ]を押し、ダウンロードしておいた[ADT-21.0.1.zip]を選択する。名前は特に入力する必要がない。

名前に「開発ツール」が表示されているので、ここにチェックをつけ、[次へ]を押していき、途中で[使用条件の条項に同意します]にチェックをつけ[完了]ボタンを押す。

作業後にEclipseを再起動する。

おわりに

実はこれだけの作業でダウングレード出来る。

手動でインストールするのと大差ないです。

参考

Node.jsでGET/POSTリクエストを投げてみる。

概要

APIを叩いたりする時に役立ちそうだからやってみる。

準備

ライブラリ

以下のライブラリを使う。

ライブラリ準備

 $ npm install request

コード

URLに対してPOSTリクエストで、valueとhugaを送っている。 Content-Typeは「application/x-www-form-urlencoded」となっている。

var request = require('request');

// URL
var baseUrl = 'http://hogehoge.com/hugahuga';

request.post(
    baseUrl, 
    { form: { key: 'value', hoge: 'huga'} },
    function (err, res, body) {
        if (!err && res.statusCode == 200) {
            var parse_body = qs.parse(body);
            console.log(body);
        } else {
          console.log(body);
        }   
    }   
);

Content-Typeを「application/json」でリクエストする時はjsonオプションをtrueにする。

var request = require('request');

// URL
var baseUrl = 'http://hogehoge.com/hugahuga';

request.post(
    {url: baseUrl, json:true},
    { form: { key: 'value', hoge: 'huga'} },
    function (err, res, body) {
        if (!err && res.statusCode == 200) {
            var parse_body = qs.parse(body);
            console.log(body);
        } else {
          console.log(body);
        }   
    }   
);

nvm(Node Version Manager)のインストール

nvm(Node Version Manager)のインストール

nvmとは

nvmはNode.jsのバージョンを管理できるツールです。

nvmのインストール方法

既にインストールしているものを削除

これからnvmでnode.jsを管理することになるので、既にインストールされているものは手動で削除します。

$ cd /usr/local
$ sudo rm -rf {bin,lib,include}/node share/man/man1/node.1

nvmのインストール

GitHubからチェックアウトし~/.nvmに配置します。

$ git clone git://github.com/creationix/nvm.git ~/.nvm

nvmを使えるようにする

nvm.shを実行する。

$ source ~/.nvm/nvm.sh

Node.jsをインストールする

nvm経由でNode.jsをインストールする。今回は現安定版のv0.10.5をインストールします。

$ nvm install v0.10.5

インストールされているか確認する。

nvmからNode.jsをインストールするとnpmも一緒にくっついてくるようなので、そちらも確認する。

$ node -v
v0.10.5

$ npm -v
1.2.18

ターミナル起動時にnvmを起動する。

ターミナル起動毎にコマンドを打つのは面倒なので、.bashrc等の起動時に実行されるファイルに記述しておく。

#nvmの利用
source ~/.nvm/nvm.sh
# v0.10.5のnode.jsを使う
nvm use "v0.10.5"

nvmの機能

インストールしているNode.jsを表示する

lsコマンドでリスト表示し、現在使用しているバージョンが表示されます。

$ nvm ls
v0.8.23 v0.10.5
current:    v0.8.23

使用するNode.jsを切り替える

useコマンドを使うと、使用するバージョンを切り替えることができます。

$ nvm use v0.10.5
Now using node v0.10.5
$ nvm ls
v0.8.23 v0.10.5
current:    v0.10.5

参考

こちらを参考にさせて頂きました。

Later! あとで読むアプリをリリースしました!

f:id:mofumofu3n:20130224232028p:plain

Android app on Google Play

一月くらいから空いてる時間に作り始め、やっとリリースする事が出来ました。

コンセプトはiPhoneのリーディングリストです。 普段はiPhoneを使っているのでAndroidでもリーディングリストてきなモノがあればなーと思って。 f:id:mofumofu3n:20130224231950p:plain

f:id:mofumofu3n:20130224232034p:plain

f:id:mofumofu3n:20130224232040p:plain

f:id:mofumofu3n:20130224232041p:plain

よろしければ使ってみてください。 レビュー等で感想をいただけると嬉しいです。

Android app on Google Play

ラジオボタンのチェック箇所を非表示にする

Layoutファイルのラジオボタンの定義に "android:button"要素をいれ、nullを設定するだけです。

サンプル

<RadioButton
	android:id="@+id/radioButton"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:button="@null"
/>