Class: Flickr::Photo

Inherits:
Object
  • Object
show all
Defined in:
lib/flickr.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#clientObject (readonly)

Returns the value of attribute client.



434
435
436
# File 'lib/flickr.rb', line 434

def client
  @client
end

#idObject (readonly)

Returns the value of attribute id.



434
435
436
# File 'lib/flickr.rb', line 434

def id
  @id
end

#titleObject

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

#contextObject

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

#descriptionObject



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

#exifObject

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

#filenameObject

Unique filename for the image, based on the Flickr NSID



541
542
543
# File 'lib/flickr.rb', line 541

def filename
  "#{@id}.jpg"
end

#isfavoriteObject



476
477
478
# File 'lib/flickr.rb', line 476

def isfavorite
  @isfavorite.nil? ? getInfo("isfavorite") : @isfavorite
end

#licenseObject



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

#notesObject



492
493
494
# File 'lib/flickr.rb', line 492

def notes
  @notes.nil? ? getInfo("notes") : @notes
end

#ownerObject

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

#permissionsObject

Implements flickr.photos.getPerms



559
560
561
# File 'lib/flickr.rb', line 559

def permissions
  @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_urlObject

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

#rotateObject

Implements flickr.photos.transform.rotate



607
608
# File 'lib/flickr.rb', line 607

def rotate
end

#rotationObject



484
485
486
# File 'lib/flickr.rb', line 484

def rotation
  @rotation.nil? ? getInfo("rotation") : @rotation
end

#serverObject



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

#tagsObject

flickr.tags.getListPhoto



572
573
574
# File 'lib/flickr.rb', line 572

def tags
  @client.tags_getListPhoto('photo_id'=>@id)['photo']['tags']
end

#tags=(tags) ⇒ Object

Implements flickr.photos.setTags



589
590
# File 'lib/flickr.rb', line 589

def tags=(tags)
end

#to_sObject

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