自分がブックマークしようとしているページをtwitterに投稿するスクリプトとbookmarklet
えらい盛り上がりを見せている twitter 。ゆるいコミュニケーションである事以上に、何となくゆるいアプリが作れちゃうAPIが公開されている事が面白いという方がおられたのですが、激しく同感かも知れず。
んで、タイトル通りです。普段はソーシャルブックマークの bookmarklet を使ってブックマークしていますが、これと差し替える感じで
- twittter API でブックマークしようとしているページ情報を投稿する
- 自動的にソーシャルブックマークのブックマークページにリダイレクト
みたいなモノがあれば面白いかもなと。既にあるとは思うんですが、何となく気分転換をかねて自作してみた次第であります。スクリプトの編集、サーバー上への設置、bookmarklet の自作...と面倒な手順を踏まねばなりませんが、宜しければどうぞという事で。
MacOSX用のclient「twitterrific」で見えやすくする為に投稿内容に \n を入れてます。
//----(config)----------------------------// twitterの username
$twitter_username = 'twitter_username';// twitterの password
$twitter_password = 'twitter_password';// 普段使っているソーシャルブックマークを表す識別子
// h はてなブックマーク
// d del.icio.us
// (その他は下の $sbm_array を編集して適当に追加して下さいまし)
$sbm_name = 'd';// 普段使っているソーシャルブックマークでのユーザー名
$sbm_user = 'sbm_username';
//---------------------------------------
// sbm table
$sbm_array = array( 'h' => array('name' => 'hatena',
'url' => 'http://b.hatena.ne.jp/append?%%SBM_TARGET%%'),
'd' => array('name' => 'del.icio.us',
'url' => 'http://del.icio.us/%%SBM_USERNAME%%/?v=2&url=%%SBM_TARGET%%&title=%%SBM_TITLE%%'));// parameter check
if(!isset($_GET['url']) || !isset($_GET['title'])){
die("[ERROR] illegal parameters.");
}else{
$sbm = $sbm_array[$sbm_name];
$sbm_target = urldecode($_GET['url']);
$sbm_title = $_GET['title'];
}// shorten url for twitter length distriction
$shortened_url = file_get_contents("http://tinyurl.com/api-create.php?url=".$sbm_target);// cut
$sbm_title = mb_substr($sbm_title, 0, 50);// the message which want to send
$message = "bookmarking on {$sbm['name']}!!\n{$sbm_title}:\n{$shortened_url}";// the twitter API address
$twitter_api = 'http://twitter.com/statuses/update.xml';// set up and execute the curl process
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $twitter_api);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "status=$message");
curl_setopt($ch, CURLOPT_USERPWD, "$twitter_username:$twitter_password");
$buffer = curl_exec($ch);
curl_close($ch);// replace username, url and title
$url = $sbm['url'];
$url = str_replace('%%SBM_USERNAME%%', $sbm_user, $url);
$url = str_replace('%%SBM_TARGET%%', $sbm_target, $url);
$url = str_replace('%%SBM_TITLE%%', $sbm_title, $url);// redirect to sbm site.
header("Location: {$url}");
?>
以下、使い方です。
- ソースを展開して必要な値を記入する
- twitterのユーザー名
- twitterのパスワード
- 使いたいソーシャルブックマークの識別子(del.icio.usならd, はてブならh)
- ソーシャルブックマークのユーザー名
- phpの使えるレンタルサーバーとかにftpでアップロード
- アップロードしたスクリプトの場所が http://example.com/twittark.php/ 以下であれば、javascript:location.href='http://example.com/twittark.php?sbm=d&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title) をブックマークとして追加
こんな感じで後は普通にbookmarkletとして使えるというもの。...ってか、設定面倒くさいですが。
twitter の username, password を頂く訳にはいかないのでサービスとして作るのは断念。こんな手順になっちまいました。twitthisがやってる事と同じ事をすればもちっと美しくなるかな?