集成Flickr

Flickr相册服务是充满灵性的web2.0应用,它提供了具备社会性网络的相片共享服务,让用户图片的上载、组织和查找都变得异常简单。对于开发者,Flickr还提供了读写照片数据的公共API,可以通过HTTP的API请求发送来调用Flickr提供的服务。同时,RubyForge上也有不少开源的项目,为Flickr API提供了针对Ruby语言的封装。

 

在使用Flickr服务之前,你需要拥有一个API Key。你可以去http://www.flickr.com/services/api/misc.api_keys.html获取。

 

接下来,我们看一下如何通过flickr_fu将flickr集成到项目中。

 

首先,安装flickr_fu。执行以下命令:

 

 

sudo gem install flickr-fu

 

接下来,修改environment.rb文件,加入以下内容:

 

 

require 'flickr_fu'

 

现在,我们来写一个配置文件,命名为flickr.yml,并将它放到config目录下,内容如下:

 

 

key: "<your key>"
secret: "<your secret>"
token_cache: "token_cache.yml"

 

接下来,我们在helpers目录下新建一个flickr_helper,内容如下:

 

 

module FlickrHelper
  def user_photos(user_id, photo_count = 8)
    flickr = Flickr.new(File.join(RAILS_ROOT, 'config', 'flickr.yml'))
    flickr.photos.search(:user_id => user_id).values_at(0..(photo_count - 1))
  end

  def render_flickr_widget(user_id, photo_count = 8)
    begin
      photos = user_photos(user_id, photo_count).in_groups_of(2)
      render :partial => '/flickr/flickr_widget', :locals => { :photos => photos }
    rescue Exception
      render :partial => '/flickr/unavailable'
    end
  end
end

 

接下来,看一下flickr_widget模板的内容:

 

 

<div class="flickr">
  <ul>
    <% photos.each do |row| -%>
      <li>
        <% row.each do |p| %>
          <%= link_to(image_tag(p.url(:square), :class => 'flickr_photo', :title => p.title, :border => 0, :size => '75x75'), p.url_photopage) %>
        <% end %>
      </li>
    <% end -%>
  </ul>
</div>

 

我们还为这个模板加了一点样式:

 

 

  .flickr ul
  {
    list-style-type: none;
    margin: 0;
    padding: 0;
  }
  
  .flickr ul li
  {
    border-bottom: 0;
    margin: 0;
    padding: 0;
  }

  .flickr_photo
  {
    width: 75px;
    height: 75px;
    padding: 12px 10px 32px 13px;
    margin: 0;
    background: #fff url(/images/polaroid.jpg) no-repeat;
  }

 

最后,在需要显示flickr图片的页面加入以下这句调用即可:

 

 

<%= render_flickr_widget('51537060@N04') %>

 

这样,flickr便集成到你的项目中了。

 

我们还可以给页面加上缓存,代码如下:

 

 

<% cache ("flickr_widget") do %>
  <%= render_flickr_widget('51537060@N04') %>
<% end %>

 

最后,看一下效果:

 

集成Flickr

 

 

你可能感兴趣的:(cache,网络应用,Ruby,Rails)