Hatena::Groupnadesiko

そっとなでしこ RSSフィード


メインのブログに書くまでもない、なでしこ学習帳【記事一覧】 【このブログは何?】


特設!→【目次】なでしこ用Twitter 連携ライブラリ「なこったー」で遊ぶ


2010-08-26

なでしこ用Twitter 連携ライブラリ「なこったー」で自分のタイムラインを取得&グリッド表示

| なでしこ用Twitter 連携ライブラリ「なこったー」で自分のタイムラインを取得&グリッド表示 - そっとなでしこ を含むブックマーク はてなブックマーク - なでしこ用Twitter 連携ライブラリ「なこったー」で自分のタイムラインを取得&グリッド表示 - そっとなでしこ

 日本語プログラミング言語なでしこ用OAuth 対応の Twitter 連携ライブラリ「なこったー(nakotter)で遊んでみた。

 とりあえず、次のような機能を持つ、単純なサンプルを書いて遊んでみました。

  • 自分のアカウントのタイムラインを取得し、グリッド表示
  • 任意の行をダブルクリックすると、その行のツイートをポップアップ表示
  • グリッド表示の仕様の関係で…
    • 改行は「 」(全角空白文字)に置換(改行文字以下が次の行に表示されるのを防ぐため)
    • 「,」は「、」に置換(「,」以下が次の列に表示されるのを防ぐため)

■下準備

【追記】下準備1、2は不要になりました

2010/9/6にリリースされた「なでしこ」ver.1.5331以降は、「なこったー」が既に同梱されています。

  


_U_D_

.#nadesiko version 1.5331 が UP されました。今バージョンから、 "nakotter" が同梱されます。
(2010/09/06 20:31:50)

link

【下準備1】「なこったー(nakotter)」のダウンロード

 ちなみに、以下のサンプルは「nakotter-ver.0.32」で動作確認したものです。

 なお、「nakotter-ver.0.32」は、なでしこversion 1.533用です。

【追記】

  


_U_D_
U D

UNIXTIME 関連の命令が最新版なでしこでは追加されているので、バージョンチェックコードは入れていませんが、一応 UNIXTIME 命令追加前のなでしこでも使えるよう、unixtime.nako とかを入れてたと思います。 #nadesiko
(2010/09/01 00:09:20)

link

【下準備2】「nakotter.nako」を「lib」フォルダに設置

 【下準備1】でダウンロードした圧縮ファイルを解凍し、「nakotter.nako」ファイルをなでしこインストール先にある「lib」フォルダ(なでしこライブラリが入っているフォルダ)に置く。

【下準備3】「なこったー」で使用するOAuth認証用の「コンシューマ・キー」と「アクセストークン」の取得

 日本語プログラミング言語なでしこ用OAuth 対応の Twitter 連携ライブラリ「なこったーでTwitter APIにアクセスするためには、次の二組の認証用文字列が必要となります。

  • (1)「コンシューマ・キー」と「コンシューマ・シークレット」
    • Twitter APIにアクセスするアプリケーションのIDキーと、その認証に利用されるシークレット
  • (2)「アクセストークン」と「アクセストークンシークレット」
    • 「なこったー」を利用した「なでしこ」スクリプトが、twitterのID、パスワードを利用せずにtwitterにアクセスするためのトークンと、その認証に利用されるシークレット
  • APIアクセス権を委譲するプロトコル、OAuthを知る - @IT

 取得手順については、以下の記事を参照して下さい。

【関数】ホームTL取得({ハッシュ=?}PARAMで)~

 今回使用する関数は、「ホームTL取得」関数です。

■説明

 Twitter APIの「statuses/home_timeline」 APIを「なでしこ」から呼び、自分と自分がフォローしているユーザーのタイムライン(TL)を取得する関数です。

 「statuses/home_timeline」 APIについては以下の通りです。

自分と自分の friend の過去800件分のステータス(retweetを含む)から最大20件(count引数使用時は最大200件)を取得する。

Twitter API 仕様書 日本語訳

http://watcher.moe-nifty.com/memo/docs/twitterAPI.txt

■引数

詳細は、「Twitter API 仕様書 日本語訳」等を参照のこと。

  • {ハッシュ=?}PARAMで
    • 省略可能です。今回のサンプルでは使用していません。
    • ハッシュ形式で以下の項目を指定できます(例:パラムとはハッシュ。#パラム@「count」=200。)
      • since_id=ステータスID
        • 指定したIDより大きな値のIDのステータスのみ取得(指定したIDは取得対象外)
      • max_id=ステータスID
        • 指定したステータスID以下の値のIDのステータスのみ取得 (指定したIDも取得対象内)
      • count=ステータス数
        • 指定した数のステータスを取得。ステータス数は最大 200 まで指定可能
      • page=ページ番号
        • (1ページを20件とみなしたときの)ページ番号を指定することで、過去の任意の発言を20件単位で取得
      • trim_user=はい(=1) (または trim_user=t, trim_user=1)
        • 本引数を指定すると、ステータス情報に含まれる(そのステータスの投稿者の)ユーザ情報をユーザID(数字)のみにする
      • include_entities=true (または include_entities=t, include_entities=1)
        • 本引数を指定すると、ステータス情報に entities という情報を含むようにする
■戻り値

Twitter APIへの問い合わせに成功した場合に取得した値は、ハッシュテーブルの配列に格納されて戻ります。

詳細は、以下を参照。

■ソースコード

※「OAuth認証設定」部分を上記の【下準備3】で取得した「コンシューマ・キー」と「コンシューマ・シークレット」、「アクセストークン」と「アクセストークンシークレット」に書き換えて実行して下さい。

#-----------------------------------------------------------------------
# OAuth認証設定
#-----------------------------------------------------------------------
# Twitterにアプリケーション登録した際に発行された
# 「コンシューマ・キー」と「コンシューマ・シークレット」を設定
CONSUMER_KEY=「****」。
CONSUMER_SECRET=「****」。
# 「アプリケーションのアクセス許可」&認証で発行された
# 「アクセストークン」と「アクセストークンシークレット」を設定
OAUTH_TOKEN=「****」。
OAUTH_TOKEN_SECRET=「****」。
#-----------------------------------------------------------------------


!「nakotter.nako」を取り込む
なこったークライアントとはNakotter。
そのoauthのコンシューマのトークンキー = CONSUMER_KEY。
そのoauthのコンシューマのシークレット = CONSUMER_SECRET。
そのoauthのトークンキー = OAUTH_TOKEN。
そのoauthのシークレット = OAUTH_TOKEN_SECRET。

ツイートグリッドとはグリッド。
ツイートグリッドについて
 レイアウトは「全体」

ツイートリスト=「ユーザー名,ユーザ名称,ツイート,投稿日時」。

なこったークライアントからホームTL取得して反復
 TEXTは、対象@`text`を出力変換処理。
 ツイートリストは、「{ツイートリスト}{~}{対象@`user`@`screen_name`},」&
 「{対象@`user`@`name`},{TEXT},{対象@`created_at`}」

ツイートグリッドのアイテムはツイートリスト。
そのダブルクリックした時は~
 それはツイートグリッドのテキスト。
 ユーザー名は、それ\0,0。
 ユーザー名称は、それ\0,1。
 ツイートは、それ\0,2。
 投稿日時は、それ\0,3。
 「{ユーザー名}【{ユーザー名称}】{~}」&
 「{ツイート}{~}{投稿日時}」を言う。

●出力変換処理(対象文字列を)
 対象文字列は、対象文字列の「\n」を「 」へ正規表現置換。
 対象文字列は、対象文字列の「,」を「、」へ正規表現置換。
 対象文字列で戻る。

■色々遊べそうな「なこったー(nakotter)」

 「なこったー(nakotter)」は、今回のサンプルで動作確認してみたTL取得の他にも、ツイートを投稿したり、投稿したツイートを削除したり、フォローやふぁぼりも可能なようです。

 もちろん、ブロックなど現状では実装されていない機能もあります。

 しかし、

グループ機能を使って実装されているので、拡張性も高くなっています。

●1. 使い方 - なこったー / nakotter - 解説 - Site Untitled

http://www.undefin.net/nadesiko/xpln/lesson/L3-1

 つまり、「Nakotter」グループをミックスし、ブロック機能などを追加した「拡張Nakotter」を定義することも比較的に容易ということです。素晴らしい!