#php #api #flickr
#php #API #фликр #flickr
Вопрос:
У меня есть некоторый php-код, который извлекает набор изображений на основе фотосета. Я хочу манипулировать этим кодом так, чтобы он захватывал набор картинок из поискового запроса.
Я знаю, что вы можете использовать метод, встроенный в api: flickr.photos.search
Просто интересно, как я могу применить это к этому коду
<?php
$params = array(
'api_key' => '2292bec0973f91d9f62fb606f85ee031',
'method' => 'flickr.photosets.getPhotos',
'photoset_id' => '72157622566216264',
'extras' => 'original_format',
'format' => 'php_serial'
);
$encoded_params = array();
foreach ($params as $k => $v){ $encoded_params[] = urlencode($k).'='.urlencode($v); }
$ch = curl_init();
$timeout = 5; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, 'http://api.flickr.com/services/rest/?'.implode('amp;', $encoded_params));
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
$rsp_obj = unserialize($file_contents);
if ($rsp_obj['stat'] == 'ok') {
$photos = $rsp_obj["photoset"]["photo"];
echo "
<ul>";
foreach($photos as $photo) {
$farm = $photo['farm'];
$server = $photo['server'];
$photo_id = $photo['id'];
$secret = $photo['secret'];
$photo_title = $photo['title'];
echo '<li><img src="http://farm'.$photo['farm'].'.static.flickr.com/'.$photo['server'].'/'.$photo['id'].'_'.$photo['secret'].'_t.jpg" alt="'.$photo['title'].'" ></li>';
}
echo "
</ul>
";
} else {
echo "Error getting photos";
}
?>
Комментарии:
1. На этот вопрос довольно сложно ответить. Вы предоставляете фрагмент кода без представления о том, как много вы знаете об этом и насколько вы притворяетесь, исходя из ответа.
2. Это весь код — этот конкретный код извлекает массив изображений с flickr из набора фотографий, определенного в массиве params. Затем эти параметры внедряются в URL для извлечения изображений. Я попытался изменить это так, чтобы вместо поиска идентификатора фотосета он искал тег поиска и выполнял метод flickr.photos.search. Который предварительно встроен в api. Я думал, что это будет простая замена определенных переменных, поскольку захват фотографий, безусловно, одинаков, независимо от того, какой метод вы используете.
Ответ №1:
Вы читали документацию? flickr.photos.search
Эти методы возвращают похожие данные, но название массива верхнего уровня отличается (фотографии и фотосет). Предполагая, что вы изменили свои параметры, чтобы использовать правильный метод и передать соответствующие аргументы, единственное, что вам нужно изменить, это эта строка:
$photos = $rsp_obj["photos"]["photo"];
Ответ №2:
Используйте этот URL запроса:
http://flickr.com/services/rest/?method=flickr.photos.searchamp;api_key=YOUR-KEYamp;text=YOUR-SEARCH ТЕРМИНamp;per_page=10amp;формат=php_serial