0.0
No commit activity in last 3 years
No release in over 3 years
Event machine based flickr library with a syntax close to the syntax described on http://www.flickr.com/services/api
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

= 1.0.0.beta.3
= 0.3.0.beta.1
>= 1.0.0.beta.3
>= 1.1.1
 Project Readme

EM-Flickraw¶ ↑

This port of github.com/hanklords awesome flickraw library uses eventmachine for all its HTTP calls. Ruby 1.9, eventmachine, em-http-request and em-synchrony required.

The source code can be found in the em branch at github.com/jkraemer/flickraw

As it is now, this gem depends on beta versions of these em libs:

  • eventmachine - 1.0.0.beta.3

  • em-http-request - 1.0.0.beta.3

  • em-synchrony - 0.3.0.beta.1

I’ll update these dependencies when final versions are out.

Installation:¶ ↑

gem install em-flickraw

Original contents of README below…

Flickraw¶ ↑

Flickraw is a library to access flickr api in a simple way. It maps exactly the methods described in the official api documentation. It also tries to present the data returned in a simple and intuitive way. The methods are fetched from flickr when loading the library by using introspection capabilities. So it is always up-to-date with regards to new methods added by flickr.

The github repository: github.com/hanklords/flickraw

Installation¶ ↑

Type this in a console (you might need to be superuser)

gem install flickraw

This will recreate the documentation by fetching the methods descriptions from flickr and then virtually plugging them in standard rdoc documentation.

rake rdoc

Features¶ ↑

  • Small single file: flickraw.rb is less than 300 lines

  • Complete support of flickr API. This doesn’t require an update of the library

  • Ruby syntax similar to the flickr api

  • Flickr authentication

  • Photo upload

  • Proxy support

  • Delayed library loading (for rails users)

  • Flickr URLs helpers

Usage¶ ↑

Simple¶ ↑

require 'flickraw'

FlickRaw.api_key="... Your API key ..."
FlickRaw.shared_secret="... Your shared secret ..."

list   = flickr.photos.getRecent

id     = list[0].id
secret = list[0].secret
info = flickr.photos.getInfo :photo_id => id, :secret => secret

info.title           # => "PICT986"
info.dates.taken     # => "2006-07-06 15:16:18"

sizes = flickr.photos.getSizes :photo_id => id

original = sizes.find {|s| s.label == 'Original' }
original.width       # => "800"

Authentication¶ ↑

require 'flickraw'

FlickRaw.api_key="... Your API key ..."
FlickRaw.shared_secret="... Your shared secret ..."

frob = flickr.auth.getFrob
auth_url = FlickRaw.auth_url :frob => frob, :perms => 'read'

puts "Open this url in your process to complete the authication process : #{auth_url}"
puts "Press Enter when you are finished."
STDIN.getc

begin
  auth = flickr.auth.getToken :frob => frob
  login = flickr.test.login
  puts "You are now authenticated as #{login.username} with token #{auth.token}"
rescue FlickRaw::FailedResponse => e
  puts "Authentication failed : #{e.msg}"
end

You don’t need to do that each time, you can reuse your token:

require 'flickraw'

FlickRaw.api_key="... Your API key ..."
FlickRaw.shared_secret="... Your shared secret ..."

auth = flickr.auth.checkToken :auth_token => "... Your saved token ..."

# From here you are logged:
puts auth.user.username

Upload¶ ↑

require 'flickraw'

FlickRaw.api_key="... Your API key ..."
FlickRaw.shared_secret="... Your shared secret ..."

PHOTO_PATH='photo.jpg'

# You need to be authentified to do that, see the previous examples.
flickr.upload_photo PHOTO_PATH, :title => "Title", :description => "This is the description"

Flickraw Options¶ ↑

You can pass some options to modify flickraw behavior:

FlickRawOptions = {
  "api_key" => "... Your API key ...",
  "shared_secret" => "... Your shared secret ...",
  "auth_token" => "... Your saved token..."  # if you set this you will be automatically loggued
  "lazyload" => true,     # This delay the loading of the library until the first call

  # Proxy support. alternatively, you can use the http_proxy environment variable
  "proxy_host" => "proxy_host",
  "proxy_port" => "proxy_port",
  "proxy_user" => "proxy_user",
  "proxy_password" => "proxy_password",

  "timeout" => 5                # Set the request timeout
}

require 'flickraw'

Flickr URL Helpers¶ ↑

There are some helpers to build flickr urls :

url, url_m, url_s, url_t, url_b, url_z, url_o¶ ↑

info = flickr.photos.getInfo(:photo_id => "3839885270")
FlickRaw.url_b(info) # => "http://farm3.static.flickr.com/2485/3839885270_6fb8b54e06_b.jpg"

url_profile¶ ↑

info = flickr.photos.getInfo(:photo_id => "3839885270")
FlickRaw.url_profile(info) # => "http://www.flickr.com/people/41650587@N02/"

url_photopage¶ ↑

info = flickr.photos.getInfo(:photo_id => "3839885270")
FlickRaw.url_photopage(info) # => "http://www.flickr.com/photos/41650587@N02/3839885270"

url_photoset, url_photosets¶ ↑

info = flickr.photos.getInfo(:photo_id => "3839885270")
FlickRaw.url_photosets(info) # => "http://www.flickr.com/photos/41650587@N02/sets/"

url_short, url_short_m, url_short_s, url_short_t¶ ↑

info = flickr.photos.getInfo(:photo_id => "3839885270")
FlickRaw.url_short(info) # => "http://flic.kr/p/6Rjq7s"

url_photostream¶ ↑

info = flickr.photos.getInfo(:photo_id => "3839885270")
FlickRaw.url_photostream(info) # => "http://www.flickr.com/photos/41650587@N02/"

See the examples directory to find more examples.

Cached version¶ ↑

You can use

require 'flickraw-cached'

instead of

require 'flickraw'

This way it it doesn’t fetch available flickr methods each time it is loaded. The flickraw-cached gem is on rubygems.org and should be up-to-date with regard to flickr api most of the time.

Notes¶ ↑

If you want to use the api authenticated with several user at the same time, you must pass the authentication token explicitely each time. This is because it is keeping the authentication token internally. As an alternative, you can create new Flickr objects besides Kernel.flickr which is created for you. Use Flickr.new to this effect.