2014-10-19 53 views
0

我从flickr检索个人的照片集(专辑)列表。我如何从这个散列数组中提取ID,然后使用flickr.photosets.getPhotos来列出每个相册中的图像?我仍然在学习Ruby,并且对此感到非常困惑。我很感激任何正确的方向。Ruby Flickr API和Photosets

当我尝试将set.each do .. anything添加到@photosets块 - 我得到一个没有方法错误'each'。

photos_controller.rb

require 'flickraw' 

class PhotosController < ApplicationController 

    def index 
    FlickRaw.api_key = ENV['FlickRaw_api_key'] 
    FlickRaw.shared_secret = ENV['FlickRaw_shared_secret'] 

    @photosets = flickr.photosets.getList(user_id: '[email protected]').each do |set| 
     set 
    end 
    end 
end 

照片/ index.html.erb

<h1>Listing photosets</h1> 

<%= @photosets %> 

电流输出

清单photosest

{ 
    "id" =>"72157633435549025", 
    "primary" =>"8720558709", 
    "secret" =>"d6f79d3d3c", 
    "server" =>"7395", 
    "farm" =>8, 
    "photos" =>"8", 
    "videos" =>0, 
    "title" =>"Poetry Project", 
    "description" =>"", 
    "needs_interstitial" =>0, 
    "visibility_can_see_set" =>1, 
    "count_views" =>"4", 
    "count_comments" =>"0", 
    "can_comment" =>0, 
    "date_create" =>"1368044794", 
    "date_update" =>"1368044886" 
}, 
{ 
    "id" =>"72157633308505122", 
    "primary" =>"8674031898", 
    "secret" =>"8cd5722def", 
    "server" =>"8543", 
    "farm" =>9, 
    "photos" =>"22", 
    "videos" =>0, 
    "title" =>"Photo Midterm", 
    "description" =>"", 
    "needs_interstitial" =>0, 
    "visibility_can_see_set" =>1, 
    "count_views" =>"2", 
    "count_comments" =>"0", 
    "can_comment" =>0, 
    "date_create" =>"1366676884", 
    "date_update" =>"1366943480" 
} 

回答

0

我想通了 - 这是我使用的代码。这使您可以获取有关个人相册(又称'照片')的信息,然后获取每张照片集中的照片。

控制器 需要 'flickraw'

class PhotosController < ApplicationController 
    def index 
    FlickRaw.api_key = ENV['FlickRaw_api_key'] 
    FlickRaw.shared_secret = ENV['FlickRaw_shared_secret'] 

    @photosets = flickr.photosets.getList(user_id: '[email protected]').map do |set| 
     flickr.photosets.getPhotos(photoset_id: set['id']).photo.map do |photo| 
     FlickRaw.url_b(photo) 
     end 
    end 
    end 
end 

查看

<% @photosets[0].each do |image| %> 
<%= image_tag image %> 
<% end %> 
1

你快到了。如果您的目的是将的photosets的输出数据和各自的图片在你index.html.erb,你可以尝试这样的:

@photosets = flickr.photosets.getList(user_id: '[email protected]').each do |set| 
    set["photos"] = flickr.photosets.getPhotos(photoset_id: set["id"]) 
end 

这将输出类似:

{ 
    "id" =>"72157633435549025", 
    "primary" =>"8720558709", 
    "secret" =>"d6f79d3d3c", 
    "server" =>"7395", 
    "farm" =>8, 
    "photos" =>"8", 
    "videos" =>0, 
    "title" =>"Poetry Project", 
    "description" =>"", 
    "needs_interstitial" =>0, 
    "visibility_can_see_set" =>1, 
    "count_views" =>"4", 
    "count_comments" =>"0", 
    "can_comment" =>0, 
    "date_create" =>"1368044794", 
    "date_update" =>"1368044886" 
    "photos" => [{"id" => "2484", 
       "secret"=>"123456", 
       "server"=>"1", 
       "title"=>"my photo", 
       "isprimary"=>"0"}, 
       {"id" => "2483", 
       "secret" => "123456", 
       "server" => "1", 
       "title" => "flickr rocks", 
       "isprimary" => "1"}] 
}, 
{ # etc... } 

我不确定你的意思通过sets.each do .. anything不起作用,因为我的代码中没有看到sets

+0

这使得这么多的意义,我......但我发现这个错误未定义的方法'[] ='for# latazzajones 2014-10-20 01:14:53

+0

任何想法的代码部分触发它? 'getList'或'getPhoto'期间? – 2014-10-20 01:17:55

+0

我在set [“photos”]后注释掉了所有内容,并且没有错误。 – latazzajones 2014-10-20 01:20:47