ラベル Yahoo Pipes の投稿を表示しています。 すべての投稿を表示
ラベル Yahoo Pipes の投稿を表示しています。 すべての投稿を表示

2009年10月16日金曜日

「ブログへの自分以外のつぶやきを知る」ための Yahoo Pipes の作り方

前回作ったパイプ (Pipes: Filter backtweets by twitter username) の作り方。

 

全体の構成

全体のパイプの大雑把な構成は以下の通り。6 つの小さなパイプをつないでいる。

091016-001

※ 点線は概念的なイメージ

 

backtweets.com から RSS を取得しフィルタリング

パイプ : Filter backtweets by twitter user name (No Image)

フィードの取得

使用するモジュール

  • User inputs > URL Input : 入力
  • URL > URL Builder : URL の生成
  • Sources > Fetch Feed : フィードの取得

091016-006

まず、BackTweets においてブログの URL で検索 ( http://jutememo.blogspot.com — BackTweets )し、RSS のアドレスを表示させる。

http://backtweets.com/search.rss?q=http://jutememo.blogspot.com

これより、この RSS を Fetch Feed モジュールで取得したい。

URL Builder モジュールにおいて、

  • Base : http://backtweets.com
  • Path elements : search.rss
  • Query parameters :
    • q
    • text : User inputs > URL Input モジュールより流しこむ

Debug : にはテスト用に試したいアドレスを入れておく。

実は最初 Fetch Feed 使うの忘れていて、Fetch Data > Sub Element > Create RSS のモジュールをつなげるという遠回りなことをしていた。 ^^;

 

フィードのアイテムをブロック

使用するモジュール

  • User Inputs > Text Input : 入力
  • コンマ区切りの文字列を正規表現へ
    • String > String Replace : , を $|^ へ変換
    • String > String Regexp : 先頭と末尾に ^   $ をつける。
  • Operators > Filter : 上記の正規表現を元にアイテムをブロック

取得したフィードの item.auther によりつぶやいたユーザ名がわかる。特定のユーザを取り除きたいので、ここでユーザ名を指定してブロックする。ただし、例えば `jutememo,hoge,piyo’ と複数指定されたら、各々のユーザ名に完全に一致するフィードのアイテムをブロック。そのためには次のような手順を踏む。

  1. 入力された文字列の中の `,’ を `$|^’ へ変換
  2. 先頭と末尾に `^’ `$’ をつける
  3. Filter モジュールにおいて、上記で作成した正規表現で一致するアイテムをブロック

 

ここまでで、特定のユーザのつぶやきをブロックしてフィードを表示させることができた。しかし、つぶやいている人の画像は表示されない。できれば フィードのアイテムにある auther 情報を元に、Twitter のプロフィール画像を取得したい。上記で作成したパイプに機能を付け加えていくと、ごちゃごちゃして内容を把握しにくくなるので、関数を定義するようにパイプの内容をできるだけ独立性が高く、長さを短く一画面でおさめる方針で作成していくことにした。

 

Twitter のユーザ情報を取得

パイプ : Twitter.getUser

最初に Twitter のユーザ名を指定したら、プロフィールの画像を表示することを考える。

ユーザ情報を取得するには、Twitter API Wiki / Twitter REST API Method: users show によると、

  • id.  The ID or screen name of a user.
    • Example: http://twitter.com/users/show/12345.json or http://twitter.com/users/show/bob.xml
  • よって、

    http://twitter.com/users/show/ユーザ名.json

    によって JSON形式でユーザ情報を取得できる。

    ユーザ名を与えると、上記の情報を取得するモジュールを作成。

    091016-007

    XML や JSON を取得するには Sources > Fetch Data を利用。

    There's more data on the web than just RSS and Atom feeds. This module can access and extract data from XML and JSON (Javascript Object Notation) data sources on the web.

    (Fetch Data Module より)

     

    JSON の情報からプロフィールの画像を生成

    パイプ : Twitter.getUser.profileImg.toHtml

    次に Twitter.getUser パイプからプロフィールの画像を表示するためにHTML の img タグを生成する。

    091016-008

    JSON 形式で取得したユーザ情報の内 `profile_image_url’ が画像の URL を表わしている。先ほど作成した Twitter.getUser モジュールを My pipes より D&D。Sub-element モジュールを使って JSON の情報を取得する。

    IMG タグでラップするには、Regex モジュールを使い、正規表現 (.*) で全体をグループ化。String Builder モジュールで後方参照し、動的に正規表現を生成する。

     

    IMG タグを DIV タグでラップしてスタイルを適用

    パイプ : Twitter profile image with float left

    先ほどのモジュールと同様な方法で、Twitter.getUser.profileImg.toHtml の結果をラップする。

    091016-009

    できれば、パイプ名からパイプを生成するモジュールがあれば、二つを共通化できるのだけれど。。

     

    つぶやきとプロフィール画像を合わせる

    パイプ : createTwitterPostWithUserImg

    後は、最初に Filter backtweets by twitter user name (No Image) パイプで取得したフィードのアイテム (つぶやき) と、プロフィールの画像を合わせるパイプを作成する。

    091016-010

    あれ?ここも前とほぼ同じだ。

     

    最後に

    パイプ : Filter backtweets by twitter username

    Filter backtweets by twitter user name (No Image) と createTwitterPostWithUserImg のパイプをつなぐ。

    091016-011

    Loop モジュール内で、createTwitterPostWithUserImg パイプを呼出している。この呼出しにおいて、item.description を渡しているが、最終的なフィードのアイテムの description は、呼出したパイプの結果と置き換えたいので、Loop モジュールの最後の assgin において、item.description を指定。これで上書きされたことになるようだ。

    ブログへの自分以外のつぶやきを知りたい – Yahoo Pipes を使って BackTweets をフィルタリング

    FriendFeed から Twitter へ投稿

    最近、再び Twitter を使うようになった。同時期、右図の記事を読んだのをきっかけにして FriendFeed もお試し中。

    ブログの更新情報は、FriendFeed を経由して Twitter へ流している。(cf. ブログの更新情報は『Friendfeed』で流すことにした - IDEA*IDEA )

     

    つぶやきやすい Twitter

    Twitter の良い点の一つは、ブログに埋め込まれたコメントと違って、気軽に記事に対してつぶやけること。コメントのように当該の記事の文脈で読まれるのとは異なり、つぶやきは見かけ上つぶやいた人に帰属する形であること。また、ブログへのコメントのように、対人的なコミュニケーションを誘発する可能性が低いことがその敷居を下げている。

     

    つぶやきを知る – ConvoTrack, backtweets

    指定したサイトに関するつぶやきを横に表示してくれる『ConvoTrack』 – 100SHIKI によると、

    ConvoTrackを使えば、指定したサイトに関するTwiiterのつぶやきをそのサイトの横に表示してくれる。

    ConvoTrack には、ブックマークレット (ConvoTrack) も用意されているので、自分のブログに対してどんなつぶやきがあるのか簡単に見ることができる。

    twiStation には、分析系として BackTweets が紹介されていた。こちらはブログのアドレスを入力すると、RSS での取得が可能。

    BackType

    ちなみに ConvoTrack も BackTweets も BackType というサービスを利用しているようだ。

    BackTypeは、Disqus、JS-Kit、IntenseDebate、coCommentなど他のコメント・ツールとは異なり、広い範囲のブログプラットフォームとSNS(Twitter、FriendFeedなど)から、ありとあらゆるテーマについてのコメントを収集してくるワンストップサービスだ。

    (コメントの横断的モニタ・ツールのBackType、新機能を追加、資金調達にも成功 より)

    こちらも Connect — BackType に ブックマークレット (Connect Bookmarklet) がある。

     

    自分のつぶやきを取り除くパイプ

    ところで、RSS を取得可能な BackTweets も ConvoTrack と同じように、FriendFeed 経由で自動化している自分のつぶやきが表示されてしまう。Advanced Search のオプションもあるけれど、特定の人のつぶやきを抽出できても、指定した人を除くということができないようだ。

    自分へのつぶやきは読む必要がないので、Yahoo Pipes を使って、BackTweets で取得した RSS から、特定のユーザのつぶやきを取り除くことにした。

     

    作成したパイプはこちら →  Pipes: Filter backtweets by twitter username。

    使い方
    1. `URL’ に自分のブログのアドレスを入力
    2. 「除きたい Twitter のユーザ名」に自分の Twitter のユーザ名を入力。複数のユーザがある場合はコンマ区切りで入力(空白は入れないこと)
    3. Run Pipe ボタンを押す。

     

    つぶやきの即時性

    つぶやかれたものをすぐに知りたいということに関しては、Topsy の方が反応が良いようだ。(cf. Twitter検索エンジン、Topsyがローンチ―重要性の尺度はTwitterでReTweetされた回数) Topsy では、つぶやかれたものがすぐに表示される。

    Google のドメイン検索と同じように、

    site:ドメイン名

    で検索することにより、自分のサイトのつぶやきを見ることができる。

     

    関連記事