我如何使用Flickr API从一个地方返回图像



我正在使用jusfieimage gallery, swipebox和PHP Flickr API Wrapper来返回和显示图库中的图像。

问题是,目前它显示从某个用户帐户获得的图像。是否有办法修改下面的代码,使它只显示来自"Southampton"而不是从指定的userID显示图像?

<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<link rel="stylesheet" href="justifiedGallery/justifiedGallery.min.css" />
<script src="justifiedGallery/jquery.justifiedGallery.min.js"></script>
<script src="swipebox/src/js/jquery.swipebox.js"></script>
<link rel="stylesheet" href="swipebox/src/css/swipebox.css">
</head>
<div id="gallery">
<?php
include_once('./phpFlickr.php');
$key = "491566f49be9289";    // enter your API key here
$secret = "11eb02"; // enter your API secret here

$userid = "163300815@N05"; // Get flickr user id here. Currently points to Jasper Reddin

$f = new phpFlickr($key, $secret);

$response = $f->people_getPublicPhotos($userid, NULL, "url_m,url_h", 500)['photos']['photo'];
foreach ($response as $photo) {
$title = str_replace("'", "&#39;", $photo['title']);
echo '<a href="' . $photo['url_h'] . '" class="swipebox" title="' . $title . '"><img alt="' . $title . '" src="' . $photo['url_m'] . '"></a>';
}
?>
</div>
<script>
$('#gallery').justifiedGallery( {
rowHeight: 200,
lastRow: 'nojustify',
rel: 'Portfolio',
margins: 2
});
$(".swipebox").swipebox({
loopAtEnd: true
});
</script>
<style>
body {
margin: 0;
}
#gallery {
background-color: black;
}
</style>

因为你没有链接到你正在使用的PHP库,我猜它是Dan Coulter的这个,我注意到它是7年前更新的。但是,它允许您使用->call方法调用Flickr API中的任何方法,因此您应该能够使用Flickr文档中列出的任何方法来实现您的目标。

特别地,有一个叫做flickr.photos.search的方法,它允许你为你想要的照片指定很多不同的选项。最贴切地:

  • user_id指定返回谁的照片
  • bbox指定矩形/四边形地理区域
  • lat,lon,radiusradius_units指定圆形地理区域
  • woe_idplace_id指定已识别的地方,如城镇

文档说,你不能搜索所有照片在某个位置,如果你没有指定一些其他限制,如标签或日期,那么只有照片添加在最近12小时将返回。

要查找woe_idplace_id的值,可以使用标题为&;place &;的方法,例如flickr.places.find

这两个方法在Dan Coulter的库中都有包装器,所以你的代码可能看起来像这样(完全未经测试):

$places = $f->places_find('Southampton')['places']['place'];
foreach  ( $places as $place ) {
echo "<h2>{$place['_content']}</h2>";
$photos = $f->photos_search([
'place_id' => $place['place_id'],
// other search parameters here
'extras' => 'url_m,url_h',
'per_page' => 500
])['photos']['photo'];
foreach ( $photos as $photo ) {
$title = str_replace("'", "&#39;", $photo['title']);
echo '<a href="' . $photo['url_h'] . '" class="swipebox" title="' . $title . '"><img alt="' . $title . '" src="' . $photo['url_m'] . '"></a>';
}
}

最新更新