def search(user=nil,tags=nil,tag_mode=nil,text=nil,min_upload_date=nil,
max_upload_date=nil,min_taken_date=nil,max_taken_date=nil,
license=nil,extras=nil,per_page=nil,page=nil,sort=nil)
user = user.nsid if user.respond_to?(:nsid)
tags = tags.join(',') if tags.class == Array
min_upload_date = min_upload_date.to_i if
min_upload_date.class == Time
max_upload_date = max_upload_date.to_i if
max_upload_date.class == Time
min_taken_date = @flickr.mysql_datetime(min_taken_date) if
min_taken_date.class == Time
max_taken_date = @flickr.mysql_datetime(max_taken_date) if
max_taken_date.class == Time
license = license.id if license.class == Flickr::License
extras = extras.join(',') if extras.class == Array
args = {}
args['user_id'] = user if user
args['tags'] = tags if tags
args['tag_mode'] = tag_mode if tag_mode
args['text'] = text if text
args['min_upload_date'] = min_upload_date if min_upload_date
args['max_upload_date'] = max_upload_date if max_upload_date
args['min_taken_date'] = min_taken_date if min_taken_date
args['max_taken_date'] = max_taken_date if max_taken_date
args['license'] = license if license
args['extras'] = extras if extras
args['per_page'] = per_page if per_page
args['page'] = page if page
args['sort'] = sort if sort
res = @flickr.call_method('flickr.photos.search',args)
return Flickr::PhotoList.from_xml(res,@flickr)
end