Hatena::Groupnadesiko

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


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


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


2010-09-24

コマンド入力型ランチャー「fenrir」×「なこったー」で高速ツイート!

| コマンド入力型ランチャー「fenrir」×「なこったー」で高速ツイート! - そっとなでしこ を含むブックマーク はてなブックマーク - コマンド入力型ランチャー「fenrir」×「なこったー」で高速ツイート! - そっとなでしこ

 コマンド入力型ランチャー「fenrir」のインスタントコマンドからのサクッとTwitterに投稿できるようにする「なでしこ」スクリプトを、Twitter連携ライブラリ「なこったーを使って書いてみました。我ながら、これは快適かも!

 元ネタは、こちらの記事。

 ここで紹介されていたのは、「fenrir」からmala氏が書いたRubyスクリプトを呼び出す、というアイデアでした。

 これに対しての記事では、「fenrir」から呼び出すスクリプトを、OAuth認証に対応した日本語プログラミング言語「なでしこ」で書いてみよう、ということです。

続きを読む

2010-09-22

「なこったー」にあると便利そうな関数リスト

| 「なこったー」にあると便利そうな関数リスト - そっとなでしこ を含むブックマーク はてなブックマーク - 「なこったー」にあると便利そうな関数リスト - そっとなでしこ

 Twitter APIの中で、日本語プログラミング言語「なでしこ」用Twitter 連携ライブラリ「なこったーで使えるものは、まだ一部に限られています。

  


_U_D_
U D

. #nadesiko なこったーに追加して欲しい API 募集。宣言したし追加作業する。
(2010/09/21 12:14:49)

link

 ということで、こんなAPIがあったら便利そうだな~、というものを、Twitter API 仕様書からリストアップしてみました。

 「なでしこ」でTwitter関連ツールを作る場合、汎用的なTwitterクラインアントとかよりも、「Twitterボット」「リストへの一括登録ツール」「相互フォローツール」「片思い一括リムーブツール」「一括ブロックツール」みたいな、痒い所に手が届く系の小物ツールに需要があるのでは、と思います。ですから、そういうTwitter関連ツールを作る場合に必要になりそうAPIを選んでみました。

続きを読む

2010-09-19

「なこったー」を拡張(ミックス)してみる~「ふぁぼる」関数の再定義を例に~

| 「なこったー」を拡張(ミックス)してみる~「ふぁぼる」関数の再定義を例に~ - そっとなでしこ を含むブックマーク はてなブックマーク - 「なこったー」を拡張(ミックス)してみる~「ふぁぼる」関数の再定義を例に~ - そっとなでしこ

 日本語プログラミング言語「なでしこ」用Twitter 連携ライブラリ「なこったーは、拡張しやすく出来ています。

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

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

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

 「なでしこ」のグループ機能を使うと、オブジェクト指向風のプログラミングが出来ます。

グループを宣言するとき、他のグループをミックスすることができます。オブジェクト指向で言えば継承に当たりますが、それほど高度な機能ではなく、ただ単に、グループ内の項目をコピーしているだけです。グループ内に変数名の衝突があれば上書きしてしまいます。

グループ分け(オブジェクト指向ライク)|日本語プログラミング言語「なでしこ」

 つまり、「なこったー」ライブラリ内の「Nakotter」グループをミックスした新しいグループを定義することで、「なこったー」の機能を拡張することが出来ます。「Nakotter」をミックスしたグループの中で定義することで、オリジナルの関数を「なこったー」に追加することも出来ます。「Nakotter」をミックスしたグループの中に「なこったー」に存在するものと同じ名前の関数を定義すれば、「なこったー」の関数を上書きすることも出来ます。

 この記事では「なこったー」を拡張(ミックス)する方法のサンプルとして、「なこったー」の「ふぁぼる」関数を再定義して上書きしてみます。

続きを読む

2010-09-15

「なこったー」の関数とTwitter APIの対照リスト(nakotter ver.0.32時点)

| 「なこったー」の関数とTwitter APIの対照リスト(nakotter ver.0.32時点) - そっとなでしこ を含むブックマーク はてなブックマーク - 「なこったー」の関数とTwitter APIの対照リスト(nakotter ver.0.32時点) - そっとなでしこ

 Twitter APIのメソッドって、百前後もあるんですね。多過ぎw

 この膨大なTwitter APIのメソッドの中で、どれが「なこったー」の関数として実装されているのか、対照リストをまとめてみました(nakotter ver.0.32時点)。

  • メソッド一覧
    • タイムライン関連のAPI:
    • ステータス関連のAPI:
    • ユーザ情報関連のAPI:
      • statuses/friends
      • statuses/followers
      • users/show
      • users/lookup
      • users/search
      • users/suggestions
      • users/suggestions/category
    • ダイレクトメッセージ関連のAPI:
      • direct_messages
      • direct_messages/sent
      • direct_messages/new
      • direct_messages/destroy
    • フレンド関連のAPI:
      • friendships/create→【関数】フォロー
      • friendships/destroy
      • friendships/exists
      • friendships/show
      • friendships/incoming
      • friendships/outgoing
    • ソーシャルグラフ関連のAPI:
      • friends/ids
      • followers/ids
    • アカウント関連のAPI:
      • account/verify_credentials
      • account/end_session
      • account/update_location
      • account/update_delivery_device
      • account/update_profile_colors
      • account/update_profile_image
      • account/update_profile_background_image
      • account/rate_limit_status
      • account/update_profile
    • お気に入り関連のAPI:
    • 「指定デバイス」関連のAPI:
      • notifications/follow
      • notifications/leave
    • ブロック関連のAPI:
      • blocks/create
      • blocks/destroy
      • blocks/exists
      • blocks/blocking
      • blocks/blocking/ids
    • 補助API:
    • spam 報告関連のAPI:
      • report_spam
    • list 関連のAPI:
      • POST lists (create)
      • POST list id (update)
      • GET lists (index)
      • GET list id (show)
      • DELETE list id (destroy)
      • GET list statuses
      • GET list memberships
      • GET list subscriptions
    • list の登録内容に関する API:
      • GET list members
      • POST list members
      • DELETE list members
      • GET list members id
    • list の購読に関する API:
      • GET list subscribers
      • POST list subscribers
      • DELETE list subscribers
      • GET list subscribers id
    • OAuth関連:
    • 検索関連のAPI:
      • search
      • trends
      • trends/current
      • trends/daily
      • trends/weekly
    • 地域情報検索関連のAPI:
      • trends/available
      • trends/location
    • 位置情報関連のAPI:
      • geo/nearby_places
      • geo/reverse_geocode
      • geo/id
    • 検索条件保存:
      • saved_searches
      • saved_searches/show
      • saved_searches/create
      • saved_searches/destroy
    • ストリーミングAPI:
      • firehose
      • sample
      • filter
      • links
      • retweet

 以上Twitter APIの中には廃止見込みのものもありますし、あまり使わなさそうな機能のものも数多くあります。ただ、ユーザ情報関連のAPIやソーシャルグラフ関連のAPI(フォロしている/フォローされているユーザーの一覧取得)、ブロック関連のAPI、検索関連のAPIなど、Twitter関連ツールを作るときに「なこったー」で関数として用意されていると便利そうAPIも幾つかあります

 後のバージョンアップで、の幾つかが追加されると「なこったー」は益々便利になりそうです。


  


_U_D_
U D

. #nadesiko 公式にはコミットしていません。9月中に API を大幅追加しようと思っているので、公式への反映はの時にしようと思ってます。
(2010/09/11 19:27:49)

link


2010-09-14

「なこったー」で指定したユーザーのタイムラインを取得する

| 「なこったー」で指定したユーザーのタイムラインを取得する - そっとなでしこ を含むブックマーク はてなブックマーク - 「なこったー」で指定したユーザーのタイムラインを取得する - そっとなでしこ

 日本語プログラミング言語「なでしこ」用Twitter 連携ライブラリ「なこったーの「ユーザTL取得」関数を使用し、Twitter APIの「statuses/user_timeline」 APIを呼んでみるサンプルです。

続きを読む

2010-09-13

「なこったー」で返信する

| 「なこったー」で返信する - そっとなでしこ を含むブックマーク はてなブックマーク - 「なこったー」で返信する - そっとなでしこ

 日本語プログラミング言語「なでしこ」用Twitter 連携ライブラリ「なこったーの「返信する」関数を使用し、Twitter APIの「statuses/update」 APIを、「in_reply_to_status_id」引数を指定して呼んでみるサンプルです。

続きを読む

2010-09-12

「なこったー」簡易認証ツール

| 「なこったー」簡易認証ツール - そっとなでしこ を含むブックマーク はてなブックマーク - 「なこったー」簡易認証ツール - そっとなでしこ

 mrさんが、日本語プログラミング言語「なでしこ」用Twitter 連携ライブラリ「なこったーでの認証を簡単に行うツールを作りました。

 非常に便利なツールなので、少し手を加えてみました。

変更点は、

  • (1)ライブラリ変更→Nakotterグループを拡張したMyNakotterグループを定義
    • ※「なこったー」は、「なでしこ」が持っているオブジェクト指向ライクな「グループ」機能を使ってミックス(オブジェクト指向の"継承"に相当)して、比較的簡単に拡張できて、非常に便利!
  • (2)認証で取得したOAuth認証情報をINIファイルに保存

の2点です。

 これまで「なこったー」を使っていて複数のtwitterアカウントを切替える場合に、自分は毎スクリプトのソースコードを書き換えていました。これが実に地味に面倒臭いw。しかし、このツールを使えば、twitterアカウントの切替が簡単にできるようになります。

続きを読む

2010-09-11

「なこったー」でツイートを削除する

| 「なこったー」でツイートを削除する - そっとなでしこ を含むブックマーク はてなブックマーク - 「なこったー」でツイートを削除する - そっとなでしこ

 日本語プログラミング言語「なでしこ」用Twitter 連携ライブラリ「なこったーの「つぶやき削除」関数を使用し、Twitter APIの「statuses/destroy」 APIを呼んでみるサンプルです。

続きを読む

「なこったー」でフォローする

| 「なこったー」でフォローする - そっとなでしこ を含むブックマーク はてなブックマーク - 「なこったー」でフォローする - そっとなでしこ

 なでしこ用Twitter 連携ライブラリ「なこったーの「フォロー」関数を使用し、Twitter APIの「friendships/create」 APIを呼んでみるサンプルです。

続きを読む

2010-09-09

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

| 「なこったー」で使用するOAuth認証用の「コンシューマ・キー」と「アクセストークン」の取得 - そっとなでしこ を含むブックマーク はてなブックマーク - 「なこったー」で使用するOAuth認証用の「コンシューマ・キー」と「アクセストークン」の取得 - そっとなでしこ

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

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

 以下、この2つを取得して、「なこったー」でTwitter APIにアクセスできるようになるまでの準備手順を、ざっくりとまとめてみました。

【追記】

 この記事は、「なこったー」を利用した「なでしこ」スクリプトを書く人とスクリプトを利用する人が同一人物の場合を想定して書いています(例:自分用のtwitterツールとか、twitter BOTの制作など)。スクリプト制作者以外の他者に使ってもらうツールを作る場合は、この記事の【準備2】の一連の作業を簡単に行えるGUIな機能を配布するスクリプトに組み込んであげた方が親切かと思われます。

【関連記事】

【さらに追記】作りました~

続きを読む

2010-09-08

「なこったー」でリツイートする

| 「なこったー」でリツイートする - そっとなでしこ を含むブックマーク はてなブックマーク - 「なこったー」でリツイートする - そっとなでしこ

 なでしこ用Twitter 連携ライブラリ「なこったーの「リツイート」関数を使用し、Twitter APIの「statuses/retweet」APIを呼んでみるサンプルです。

続きを読む

2010-09-07

「なこったー」でつぶやく

| 「なこったー」でつぶやく - そっとなでしこ を含むブックマーク はてなブックマーク - 「なこったー」でつぶやく - そっとなでしこ

 日本語プログラミング言語「なでしこ」用Twitter 連携ライブラリ「なこったーの「つぶやく」関数を使用し、Twitter APIの「statuses/update」 APIを呼んでみるサンプルです。

続きを読む

2010-09-05

「なこったー」で取得するTwitter APIの戻り値(user要素)

| 「なこったー」で取得するTwitter APIの戻り値(user要素) - そっとなでしこ を含むブックマーク はてなブックマーク - 「なこったー」で取得するTwitter APIの戻り値(user要素) - そっとなでしこ

 日本語プログラミング言語「なでしこ」用OAuth認証対応twitterライブラリー「なこったーでは、Twitter APIへの問い合わせに成功した場合に取得した値は、ハッシュテーブルの配列に格納されて戻ります。

 Twitter APIからの応答の内、ユーザーに関する情報(user要素)のハッシュテーブルの項目は以下の通り。

続きを読む

「なこったー」で取得するTwitter APIの戻り値(status要素)

| 「なこったー」で取得するTwitter APIの戻り値(status要素) - そっとなでしこ を含むブックマーク はてなブックマーク - 「なこったー」で取得するTwitter APIの戻り値(status要素) - そっとなでしこ

 日本語プログラミング言語「なでしこ」用OAuth認証対応twitterライブラリー「なこったーでは、Twitter APIへの問い合わせに成功した場合に取得した値は、ハッシュテーブルの配列に格納されて戻ります。

 Twitter APIからの応答の内、ツイート(=status)に関する情報のハッシュテーブルの項目は以下の通り。

続きを読む

2010-09-01

twitter APIで使われる英文形式の日時を日本時間に変換

| twitter APIで使われる英文形式の日時を日本時間に変換 - そっとなでしこ を含むブックマーク はてなブックマーク - twitter APIで使われる英文形式の日時を日本時間に変換 - そっとなでしこ

 これは、日本語プログラミング言語「なでしこ」用Twitter 連携ライブラリ「なこったーに限った話ではないのですが、Twitter APIで使われるツイート投稿日時(create_at)データは非常に扱い辛いです。

 例えば、こんな形式です。

Tue Aug 31 23:54:46 +0000 2010

 これは見づらい。色々と頭の中で変換しなければなりません。すなわち…

  • 英文形式(何月なのか、頭の中で英和辞典が起動…)
  • 協定世界時(日本時間は+9時間。場合によっては日付が+1日される)

 また、なでしこのプログラムでも扱い辛い。すなわち…

  • 英文形式を日時に変換する処理(StrToTimeみたいな)は、なでしこでは用意されていない
  • 日時に時間を加算して必要なら日付変更を行う処理は、なでしこでは用意されていない

つまり、上の例を

2010/09/01(水) 08:54:46

と、変換するような処理は、自分でゴリゴリと書いて用意する必要あります

 実は、のような処理を以前に書いています。

 けっこう長々としたソースコードなので、当該処理のみを抜き出したサンプルコードを書いてみました。

■ソースコード

変換対象日時は、「Tue Aug 31 23:54:46 +0000 2010」。

変換対象日時をTwitter英文形式_日時変換。
「変換前:{変換対象日時}{~}変換後:{それ}」をメモ記入。

#-----------------------------------------------------------------------
# 関数定義
#-----------------------------------------------------------------------
●Twitter英文形式_日時変換(対象を)
 英語月@「Jan」=「01」
 英語月@「Feb」=「02」
 英語月@「Mar」=「03」
 英語月@「Apr」=「04」
 英語月@「May」=「05」
 英語月@「Jun」=「06」
 英語月@「Jul」=「07」
 英語月@「Aug」=「08」
 英語月@「Sep」=「09」
 英語月@「Oct」=「10」
 英語月@「Nov」=「11」
 英語月@「Dec」=「12」
 取得日時は対象を「 」で区切る。
 英語月@「{取得日時[1]}」を取得月に代入する。
 取得JST日付は「{取得日時[5]}/{取得月}/{取得日時[2]}」。
 地域標準時変換(取得JST日付、取得日時[3]、「+」、「09:00:00」)。
 それで戻る。

●地域標準時変換(UTC日付、UTC時刻、加減算演算子、加減算時間)~
 加減算日数は0。
 地域標準時刻は、UTC時刻に「{加減算演算子}{加減算時間}」を時間加算。
 UTC時刻を「:」で区切り、UTC時刻配列に代入。
 加減算時間を「:」で区切り、加減算時間配列に代入。
 もし、加減算演算子が「+」ならば
  秒換算は((UTC時刻配列[0]×60×60)+(UTC時刻配列[1]×60)+(UTC時刻配列[2]))+
  ((加減算時間配列[0]×60×60)+(加減算時間配列[1]×60)+(加減算時間配列[2]))
  もし、秒換算が(24×60×60)以上ならば
   加減算日数は1。
  違えば
  秒換算は((UTC時刻配列[0]×60×60)+(UTC時刻配列[1]×60)+(UTC時刻配列[2]))-
  ((加減算時間配列[0]×60×60)+(加減算時間配列[1]×60)+(加減算時間配列[2]))
  もし、秒換算が0未満ならば
   加減算日数は1。
 地域標準日時は、UTC日付に「{加減算演算子}0/0/{加減算日数}」を日付加算。
 「{地域標準日時}({地域標準日時の曜日}) {地域標準時刻}」で戻る。

単純な処理なのに、ソースコードが無駄に長い…orz

 いつか「なこったー」ライブラリーに、twitterの投稿日時をもっと楽々と取得できる関数追加されるとイイなぁ…