call_method('flickr.photos.search', array( 'auth_token' => $auth_token, 'user_id' => 'me', 'has_geo' => 1, 'tags' => 'cameraphone', 'min_taken_date' => $ago, 'extras' => 'machine_tags,geo', )); foreach($rsp['photos']['photo'] as $photo) { .... } */ class Flickr { function Flickr($api_key, $api_secret='') { $this->api_key = $api_key; $this->api_secret = $api_secret; } function call_method($method, $args=array()) { $args['format'] = 'php_serial'; $args['api_key'] = $this->api_key; $args['method'] = $method; if ($args['auth_token']) { $args['api_sig'] = $this->sign_args($args, $this->api_secret); } $encoded_params = array(); foreach ($args as $k => $v){ $encoded_params[] = urlencode($k).'='.urlencode($v); } $url = "http://api.flickr.com/services/rest/?".implode('&', $encoded_params); $rsp = file_get_contents($url); $rsp_obj = unserialize($rsp); return $rsp_obj; } function sign_args($args, $secret) { ksort($args); $a = ''; foreach ($args as $k => $v){ $a .= $k . $v; } return md5($secret.$a); } } ?>