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 = nil, 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.
- #vertical? ⇒ Boolean
Constructor Details
#initialize(id = nil, api_key = nil, extra_params = {}) ⇒ Photo
Returns a new instance of Photo.
406 407 408 409 410 411 |
# File 'lib/flickr.rb', line 406 def initialize(id=nil, api_key=nil, 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.
404 405 406 |
# File 'lib/flickr.rb', line 404 def client @client end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
404 405 406 |
# File 'lib/flickr.rb', line 404 def id @id end |
#title ⇒ Object
Returns the value of attribute title.
404 405 406 |
# File 'lib/flickr.rb', line 404 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
419 420 421 |
# File 'lib/flickr.rb', line 419 def [](param_name) instance_variable_get("@#{param_name}") end |
#add_note(note) ⇒ Object
Implements flickr.photos.notes.add
552 553 |
# File 'lib/flickr.rb', line 552 def add_note(note) end |
#add_tag(tag) ⇒ Object
Implements flickr.photos.addTags
574 575 |
# File 'lib/flickr.rb', line 574 def add_tag(tag) end |
#context ⇒ Object
Implements flickr.photos.getContext
516 517 518 519 520 521 |
# File 'lib/flickr.rb', line 516 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
556 557 |
# File 'lib/flickr.rb', line 556 def dates=(dates) end |
#deleteNote(note_id) ⇒ Object
Implements flickr.photos.notes.delete
591 592 |
# File 'lib/flickr.rb', line 591 def deleteNote(note_id) end |
#description ⇒ Object
458 459 460 |
# File 'lib/flickr.rb', line 458 def description @description || getInfo("description") end |
#description=(title) ⇒ Object
570 571 |
# File 'lib/flickr.rb', line 570 def description=(title) end |
#editNote(note_id) ⇒ Object
Implements flickr.photos.notes.edit
595 596 |
# File 'lib/flickr.rb', line 595 def editNote(note_id) end |
#exif ⇒ Object
Implements flickr.photos.getExif
524 525 526 |
# File 'lib/flickr.rb', line 524 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 }
506 507 508 |
# File 'lib/flickr.rb', line 506 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
511 512 513 |
# File 'lib/flickr.rb', line 511 def filename "#{@id}.jpg" end |
#isfavorite ⇒ Object
446 447 448 |
# File 'lib/flickr.rb', line 446 def isfavorite @isfavorite.nil? ? getInfo("isfavorite") : @isfavorite end |
#license ⇒ Object
450 451 452 |
# File 'lib/flickr.rb', line 450 def license @license.nil? ? getInfo("license") : @license end |
#normalize_size(size) ⇒ Object
converts string or symbol size to a capitalized string
474 475 476 |
# File 'lib/flickr.rb', line 474 def normalize_size(size) size ? size.to_s.capitalize : size end |
#notes ⇒ Object
462 463 464 |
# File 'lib/flickr.rb', line 462 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
431 432 433 434 435 436 437 438 439 440 |
# File 'lib/flickr.rb', line 431 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
529 530 531 |
# File 'lib/flickr.rb', line 529 def @client.photos_getPerms('photo_id'=>@id)['perms'] end |
#perms=(perms) ⇒ Object
Implements flickr.photos.setPerms
560 561 |
# File 'lib/flickr.rb', line 560 def perms=(perms) end |
#postToBlog(blog_id, title = '', description = '') ⇒ Object
Implements flickr.blogs.postPhoto
586 587 588 |
# File 'lib/flickr.rb', line 586 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/
496 497 498 |
# File 'lib/flickr.rb', line 496 def pretty_url @url || getInfo("pretty_url") end |
#remove_tag(tag) ⇒ Object
Implements flickr.photos.removeTag
578 579 |
# File 'lib/flickr.rb', line 578 def remove_tag(tag) end |
#rotate ⇒ Object
Implements flickr.photos.transform.rotate
582 583 |
# File 'lib/flickr.rb', line 582 def rotate end |
#rotation ⇒ Object
454 455 456 |
# File 'lib/flickr.rb', line 454 def rotation @rotation.nil? ? getInfo("rotation") : @rotation end |
#server ⇒ Object
442 443 444 |
# File 'lib/flickr.rb', line 442 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
469 470 471 |
# File 'lib/flickr.rb', line 469 def size_url(size='Medium') uri_for_photo_from_self(size) || sizes(size)['url'] end |
#sizes(size = nil) ⇒ Object
Implements flickr.photos.getSizes
534 535 536 537 538 539 |
# File 'lib/flickr.rb', line 534 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)
501 502 503 |
# File 'lib/flickr.rb', line 501 def source(size='Medium') image_source_uri_from_self(size) || sizes(size)['source'] end |
#tags ⇒ Object
flickr.tags.getListPhoto
547 548 549 |
# File 'lib/flickr.rb', line 547 def @client.('photo_id'=>@id)['photo']['tags'] end |
#tags=(tags) ⇒ Object
Implements flickr.photos.setTags
564 565 |
# File 'lib/flickr.rb', line 564 def () end |
#to_s ⇒ Object
Converts the Photo to a string by returning its title
599 600 601 |
# File 'lib/flickr.rb', line 599 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
484 485 486 487 488 489 490 |
# File 'lib/flickr.rb', line 484 def url(size = nil) if normalize_size(size) != 'Medium' size_url(size) else @url || uri_for_photo_from_self end end |
#vertical? ⇒ Boolean
541 542 543 544 |
# File 'lib/flickr.rb', line 541 def vertical? @medium_size ||= self.sizes('Medium') @medium_size['height'] > @medium_size['width'] end |