ネットサービスの開発に役立ちそうな話題を中心にお届けします。
F.Ko-Jiの「一秒後は未来」 > Twitter(ツイッター) > jQueryとTopsy APIを使ってそのページを言及したツイートを表示するスクリプトを作った
2010年05月30日 14:39
620日前に投稿

jQueryとTopsy APIを使ってそのページを言及したツイートを表示するスクリプトを作った

  • ... PV
  • このエントリーをはてなブックマークに追加

スポンサード リンク

そのページが何回ツイートされたかを表示してくれるカウンターといえばTweetmemeTopsyが有名ですが、TopsyのAPIを利用すると「そのページのURLが投稿されたツイート」を取得できるみたいなので、jQueryを使って各記事の下に表示してみることにしました。

たとえばこの記事の場合はこんな風に表示されます。

topsy-jquery-tweet-list.gif

↑ リスト表示

topsy-jquery-tweet-icon.gif

↑ アイコン表示

APIの解説

TopsyのAPIで用意されているメソッドのうち「trackbacks」を使うと、そのURLを言及したツイートのリストを取得できます。

レスポンスのフォーマットはメソッドの拡張子で表現され、json, js(JSONP), txt の3種類が用意されています。

http://otter.topsy.com/trackbacks.js
?url=そのページのURL
&tracktype=tweet
&perpage=50

urlにデータを取得したいページのURLを、perpageに取得件数を指定します。デフォルトは10件で最大50件です。pageパラメータで2ページ目以降を取得することもできます。(参照: ResListParameters - otterapi)

作成したスクリプトの使い方

スクリプトは http://blog.fkoji.com/search_tweet.js にあります。

特に配布用に作ったわけではないですが、他のサイトでも使えると思うので利用してもらっても構いません。ただ、その場合は必ずダウンロードして各々のサーバーにアップロードして利用するようにしてください。

headタグでjQueryを読み込んでいることが前提です。jQueryはGoogleでもホスティングしているので、jQueryを使ってない場合は以下をheadタグに記述します。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>

次に記事ページでツイートのリストを表示したい箇所に

<div id="topsy-tweet-search-results"></div>

というタグを書き、そのタグ以降でスクリプトをインクルードします。

<script type="text/javascript" src="search_tweet.js" charset="utf-8"></script>

srcの値は環境に応じて変更してください。なお、設置できるのは1ページにつき1箇所です。

スタイルは独自であてる必要があるので、自分のブログでは次のようなCSSを適用しています。

/* 表示領域の大枠 */
#topsy-tweet-search-results {
    font-size:12px;
    border-top:2px solid #ddf6ff;
    border-bottom:2px solid #ddf6ff;
    background:#eefbff;
    margin-top:8px;
    padding-left:6px;
}
/* 表示領域の見出し */
#topsy-tweet-search-results .topsy-tweet-search-results-header {
    color:#11c4ff;
    font-weight:bold;
}
/* 個々のツイート領域 */
#topsy-tweet-search-results .topsy-tweet-search-result {
    clear:both;
    padding:6px 0;
    border-bottom:2px solid #fff;
    overflow:hidden;
}
/* ユーザー名 */
#topsy-tweet-search-results .topsy-tweet-name {
    font-weight:bold;
}
/* アイコン領域 */
#topsy-tweet-search-results .topsy-tweet-image {
    float:left;
    width:36px;
    height:36px;
    margin-right:12px;
}
/* アイコン画像 */
#topsy-tweet-search-results .topsy-tweet-image img {
    width:36px;
    height:36px;
}
/* ツイート */
#topsy-tweet-search-results .topsy-tweet-text {
    float:left;
    width:430px;
    background:#fff;
    padding:4px;
}
/* 日付 */
#topsy-tweet-search-results .topsy-tweet-date a {
    color:#999;
}
/* 「すべて表示」の操作テキスト */
#topsy-tweet-search-results #topsy-show-more-tweets {
    color:#1d3994;
    cursor:pointer;
    text-align:right;
    font-weight:bold;
    padding-right:4px;
}
/* アイコン形式の表示でのアイコンサイズ */
#topsy-tweet-search-results img.topsy-profile-image-small {
    width:24px;
    height:24px;
    margin:4px;
}

なお、スクリプト内で以下の部分をカスタマイズできます。

/* 表示領域の見出し */
TOPSY_FKOJI.text.header = 'Recent conversation on Twitter';

/* 「すべて表示する」の操作をする箇所のテキスト */
TOPSY_FKOJI.text.more   = 'Show more tweets...';

/* リスト表示の時に取得する件数 */
TOPSY_FKOJI.api.perpage = 50;

/* 表示形式。icon もしくは list を指定する */
TOPSY_FKOJI.type = 'list';

/* リスト表示の時に最初から表示する件数 */
TOPSY_FKOJI.displayNum = 5;

何か質問等ありましたら @fkoji までお願いします。

» otterapi - Project Hosting on Google Code

スポンサード リンク

Written by
Meity.jp - Twitterなかまでプライベートなオフ会を開催したいなら


トラックバック

このエントリーのトラックバックURL:

コメント

素敵な情報を本当にありがとうございます。
今回こちらの情報を参考にさせていただいたのですが
http://blog.fkoji.com/2010/05301439.html
APIについてあまり詳しく知らないためうまく実装することができませんでした。
もう少しお力拝借させて頂けないでしょうか。

|作成したスクリプトの使い方 に関しては問題なくできたと思います。
|APIの解説 ↓ここの記述をどこにすればいいのかわかりませんでした。
http://otter.topsy.com/trackbacks.js
?url=そのページのURL
&tracktype=tweet
&perpage=50

APIの使い方についても調べたのですが有力な情報を見つけることができませんでした。
恐れ入りますが、お教え頂けないでしょうか?

またこの方法はツイートから丸7日を過ぎたものも表示されるんでしょうか?
Twitterクライアントなどの検索機能は丸7日を過ぎたものを検索対象から除外しているそうですが。。
重ねてご教授いただけると助かります。
よろしくお願いいたします。

>> takumaさん
コメントありがとうございます。

> ↓ここの記述をどこにすればいいのか

これは作成しているスクリプトによるのでなんとも言えませんが、AjaxでリクエストするURLになるのでAjaxの実装部分に記述することになります。

http://blog.fkoji.com/search_tweet.js の例だと $.ajax の url に渡しているのがわかると思います。

なお、 http://blog.fkoji.com/search_tweet.js を利用するのであれば特に何もする必要はありません。

> この方法はツイートから丸7日を過ぎたものも表示されるんでしょうか?

表示されます。おそらく Topsy が独自にデータベースに蓄積しているのだと思います。

という感じで大丈夫でしょうか?

遅くなってしまいましたが、お返事ありがとうございます!
おかげさまでアイコン表示はできました!
がリスト表示させる方法がわかりませんでした。
もう少し勉強が必要みたいです。ありがとうございました。

リスト表示させる場合は、
TOPSY_FKOJI.type = 'icon';
というところを、
TOPSY_FKOJI.type = 'list';
にしてみてください!

またまた遅くなってしまい申し訳ないです。
ありがとうございます!リスト表示できました!

こちらはtrackbackですが、指定したURLに対して言及されたツイートを表示させることはできないのでしょうか?

こんにちは。スクリプトの中に、

encodeURIComponent(location.href),

という箇所があると思いますが、この「location.href」を指定のURLに変えればいけると思います。

encodeURIComponent('http://www.google.co.jp/'),

のようにシングルクォーテーションでURLを括って指定してみてください。

こんにちは。素晴らしい情報をありがとうございます。さっそくJSを使わせていただきテストサイトに実装してみたのですが、ツイッターのユーザーアイコンが来てくれません(画像のURLは"http://otter.topsy.com/"です)。また現在テストで3件つぶやいていておそらく何も表示されない場所だと思うのですが「?」になっています。JSは表示形式をlistに変えただけで何もいじっていません。どこをチェックすべきでしょうか? ちなみにサイトはMTでつくっています。

>> poetさま
コメントありがとうございます。

アイコンのURLが http://otter.topsy.com/ になってしまっているということは、
おそらく Topsy の API に問題があるんだと思います。なのでこちらとしてはどうしようもありません。

以前同様のことがあり @topsy に問い合わせて直してもらったことがありますので、Topsyに状況を説明してみるといいかもしれません。

http://twitter.com/Topsy/status/16406593575

素早いお返事ありがとうございます! さっそくTOPSYに凸ってみます!

素晴らしい記事ですね。
Wordpress用のプラグインでなら同様の物を見かけることはありましたが、これでツイッター利用の幅が広がりそうです。

早速スクリプトを拝見させて頂きました。
そこで質問なのですが、表示されるツイート内容のテキストを置換(非表示化)することは出来ないのでしょうか?

ユーザーIDの表示にreplaceコマンドを利用されていたので、同様に本文に表示される「http://~」の部分をスペースに置換して削ることができれば良いなーと弄ってみましたが上手くいきません。

良ければご意見お願いします。

>> toroさま
ご質問ありがとうございます。

TOPSY_FKOJI.buildTweetDiv の中の result.content を

result.content.replace(/http:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+/, '')

のようにすると置換できると思いますがいかがでしょうか?
URLの正規表現はお好みで書き換えてください。

早速のお返事ありがとうございます。
無事置換することができました。
本当に有用な可能性を持ったスクリプトですね。

>> TOROさま
どうもありがとうございます。
ぜひ色々とカスタマイズしてみてください。

Javascript / Twitter(ツイッター) / Javascript - jQuery

English version

前のエントリー: « 江古田の隠れ家的カフェ「Toris Cafe」
次のエントリー: 基本だけじゃない梅酒本『梅酒の基本』購入 »

コピペにご利用ください。

タイトル:

URL:

リンク用HTMLタグ: