You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
265 lines
7.4 KiB
265 lines
7.4 KiB
6 years ago
|
<?php
|
||
|
|
||
|
/**
|
||
|
* Flickr
|
||
|
*
|
||
|
* with help of the API this class delivers all kind of Images from flickr
|
||
|
*
|
||
|
* @package socialstreams
|
||
|
* @subpackage socialstreams/flickr
|
||
|
* @author ThemePunch <info@themepunch.com>
|
||
|
*/
|
||
|
|
||
|
class TP_flickr {
|
||
|
|
||
|
/**
|
||
|
* API key
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @access private
|
||
|
* @var string $api_key flickr API key
|
||
|
*/
|
||
|
private $api_key;
|
||
|
|
||
|
/**
|
||
|
* API params
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @access private
|
||
|
* @var array $api_param_defaults Basic params to call with API
|
||
|
*/
|
||
|
private $api_param_defaults;
|
||
|
|
||
|
/**
|
||
|
* Basic URL
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @access private
|
||
|
* @var string $url Url to fetch user from
|
||
|
*/
|
||
|
private $flickr_url;
|
||
|
|
||
|
/**
|
||
|
* Initialize the class and set its properties.
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @param string $api_key flickr API key.
|
||
|
*/
|
||
|
public function __construct($api_key) {
|
||
|
$this->api_key = $api_key;
|
||
|
$this->api_param_defaults = array(
|
||
|
'api_key' => $this->api_key,
|
||
|
'format' => 'json',
|
||
|
'nojsoncallback' => 1,
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Calls Flicker API with set of params, returns json
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @param array $params Parameter build for API request
|
||
|
*/
|
||
|
private function call_flickr_api($params){
|
||
|
//build url
|
||
|
$encoded_params = array();
|
||
|
foreach ($params as $k => $v){
|
||
|
$encoded_params[] = urlencode($k).'='.urlencode($v);
|
||
|
}
|
||
|
|
||
|
//call the API and decode the response
|
||
|
$url = "https://api.flickr.com/services/rest/?".implode('&', $encoded_params);
|
||
|
$rsp = json_decode(file_get_contents($url));
|
||
|
return $rsp;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get User ID from its URL
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @param string $user_url URL of the Gallery
|
||
|
*/
|
||
|
public function get_user_from_url($user_url){
|
||
|
//gallery params
|
||
|
$user_params = $this->api_param_defaults + array(
|
||
|
'method' => 'flickr.urls.lookupUser',
|
||
|
'url' => $user_url,
|
||
|
);
|
||
|
|
||
|
//set User Url
|
||
|
$this->flickr_url = $user_url;
|
||
|
|
||
|
//get gallery info
|
||
|
$user_info = $this->call_flickr_api($user_params);
|
||
|
return $user_info->user->id;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get Group ID from its URL
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @param string $group_url URL of the Gallery
|
||
|
*/
|
||
|
public function get_group_from_url($group_url){
|
||
|
//gallery params
|
||
|
$group_params = $this->api_param_defaults + array(
|
||
|
'method' => 'flickr.urls.lookupGroup',
|
||
|
'url' => $group_url,
|
||
|
);
|
||
|
|
||
|
//set User Url
|
||
|
$this->flickr_url = $group_url;
|
||
|
|
||
|
//get gallery info
|
||
|
$group_info = $this->call_flickr_api($group_params);
|
||
|
return $group_info->group->id;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get Public Photos
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @param string $user_id flicker User id (not name)
|
||
|
* @param int $item_count number of photos to pull
|
||
|
*/
|
||
|
public function get_public_photos($user_id,$item_count=10){
|
||
|
//public photos params
|
||
|
$public_photo_params = $this->api_param_defaults + array(
|
||
|
'method' => 'flickr.people.getPublicPhotos',
|
||
|
'user_id' => $user_id,
|
||
|
'extras' => 'description, license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media, path_alias, url_sq, url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l, url_o',
|
||
|
'per_page'=> $item_count,
|
||
|
'page' => 1
|
||
|
);
|
||
|
|
||
|
//get photo list
|
||
|
$public_photos_list = $this->call_flickr_api($public_photo_params);
|
||
|
return $public_photos_list->photos->photo;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get Photosets List from User
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @param string $user_id flicker User id (not name)
|
||
|
* @param int $item_count number of photos to pull
|
||
|
*/
|
||
|
public function get_photo_sets($user_id,$item_count=10){
|
||
|
//photoset params
|
||
|
$photo_set_params = $this->api_param_defaults + array(
|
||
|
'method' => 'flickr.photosets.getList',
|
||
|
'user_id' => $user_id,
|
||
|
'per_page'=> $item_count,
|
||
|
'page' => 1
|
||
|
);
|
||
|
|
||
|
//get photoset list
|
||
|
$photo_sets_list = $this->call_flickr_api($photo_set_params);
|
||
|
return $photo_sets_list->photosets->photoset;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get Photoset Photos
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @param string $photo_set_id Photoset ID
|
||
|
* @param int $item_count number of photos to pull
|
||
|
*/
|
||
|
public function get_photo_set_photos($photo_set_id,$item_count=10){
|
||
|
//photoset photos params
|
||
|
$photo_set_params = $this->api_param_defaults + array(
|
||
|
'method' => 'flickr.photosets.getPhotos',
|
||
|
'photoset_id' => $photo_set_id,
|
||
|
'per_page' => $item_count,
|
||
|
'page' => 1,
|
||
|
'extras' => 'license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media, path_alias, url_sq, url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l, url_o'
|
||
|
);
|
||
|
|
||
|
//get photo list
|
||
|
$photo_set_photos = $this->call_flickr_api($photo_set_params);
|
||
|
return $photo_set_photos->photoset->photo;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get Groop Pool Photos
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @param string $group_id Photoset ID
|
||
|
* @param int $item_count number of photos to pull
|
||
|
*/
|
||
|
public function get_group_photos($group_id,$item_count=10){
|
||
|
//photoset photos params
|
||
|
$group_pool_params = $this->api_param_defaults + array(
|
||
|
'method' => 'flickr.groups.pools.getPhotos',
|
||
|
'group_id' => $group_id,
|
||
|
'per_page' => $item_count,
|
||
|
'page' => 1,
|
||
|
'extras' => 'license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media, path_alias, url_sq, url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l, url_o'
|
||
|
);
|
||
|
|
||
|
//get photo list
|
||
|
$group_pool_photos = $this->call_flickr_api($group_pool_params);
|
||
|
return $group_pool_photos->photos->photo;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get Gallery ID from its URL
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @param string $gallery_url URL of the Gallery
|
||
|
* @param int $item_count number of photos to pull
|
||
|
*/
|
||
|
public function get_gallery_from_url($gallery_url){
|
||
|
//gallery params
|
||
|
$gallery_params = $this->api_param_defaults + array(
|
||
|
'method' => 'flickr.urls.lookupGallery',
|
||
|
'url' => $gallery_url,
|
||
|
);
|
||
|
|
||
|
//get gallery info
|
||
|
$gallery_info = $this->call_flickr_api($gallery_params);
|
||
|
return $gallery_info->gallery->id;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get Gallery Photos
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @param string $gallery_id flicker Gallery id (not name)
|
||
|
* @param int $item_count number of photos to pull
|
||
|
*/
|
||
|
public function get_gallery_photos($gallery_id,$item_count=10){
|
||
|
//gallery photos params
|
||
|
$gallery_photo_params = $this->api_param_defaults + array(
|
||
|
'method' => 'flickr.galleries.getPhotos',
|
||
|
'gallery_id' => $gallery_id,
|
||
|
'extras' => 'description, license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media, path_alias, url_sq, url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l, url_o',
|
||
|
'per_page'=> $item_count,
|
||
|
'page' => 1
|
||
|
);
|
||
|
|
||
|
//get photo list
|
||
|
$gallery_photos_list = $this->call_flickr_api($gallery_photo_params);
|
||
|
return $gallery_photos_list->photos->photo;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Encode the flickr ID for URL (base58)
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @param string $num flickr photo id
|
||
|
*/
|
||
|
public static function base_encode($num, $alphabet='123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ') {
|
||
|
$base_count = strlen($alphabet);
|
||
|
$encoded = '';
|
||
|
while ($num >= $base_count) {
|
||
|
$div = $num/$base_count;
|
||
|
$mod = ($num-($base_count*intval($div)));
|
||
|
$encoded = $alphabet[$mod] . $encoded;
|
||
|
$num = intval($div);
|
||
|
}
|
||
|
if ($num) $encoded = $alphabet[$num] . $encoded;
|
||
|
return $encoded;
|
||
|
}
|
||
|
}
|
||
|
?>
|