Home > PHP > はてブ Web Hook を使ってブックマーク時に Twitter に投稿する

はてブ Web Hook を使ってブックマーク時に Twitter に投稿する

はてなブックマークから Web Hook 機能というのがリリースされました。
これははてブにブックマークしたタイミングで、設定した URL に HTTP POST を投げてくれます。

というわけで、これを使ってはてブにブックマークしたら Twitter にその内容を投稿する PHP スクリプトを書いてみました。

<?php
require_once 'HTTP/Client.php';
header('Content-type: text/plain; charset=utf-8');

// はてなブックマーク Web Hook Key
define('HB_WEBHOOK_KEY', 'your_key');

// bit.ly アカウント
define('BITLY_USERNAME', 'your_username');
define('BITLY_API_KEY', 'your_api_key');

// Twitter アカウント
define('TW_USERNAME', 'your_username');
define('TW_PASSWORD', 'your_password');

// 正しいパラメータが設定されている場合
if(urldecode($_POST['key']) == HB_WEBHOOK_KEY) {
  if(isset($_POST['title'], $_POST['url'], $_POST['status'], $_POST['comment'])) {

    // ブックマークを追加した場合のみ
    if($_POST['status'] == 'add') {

      // パラメータをデコードする
      $title = mb_convert_encoding(urldecode($_POST['title']), 'UTF-8', 'auto');
      $url = urldecode($_POST['url']);
      $comment = preg_replace('/\[.+\]/', '', mb_convert_encoding(urldecode($_POST['comment']), 'UTF-8', 'auto'));

      // URL を bit.ly で短縮する
      $client =& new HTTP_Client();
      $http_status = $client->get('http://api.bit.ly/shorten?version=2.0.1&login='.BITLY_USERNAME.'&apiKey='.BITLY_API_KEY.'&longUrl='.$url);
      if($http_status == 200) {
        $response = $client->currentResponse();
        $result = mb_convert_encoding($response['body'], 'UTF-8', 'auto');
        $json = json_decode($result, true);
        if($json['statusCode'] == 'OK') {
          $url = $json['results'][$url]['shortUrl'];
        }
      }
      $status = "[B!] $title $url $comment";

      // Twitter に投稿する
      $client =& new HTTP_Client(null, array('Authorization' => 'Basic '.base64_encode(TW_USERNAME.':'.TW_PASSWORD)));
      $http_status = $client->post('http://twitter.com/statuses/update.xml', array('status' => $status));
      if($http_status == 200) {
        print('success.');
      } else {
        print('error. status='.$http_status);
      }
    }
  } else {
    header('HTTP', true, 400);
  }
} else {
  header('HTTP', true, 401);
}
?>

改変などはご自由にどうぞ。
せっかくなので Twitter の OAuth に対応させてみようかと思いましたが、途中でめんどくさくなりましたw

(追記@20090607)
140 文字以内に収まるように、bit.ly で短縮 URL にしてから投稿するようにしました。

関連する記事

Comments:0

Comment Form
Remember personal info

Home > PHP > はてブ Web Hook を使ってブックマーク時に Twitter に投稿する

Search
Feeds
Meta
あわせて読みたい
あわせて読みたいブログパーツ
Others...
フィードメーター - sukechan.net
track feed

Return to page top