WEB API PROGRAMMING!

web creators 2009年12月号
WEB API PROGRAMMING!:サンプルデータ

<注意書き>
※Web APIの仕様が変更されたなどの理由により、記事と動作が異なる場合があります。あらかじめご了承ください。

●●●●●サンプルデータ1のタイトル

Pathtraq API

●●●●●サンプルデータ1

<?php
/**
* Pathtraq APIに接続する
*
* @param string メソッド名
* @param array その他のリクエストオプション
*/
function request_pathtraq($uri, $options = array())
{
$url = 'http://api.pathtraq.com/' . $uri;
if ($options) {
foreach ($options as $key => $val) {
if ($val) {
$str_params []= sprintf('%s=%s', $key, urlencode($val));
}
}
$url = sprintf('%s?%s', $url, implode('&', $str_params));
}

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,
CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
$response = curl_exec($ch);
curl_close($ch);
$result = simplexml_load_string($response);
if (! $result) {
return false;
}

return $result;
}

/**
* ニュースランキング取得APIにリクエストする
*
*/
function request_news($options = array())
{
return request_pathtraq('news_ja', $options);
}

/**
* カテゴリランキング取得APIにリクエストする
*
*/
function request_popular($options = array())
{
return request_pathtraq('popular', $options);
}

/**
* キーワード・URL検索APIにリクエストする
*
*/
function request_pages($options = array())
{
return request_pathtraq('pages', $options);
}

/**
* URL正規化APIにリクエストする
*
*/
function request_normalize_url2($url)
{
return request_pathtraq('normalize_url2',
array('api' => 'xml', 'url' => $url));
}

/**
* ページカウンタAPIにリクエストする
*
*/
function request_page_counter($options = array())
{
return request_pathtraq('page_counter2', $options);
}

/**
* ページチャートAPIにリクエストする
*
*/
function request_page_chart($options = array())
{
return request_pathtraq('page_chart', $options);
}

$keywords = '';
$result = array();
if (! isset($_GET['search'])) {
$hot_news = request_news(array('m' => 'hot'));
$upcoming_news = request_news(array('m' => 'upcoming'));
$hot_popular = request_popular(array('m' => 'hot'));
$upcoming_popular = request_popular(array('m' => 'upcoming'));
} else {
$url = $_GET['keywords'];
$result = request_pages(array('url' => $url));
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>パストラックAPIを使って、いろいろなニュースランキングを取得してみよう</title>
<style text="text/css">
table { border: 1px solid gray; border-collapse: collapse; margin: 15px; float: left; height: 400px; }
table th, table td { border: 1px solid gray; text-align: center; padding: 5px; }
.result { width: 240px; }
</style>
</head>

<body style="text-align: center;">
<h2>パストラックAPIを使って、いろいろなニュースランキングを取得してみよう</h2>

<p>検索したニュースのキーワードやサイトのURLを入力してください。</p>
<form action="pathtraq.php" class="search">
<label for="keywords"></label><input type="text" name="keywords" value="<?php echo htmlspecialchars($keywords) ?>" size="60">
<br>
<input type="submit" name="search" value="検索する">
</form>
<br>

<?php if (! $result): ?>

<table class="result">
<caption>ホットニュース</caption>
<?php foreach ($hot_news->channel->item as $item): ?>
<tr>
<td>
<?php $dc = $item->children('http://api.pathtraq.com/xml/pathtraq/0.1/') ?>
<a href="<?php echo $item->link ?>"><?php echo htmlspecialchars($item->title, ENT_QUOTES) ?></a> (<?php echo $dc->hits ?> hits)
</td>
</tr>
<?php endforeach; ?>
</table>

<table class="result">
<caption>注目ニュース</caption>
<?php foreach ($upcoming_news->channel->item as $item): ?>
<tr>
<td>
<?php $dc = $item->children('http://api.pathtraq.com/xml/pathtraq/0.1/') ?>
<a href="<?php echo $item->link ?>"><?php echo htmlspecialchars($item->title, ENT_QUOTES) ?></a> (<?php echo $dc->hits ?> hits)
</td>
</tr>
<?php endforeach; ?>
</table>

<table class="result">
<caption>人気のページ</caption>
<?php foreach ($hot_popular->channel->item as $item): ?>
<tr>
<td>
<?php $dc = $item->children('http://api.pathtraq.com/xml/pathtraq/0.1/') ?>
<a href="<?php echo $item->link ?>"><?php echo htmlspecialchars($item->title, ENT_QUOTES) ?></a> (<?php echo $dc->hits ?> hits)
</td>
</tr>
<?php endforeach; ?>
</table>

<table class="result">
<caption>注目のページ</caption>
<?php foreach ($upcoming_popular->channel->item as $item): ?>
<tr>
<td>
<?php $dc = $item->children('http://api.pathtraq.com/xml/pathtraq/0.1/') ?>
<a href="<?php echo $item->link ?>"><?php echo htmlspecialchars($item->title, ENT_QUOTES) ?></a> (<?php echo $dc->hits ?> hits)
</td>
</tr>
<?php endforeach; ?>
</table>

<?php else: ?>

<table>
<caption>検索結果</caption>
<?php foreach ($result->channel->item as $item): ?>
<tr>
<td>
<?php $dc = $item->children('http://api.pathtraq.com/xml/pathtraq/0.1/') ?>
<a href="<?php echo $item->link ?>"><?php echo htmlspecialchars($item->title, ENT_QUOTES) ?></a> (<?php echo $dc->hits ?> hits)
</td>
</tr>
<?php endforeach; ?>
</table>

<?php endif; ?>

<br clear="both">
<hr>
Powered by <a href="http://pathtraq.com/">Pathrraq</a><br>
</body>
</html>

●●●●●

←BACK

Copyright (c) 2009 MdN Corporation  All rights reserved.