В основном я создаю страницу с миниатюрами.Существует один эскиз для каждого тега, который есть у указанного пользователя.Так что, если пользователь использовал 50 различных тегов, будет 50 миниатюр (в конечном итоге я разбью это на страницы).Оно работает;это просто неэффективно.Даже с 8 тегами это очень медленно, так как приходится ждать 9 ответов (+1 для списка тегов) с серверов Flickr.Есть ли более эффективный способ сделать это?Кажется, я не могу найти лучшего решения во время сканирования API Flickr.Вот что я сейчас использую для этого:
<?php
function get_api_url($additional_params) {
$params = array_merge($additional_params, array(
'api_key' => API_KEY,
'format' => 'php_serial',
'user_id' => USER_ID,
));
$encoded_params = array();
foreach ($params as $k => $v)
$encoded_params[] = urlencode($k) . '=' . urlencode($v);
return 'http://api.flickr.com/services/rest/?' . implode('&', $encoded_params);
}
// Set any additional paramaters.
$additional_params = array(
'method' => 'flickr.tags.getListUser',
);
// Get the tags.
$rsp_obj = unserialize(file_get_contents(get_api_url($additional_params)));
// Parse the tags.
$unparsed_tags = $rsp_obj['who']['tags']['tag'];
$tags = array();
foreach ($unparsed_tags as $tag) {
$tags[] = $tag['_content'];
}
// Set any additional parameters.
$additional_params = array(
'method' => 'flickr.photos.search',
'per_page' => '1',
);
$api_url = get_api_url($additional_params);
// Call the API and parse the response.
echo "<div id=\"tags\">";
foreach ($tags as $tag) {
$rsp_obj = unserialize(file_get_contents($api_url . '&tags=' . urlencode($tag)));
$photo = $rsp_obj['photos']['photo'][0];
$image_url = 'http://farm' . $photo['farm'] . '.static.flickr.com/' .
$photo['server'] . '/' . $photo['id'] . '_' . $photo['secret'] . '_m.jpg';
$tag_url = "/gallery/?tag=$tag";
$tag = ucwords($tag);
echo <<<HD
<a class="tag" href="$tag_url">
<img src="$image_url" />
<span class="caption">$tag</span>
</a>
HD;
}
echo '</div>';
?>