What's wrong with this code?

R

ry an

I'm trying to interface with the flickr API to pull my photos into my
site. I don't want to use the "flickr.rb" gem, I'd like to do it the
other way so I can learn (plus I had trouble loading the gem on my
server). Anyway, here's what I have:

#Application.rb controller

def get_response(path, http)
request = Net::HTTP::Get.new(path)
response = http.request(request)
response.value
response.body
end

path =
"/services/rest/?api_key=API_KEY&method=flickr.photos.search&user_id=USER_ID&tags=TAG"
http = Net::HTTP.new('flickr.com')

@photo_ids = Array.new
http.start do |http|
xml = get_response(path, http)
REXML::Document.new(xml).root.get_elements('photo').each do
|photo|
id = photo.attributes['id']
@photo_ids << id
end
end

#Application.rhtml layout

<% for p in @photo_ids %>
<%= p %>
<% end %>

This just doesn't do anything. It doesn't give me errors, but it the
@photo_ids variable is empty. I've also tried <%= p.id %> and so on.

Can someone see something wrong with this code? Thanks!
 
E

Eric Hodel

I'm trying to interface with the flickr API to pull my photos into my
site. I don't want to use the "flickr.rb" gem, I'd like to do it the
other way so I can learn (plus I had trouble loading the gem on my
server). Anyway, here's what I have:

#Application.rb controller

def get_response(path, http)
request = Net::HTTP::Get.new(path)
response = http.request(request)
response.value
response.body
end

path =
"/services/rest/?
api_key=API_KEY&method=flickr.photos.search&user_id=USER_ID&tags=TAG"
http = Net::HTTP.new('flickr.com')

@photo_ids = Array.new
http.start do |http|
xml = get_response(path, http)
REXML::Document.new(xml).root.get_elements('photo').each do
|photo|

I don't know if this gives you every photo or not. I think the path
is wrong.
id = photo.attributes['id']
@photo_ids << id
end
end

#Application.rhtml layout

<% for p in @photo_ids %>
<%= p %>
<% end %>

This just doesn't do anything. It doesn't give me errors, but it the
@photo_ids variable is empty. I've also tried <%= p.id %> and so on.

Can someone see something wrong with this code? Thanks!

The easiest way to do this is to use OpenURI.

$ cat x.rb require 'open-uri'
require 'rexml/document'

api_key = ARGV.shift
user_id = ARGV.shift
tag = ARGV.shift

uri = "http://flickr.com/services/rest/?api_key=#{api_key}
&method=flickr.photos.search&user_id=#{user_id}&tags=#{tag}"

open uri do |res|
xml = REXML::Document.new res.read
xml.elements['/rsp/photos'].each_element do |photo|
photo_id = photo.attributes['id']
server = photo.attributes['server']
secret = photo.attributes['secret']

puts "http://static.flickr.com/#{server}/#{photo_id}_#{secret}.jpg"
end
end
$ ruby x.rb API_KEY 50178138@N00 mercury
http://static.flickr.com/73/187409033_e2b8691c02.jpg
http://static.flickr.com/44/187408732_37eb026666.jpg
http://static.flickr.com/48/151487121_a7f27506d9.jpg
http://static.flickr.com/53/126211398_cd750a0fd3.jpg
http://static.flickr.com/40/104473626_c98df0235f.jpg
http://static.flickr.com/32/42799590_b8f1774b1a.jpg
http://static.flickr.com/33/42799509_315fceaa46.jpg
http://static.flickr.com/32/42799392_56595332d1.jpg
http://static.flickr.com/30/42799302_4c984142ed.jpg
http://static.flickr.com/33/42799253_52ab0cc23b.jpg
http://static.flickr.com/26/42799227_87135b0f18.jpg
http://static.flickr.com/10/16179999_0def2efd17.jpg
$

PS: Matz has ridden in that car.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,968
Messages
2,570,153
Members
46,701
Latest member
XavierQ83

Latest Threads

Top