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

↑ リスト表示
![]()
↑ アイコン表示
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
スポンサード リンク
トラックバック
このエントリーのトラックバックURL:
Javascript / Twitter(ツイッター) / Javascript - jQuery
前のエントリー: « 江古田の隠れ家的カフェ「Toris Cafe」
次のエントリー: 基本だけじゃない梅酒本『梅酒の基本』購入 »
コピペにご利用ください。
タイトル:URL:
リンク用HTMLタグ:












コメント
素敵な情報を本当にありがとうございます。
今回こちらの情報を参考にさせていただいたのですが
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 | 2010年08月11日 05:40
>> takumaさん
コメントありがとうございます。
> ↓ここの記述をどこにすればいいのか
これは作成しているスクリプトによるのでなんとも言えませんが、AjaxでリクエストするURLになるのでAjaxの実装部分に記述することになります。
http://blog.fkoji.com/search_tweet.js の例だと $.ajax の url に渡しているのがわかると思います。
なお、 http://blog.fkoji.com/search_tweet.js を利用するのであれば特に何もする必要はありません。
> この方法はツイートから丸7日を過ぎたものも表示されるんでしょうか?
表示されます。おそらく Topsy が独自にデータベースに蓄積しているのだと思います。
という感じで大丈夫でしょうか?
投稿者: F.Ko-Ji | 2010年08月11日 13:16
遅くなってしまいましたが、お返事ありがとうございます!
おかげさまでアイコン表示はできました!
がリスト表示させる方法がわかりませんでした。
もう少し勉強が必要みたいです。ありがとうございました。
投稿者: takuma | 2010年08月13日 01:50
リスト表示させる場合は、
TOPSY_FKOJI.type = 'icon';
というところを、
TOPSY_FKOJI.type = 'list';
にしてみてください!
投稿者: F.Ko-Ji | 2010年08月13日 02:12
またまた遅くなってしまい申し訳ないです。
ありがとうございます!リスト表示できました!
こちらはtrackbackですが、指定したURLに対して言及されたツイートを表示させることはできないのでしょうか?
投稿者: takuma | 2010年08月20日 19:16
こんにちは。スクリプトの中に、
encodeURIComponent(location.href),
という箇所があると思いますが、この「location.href」を指定のURLに変えればいけると思います。
encodeURIComponent('http://www.google.co.jp/'),
のようにシングルクォーテーションでURLを括って指定してみてください。
投稿者: F.Ko-Ji | 2010年08月25日 14:53
こんにちは。素晴らしい情報をありがとうございます。さっそくJSを使わせていただきテストサイトに実装してみたのですが、ツイッターのユーザーアイコンが来てくれません(画像のURLは"http://otter.topsy.com/"です)。また現在テストで3件つぶやいていておそらく何も表示されない場所だと思うのですが「?」になっています。JSは表示形式をlistに変えただけで何もいじっていません。どこをチェックすべきでしょうか? ちなみにサイトはMTでつくっています。
投稿者: poet | 2010年08月31日 15:28
>> poetさま
コメントありがとうございます。
アイコンのURLが http://otter.topsy.com/ になってしまっているということは、
おそらく Topsy の API に問題があるんだと思います。なのでこちらとしてはどうしようもありません。
以前同様のことがあり @topsy に問い合わせて直してもらったことがありますので、Topsyに状況を説明してみるといいかもしれません。
http://twitter.com/Topsy/status/16406593575
投稿者: F.Ko-Ji | 2010年08月31日 15:53
素早いお返事ありがとうございます! さっそくTOPSYに凸ってみます!
投稿者: poet | 2010年08月31日 16:16
素晴らしい記事ですね。
Wordpress用のプラグインでなら同様の物を見かけることはありましたが、これでツイッター利用の幅が広がりそうです。
早速スクリプトを拝見させて頂きました。
そこで質問なのですが、表示されるツイート内容のテキストを置換(非表示化)することは出来ないのでしょうか?
ユーザーIDの表示にreplaceコマンドを利用されていたので、同様に本文に表示される「http://~」の部分をスペースに置換して削ることができれば良いなーと弄ってみましたが上手くいきません。
良ければご意見お願いします。
投稿者: toro | 2011年03月06日 06:00
>> toroさま
ご質問ありがとうございます。
TOPSY_FKOJI.buildTweetDiv の中の result.content を
result.content.replace(/http:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+/, '')
のようにすると置換できると思いますがいかがでしょうか?
URLの正規表現はお好みで書き換えてください。
投稿者: F.Ko-Ji | 2011年03月06日 14:05
早速のお返事ありがとうございます。
無事置換することができました。
本当に有用な可能性を持ったスクリプトですね。
投稿者: TORO | 2011年03月06日 20:18
>> TOROさま
どうもありがとうございます。
ぜひ色々とカスタマイズしてみてください。
投稿者: F.Ko-Ji | 2011年03月06日 21:28