Class: Flickr::Photo
- Inherits:
-
Object
- Object
- Flickr::Photo
- Defined in:
- lib/flickr.rb
Instance Attribute Summary collapse
-
#client ⇒ Object
readonly
Returns the value of attribute client.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#title ⇒ Object
Returns the value of attribute title.
Instance Method Summary collapse
-
#[](param_name) ⇒ Object
Allows access to all photos instance variables through hash like interface, e.g.
-
#add_note(note) ⇒ Object
Implements flickr.photos.notes.add.
-
#add_tag(tag) ⇒ Object
Implements flickr.photos.addTags.
-
#context ⇒ Object
Implements flickr.photos.getContext.
-
#dates=(dates) ⇒ Object
Implements flickr.photos.setDates.
-
#deleteNote(note_id) ⇒ Object
Implements flickr.photos.notes.delete.
- #description ⇒ Object
- #description=(title) ⇒ Object
-
#editNote(note_id) ⇒ Object
Implements flickr.photos.notes.edit.
-
#exif ⇒ Object
Implements flickr.photos.getExif.
-
#file(size = 'Medium') ⇒ Object
Returns the photo file data itself, in any specified size.
-
#filename ⇒ Object
Unique filename for the image, based on the Flickr NSID.
-
#initialize(id = nil, api_key = {}, extra_params = {}) ⇒ Photo
constructor
A new instance of Photo.
- #isfavorite ⇒ Object
- #license ⇒ Object
-
#normalize_size(size) ⇒ Object
converts string or symbol size to a capitalized string.
- #notes ⇒ Object
-
#owner ⇒ Object
Returns the owner of the photo as a Flickr::User.
-
#permissions ⇒ Object
Implements flickr.photos.getPerms.
-
#perms=(perms) ⇒ Object
Implements flickr.photos.setPerms.
-
#postToBlog(blog_id, title = '', description = '') ⇒ Object
Implements flickr.blogs.postPhoto.
-
#pretty_url ⇒ Object
the ‘pretty’ url for a photo (if the user has set up a custom name) eg, flickr.com/photos/granth/2584402507/ instead of flickr.com/photos/23386158@N00/2584402507/.
-
#remove_tag(tag) ⇒ Object
Implements flickr.photos.removeTag.
-
#rotate ⇒ Object
Implements flickr.photos.transform.rotate.
- #rotation ⇒ Object
- #server ⇒ Object
-
#size_url(size = 'Medium') ⇒ Object
Returns the URL for the photo size page defaults to ‘Medium’ other valid sizes are in the VALID_SIZES hash.
-
#sizes(size = nil) ⇒ Object
Implements flickr.photos.getSizes.
-
#source(size = 'Medium') ⇒ Object
Returns the URL for the image (default or any specified size).
-
#tags ⇒ Object
flickr.tags.getListPhoto.
-
#tags=(tags) ⇒ Object
Implements flickr.photos.setTags.
-
#to_s ⇒ Object
Converts the Photo to a string by returning its title.
-
#url(size = nil) ⇒ Object
the URL for the main photo page if getInfo has already been called, this will return the pretty url.
Constructor Details
#initialize(id = nil, api_key = {}, extra_params = {}) ⇒ Photo
Returns a new instance of Photo.
436 437 438 439 440 441 |
# File 'lib/flickr.rb', line 436 def initialize(id=nil, api_key={}, extra_params={}) @id = id @api_key = api_key extra_params.each { |k,v| self.instance_variable_set("@#{k}", v) } # convert extra_params into instance variables @client = Flickr.new @api_key end |
Instance Attribute Details
#client ⇒ Object (readonly)
Returns the value of attribute client.
434 435 436 |
# File 'lib/flickr.rb', line 434 def client @client end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
434 435 436 |
# File 'lib/flickr.rb', line 434 def id @id end |
#title ⇒ Object
Returns the value of attribute title.
434 435 436 |
# File 'lib/flickr.rb', line 434 def title @title end |
Instance Method Details
#[](param_name) ⇒ Object
Allows access to all photos instance variables through hash like interface, e.g. photo returns @datetaken instance variable. Useful for accessing any weird and wonderful parameter that may have been returned by Flickr when finding the photo, e.g. those returned by the extras argument in flickr.people.getPublicPhotos
449 450 451 |
# File 'lib/flickr.rb', line 449 def [](param_name) instance_variable_get("@#{param_name}") end |
#add_note(note) ⇒ Object
Implements flickr.photos.notes.add
577 578 |
# File 'lib/flickr.rb', line 577 def add_note(note) end |
#add_tag(tag) ⇒ Object
Implements flickr.photos.addTags
599 600 |
# File 'lib/flickr.rb', line 599 def add_tag(tag) end |
#context ⇒ Object
Implements flickr.photos.getContext
546 547 548 549 550 551 |
# File 'lib/flickr.rb', line 546 def context context = @client.photos_getContext('photo_id'=>@id) @previousPhoto = Photo.new(context['prevphoto'].delete('id'), @api_key, context['prevphoto']) if context['prevphoto']['id']!='0' @nextPhoto = Photo.new(context['nextphoto'].delete('id'), @api_key, context['nextphoto']) if context['nextphoto']['id']!='0' return [@previousPhoto, @nextPhoto] end |
#dates=(dates) ⇒ Object
Implements flickr.photos.setDates
581 582 |
# File 'lib/flickr.rb', line 581 def dates=(dates) end |
#deleteNote(note_id) ⇒ Object
Implements flickr.photos.notes.delete
616 617 |
# File 'lib/flickr.rb', line 616 def deleteNote(note_id) end |
#description ⇒ Object
488 489 490 |
# File 'lib/flickr.rb', line 488 def description @description || getInfo("description") end |
#description=(title) ⇒ Object
595 596 |
# File 'lib/flickr.rb', line 595 def description=(title) end |
#editNote(note_id) ⇒ Object
Implements flickr.photos.notes.edit
620 621 |
# File 'lib/flickr.rb', line 620 def editNote(note_id) end |
#exif ⇒ Object
Implements flickr.photos.getExif
554 555 556 |
# File 'lib/flickr.rb', line 554 def exif @client.photos_getExif('photo_id'=>@id)['photo'] end |
#file(size = 'Medium') ⇒ Object
Returns the photo file data itself, in any specified size. Example: File.open(photo.title, ‘w’) { |f| f.puts photo.file }
536 537 538 |
# File 'lib/flickr.rb', line 536 def file(size='Medium') Net::HTTP.get_response(URI.parse(source(size))).body end |
#filename ⇒ Object
Unique filename for the image, based on the Flickr NSID
541 542 543 |
# File 'lib/flickr.rb', line 541 def filename "#{@id}.jpg" end |
#isfavorite ⇒ Object
476 477 478 |
# File 'lib/flickr.rb', line 476 def isfavorite @isfavorite.nil? ? getInfo("isfavorite") : @isfavorite end |
#license ⇒ Object
480 481 482 |
# File 'lib/flickr.rb', line 480 def license @license.nil? ? getInfo("license") : @license end |
#normalize_size(size) ⇒ Object
converts string or symbol size to a capitalized string
504 505 506 |
# File 'lib/flickr.rb', line 504 def normalize_size(size) size ? size.to_s.capitalize : size end |
#notes ⇒ Object
492 493 494 |
# File 'lib/flickr.rb', line 492 def notes @notes.nil? ? getInfo("notes") : @notes end |
#owner ⇒ Object
Returns the owner of the photo as a Flickr::User. If we have no info about the owner, we make an API call to get it. If we already have the owner’s id, create a user based on that. Either way, we cache the result so we don’t need to check again
461 462 463 464 465 466 467 468 469 470 |
# File 'lib/flickr.rb', line 461 def owner case @owner when Flickr::User @owner when String @owner = Flickr::User.new(@owner, nil, nil, nil, @api_key) else getInfo("owner") end end |
#permissions ⇒ Object
Implements flickr.photos.getPerms
559 560 561 |
# File 'lib/flickr.rb', line 559 def @client.photos_getPerms('photo_id'=>@id)['perms'] end |
#perms=(perms) ⇒ Object
Implements flickr.photos.setPerms
585 586 |
# File 'lib/flickr.rb', line 585 def perms=(perms) end |
#postToBlog(blog_id, title = '', description = '') ⇒ Object
Implements flickr.blogs.postPhoto
611 612 613 |
# File 'lib/flickr.rb', line 611 def postToBlog(blog_id, title='', description='') @client.blogs_postPhoto('photo_id'=>@id, 'title'=>title, 'description'=>description) end |
#pretty_url ⇒ Object
the ‘pretty’ url for a photo (if the user has set up a custom name) eg, flickr.com/photos/granth/2584402507/ instead of
http://flickr.com/photos/23386158@N00/2584402507/
526 527 528 |
# File 'lib/flickr.rb', line 526 def pretty_url @url || getInfo("pretty_url") end |
#remove_tag(tag) ⇒ Object
Implements flickr.photos.removeTag
603 604 |
# File 'lib/flickr.rb', line 603 def remove_tag(tag) end |
#rotate ⇒ Object
Implements flickr.photos.transform.rotate
607 608 |
# File 'lib/flickr.rb', line 607 def rotate end |
#rotation ⇒ Object
484 485 486 |
# File 'lib/flickr.rb', line 484 def rotation @rotation.nil? ? getInfo("rotation") : @rotation end |
#server ⇒ Object
472 473 474 |
# File 'lib/flickr.rb', line 472 def server @server.nil? ? getInfo("server") : @server end |
#size_url(size = 'Medium') ⇒ Object
Returns the URL for the photo size page defaults to ‘Medium’ other valid sizes are in the VALID_SIZES hash
499 500 501 |
# File 'lib/flickr.rb', line 499 def size_url(size='Medium') uri_for_photo_from_self(size) || sizes(size)['url'] end |
#sizes(size = nil) ⇒ Object
Implements flickr.photos.getSizes
564 565 566 567 568 569 |
# File 'lib/flickr.rb', line 564 def sizes(size=nil) size = normalize_size(size) sizes = @client.photos_getSizes('photo_id'=>@id)['sizes']['size'] sizes = sizes.find{|asize| asize['label']==size} if size return sizes end |
#source(size = 'Medium') ⇒ Object
Returns the URL for the image (default or any specified size)
531 532 533 |
# File 'lib/flickr.rb', line 531 def source(size='Medium') image_source_uri_from_self(size) || sizes(size)['source'] end |
#tags ⇒ Object
flickr.tags.getListPhoto
572 573 574 |
# File 'lib/flickr.rb', line 572 def @client.('photo_id'=>@id)['photo']['tags'] end |
#tags=(tags) ⇒ Object
Implements flickr.photos.setTags
589 590 |
# File 'lib/flickr.rb', line 589 def () end |
#to_s ⇒ Object
Converts the Photo to a string by returning its title
624 625 626 |
# File 'lib/flickr.rb', line 624 def to_s title end |
#url(size = nil) ⇒ Object
the URL for the main photo page if getInfo has already been called, this will return the pretty url
for historical reasons, an optional size can be given ‘Medium’ returns the regular url; any other size returns a size page use size_url instead
514 515 516 517 518 519 520 |
# File 'lib/flickr.rb', line 514 def url(size = nil) if normalize_size(size) != 'Medium' size_url(size) else @url || uri_for_photo_from_self end end |