bit.lyをつかってpukiwikiのURLを短くするプラグイン
前回に引き続き、PukiWikiのURLを短くするシリーズ。
twitterがbit.lyを採用したらしいので、勢いで作ってみました。
json_decodeを使用しているので、jsonエクステンション必須です。
使い方は、まず、bit.lyのサイトに行ってアカウントを作ってください。
同時にAPI Keyが発行されます。
取得したアカウントとAPI Keyをそれぞれ BITLY_API_LOGIN と BITLY_API_KEY に設定します。
あとは、tinyurl と同様にテンプレートを書き換えれば完了です。
高専カンファレンスWikiですでに動作中。
ライセンスは PHP Licence です。
<?php /** * bitlyプラグイン */ // --- アカウントの設定 --- define('BITLY_API_LOGIN', ''); define('BITLY_API_KEY', ''); // --- API の設定 --- define('BITLY_API_URL', 'http://api.bit.ly/shorten'); define('BITLY_API_VER', '2.0.1'); function bitly_get_tinyurl() { global $script, $vars; $_page = isset($vars['page']) ? $vars['page'] : $defaultpage; $tiny_name = CACHE_DIR . encode($_page) . '.bitly'; $data_name = DATA_DIR . encode($_page) . '.txt'; if (! file_exists($data_name)) { return false; } if (! file_exists($tiny_name)) { $pageurl = $script.'?'.rawurlencode($_page); $tinyurl = bitly_call_webapi($pageurl); if($tinyurl) { $fp = fopen($tiny_name, 'w') or die_message('cannot write ' . htmlspecialchars($tiny_name)); fputs($fp, $tinyurl); fclose($fp); } else { return false; } } else { $tinyurl = file_get_contents($tiny_name); if(!preg_match(',^http://bit.ly/,', $tinyurl)) { return false; } } return $tinyurl; } function bitly_call_webapi($url) { $params = array( 'version' => BITLY_API_VER, 'longUrl' => $url, 'login' => BITLY_API_LOGIN, 'apiKey' => BITLY_API_KEY, ); $request_url = BITLY_API_URL.'?'.http_build_query($params); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $request_url); curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $res = curl_exec($ch); curl_close($ch); $json = json_decode($res, true); if($json && isset($json['results'][$url]['shortUrl'])) { return trim($json['results'][$url]['shortUrl']); } else return false; } ?>