Class: Flickr::Photo

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(flickr, id) ⇒ Photo

Returns a new instance of Photo.



392
393
394
395
# File 'lib/flickr/base.rb', line 392

def initialize(flickr,id)
	@flickr = flickr
	@id = id
end

Instance Attribute Details

#canaddmetaObject

Returns the value of attribute canaddmeta.



374
375
376
# File 'lib/flickr/base.rb', line 374

def canaddmeta
  @canaddmeta
end

#cancommentObject

Returns the value of attribute cancomment.



374
375
376
# File 'lib/flickr/base.rb', line 374

def cancomment
  @cancomment
end

#commentsObject

Returns the value of attribute comments.



374
375
376
# File 'lib/flickr/base.rb', line 374

def comments
  @comments
end

#dateaddedObject

Returns the value of attribute dateadded.



374
375
376
# File 'lib/flickr/base.rb', line 374

def dateadded
  @dateadded
end

#datesObject

Returns the value of attribute dates.



374
375
376
# File 'lib/flickr/base.rb', line 374

def dates
  @dates
end

#descriptionObject

Returns the value of attribute description.



374
375
376
# File 'lib/flickr/base.rb', line 374

def description
  @description
end

#farmObject

Returns the value of attribute farm.



374
375
376
# File 'lib/flickr/base.rb', line 374

def farm
  @farm
end

#flickrObject (readonly)

Returns the value of attribute flickr.



381
382
383
# File 'lib/flickr/base.rb', line 381

def flickr
  @flickr
end

#idObject

Returns the value of attribute id.



374
375
376
# File 'lib/flickr/base.rb', line 374

def id
  @id
end

#isfamilyObject

Returns the value of attribute isfamily.



374
375
376
# File 'lib/flickr/base.rb', line 374

def isfamily
  @isfamily
end

#isfriendObject

Returns the value of attribute isfriend.



374
375
376
# File 'lib/flickr/base.rb', line 374

def isfriend
  @isfriend
end

#ispublicObject

Returns the value of attribute ispublic.



374
375
376
# File 'lib/flickr/base.rb', line 374

def ispublic
  @ispublic
end

#lastupdateObject

Returns the value of attribute lastupdate.



374
375
376
# File 'lib/flickr/base.rb', line 374

def lastupdate
  @lastupdate
end

#license_idObject

Returns the value of attribute license_id.



374
375
376
# File 'lib/flickr/base.rb', line 374

def license_id
  @license_id
end

#notesObject

Returns the value of attribute notes.



374
375
376
# File 'lib/flickr/base.rb', line 374

def notes
  @notes
end

#originalformatObject

Returns the value of attribute originalformat.



374
375
376
# File 'lib/flickr/base.rb', line 374

def originalformat
  @originalformat
end

#owner_idObject

Returns the value of attribute owner_id.



374
375
376
# File 'lib/flickr/base.rb', line 374

def owner_id
  @owner_id
end

#ownernameObject

Returns the value of attribute ownername.



374
375
376
# File 'lib/flickr/base.rb', line 374

def ownername
  @ownername
end

#permaddmetaObject

Returns the value of attribute permaddmeta.



374
375
376
# File 'lib/flickr/base.rb', line 374

def permaddmeta
  @permaddmeta
end

#permcommentObject

Returns the value of attribute permcomment.



374
375
376
# File 'lib/flickr/base.rb', line 374

def permcomment
  @permcomment
end

#rotationObject

Returns the value of attribute rotation.



374
375
376
# File 'lib/flickr/base.rb', line 374

def rotation
  @rotation
end

#secretObject

Returns the value of attribute secret.



374
375
376
# File 'lib/flickr/base.rb', line 374

def secret
  @secret
end

#serverObject

Returns the value of attribute server.



374
375
376
# File 'lib/flickr/base.rb', line 374

def server
  @server
end

#takenObject

Returns the value of attribute taken.



374
375
376
# File 'lib/flickr/base.rb', line 374

def taken
  @taken
end

#takengranularityObject

Returns the value of attribute takengranularity.



374
375
376
# File 'lib/flickr/base.rb', line 374

def takengranularity
  @takengranularity
end

#titleObject

Returns the value of attribute title.



374
375
376
# File 'lib/flickr/base.rb', line 374

def title
  @title
end

#urlsObject

Returns the value of attribute urls.



374
375
376
# File 'lib/flickr/base.rb', line 374

def urls
  @urls
end

Class Method Details

.from_xml(xml, flickr = nil) ⇒ Object



417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
# File 'lib/flickr/base.rb', line 417

def self.from_xml(xml,flickr=nil)
	att = xml.attributes
	phid = att['id']

	photo = flickr.photo_cache_lookup(phid) if flickr
	photo ||= Flickr::Photo.new(flickr,phid)

	photo.owner_id ||= att['owner'] || (xml.elements['owner'] &&
		  xml.elements['owner'].attributes['nsid'])
	photo.secret = att['secret'] if att['secret']
	photo.originalformat = att['originalformat'] if
	att['originalformat']
	photo.server = att['server'].to_i if att['server']
	photo.title = att['title'] || cond_text(xml.elements,'title')
	photo.license_id = att['license']
	photo.rotation = att['rotation'].to_i if att['rotation']
	photo.farm = att['farm'].to_i if att['farm']

	photo.ispublic = (att['ispublic'].to_i == 1) if att['ispublic']
	photo.isfriend = (att['isfriend'].to_i == 1) if att['isfriend']
	photo.isfamily = (att['isfamily'].to_i == 1) if att['isfamily']
	photo.ownername = att['ownername'] || (xml.elements['owner'] &&
		  xml.elements['owner'].attributes['username'])
	photo.description = cond_text(xml.elements,'description')
	photo.dateadded = Time.at(att['dateadded'].to_i) if
	att['dateadded']
	if xml.elements['exif']
		list = []
		xml.elements.each('exif') do |el|
			exif = Flickr::Exif.from_xml(el)
			list << exif
		end
		photo.exif = list
	end
	if xml.elements['visibility']
		att = xml.elements['visibility'].attributes
		photo.ispublic = (att['ispublic'].to_i == 1)
		photo.isfriend = (att['isfriend'].to_i == 1)
		photo.isfamily = (att['isfamily'].to_i == 1)
	end
	if xml.elements['dates']
		att = xml.elements['dates'].attributes
		dates = {}
		dates[:posted] = Time.at(att['posted'].to_i)
		dates[:taken] = Time.gm(*ParseDate.parsedate(att['taken']))
		dates[:lastupdate] = Time.at(att['lastupdate'].to_i)
		dates[:takengranularity] = att['takengranularity'].to_i
		photo.dates = dates
	end
	if xml.elements['editability']
		att = xml.elements['editability'].attributes
		photo.cancomment = (att['cancomment'].to_i == 1)
		photo.canaddmeta = (att['canaddmeta'].to_i == 1)
	end
	photo.comments = cond_text(xml.elements,'comments')
	photo.comments &&= photo.comments.to_i
	if xml.elements['notes']
		notes = []
		xml.elements['notes'].each_element do |el|
			notes << Flickr::Note.from_xml(el,photo)
		end
		photo.notes = notes
	end
	if xml.elements['tags']
		tags = []
		xml.elements['tags'].each_element do |el|
			tags << Flickr::Tag.from_xml(el,photo)
		end
		photo.tags = tags
	end
	if xml.elements['urls']
		urls = {}
		xml.elements['urls'].each_element do |el|
			att = el.attributes
			urls[att['type'].intern] = el.text
		end
		photo.urls = urls
	end
		
	flickr.photo_cache_store(photo) if flickr
	return photo
end

Instance Method Details

#contextsObject



405
# File 'lib/flickr/base.rb', line 405

def contexts() @contexts ||= @flickr.photos.getAllContexts(self) end

#deleteObject



415
# File 'lib/flickr/base.rb', line 415

def delete() @flickr.photos.delete(self) end

#exifObject



397
# File 'lib/flickr/base.rb', line 397

def exif() @exif ||= @flickr.photos.getExif(self) end

#exif=(set) ⇒ Object



398
# File 'lib/flickr/base.rb', line 398

def exif=(set) @exif = set end

#licenseObject



403
# File 'lib/flickr/base.rb', line 403

def license() @flickr.photos.licenses.getInfo[@license_id] end

#max_sizeObject



387
388
389
390
# File 'lib/flickr/base.rb', line 387

def max_size
	sizes[:Original] ||  sizes[:Large] || sizes[:Medium] ||
	  sizes[:Small]
end

#ownerObject



383
# File 'lib/flickr/base.rb', line 383

def owner() @owner ||= @flickr.people.getInfo(owner_id) end

#sizesObject



384
# File 'lib/flickr/base.rb', line 384

def sizes() @sizes || @flickr.photos.getSizes(self).sizes end

#sizes=(sizes) ⇒ Object



385
# File 'lib/flickr/base.rb', line 385

def sizes=(sizes) @sizes = sizes end

#tagsObject



400
# File 'lib/flickr/base.rb', line 400

def tags() @tags ||= @flickr.tags.getListPhoto(self) end

#tags=(set) ⇒ Object



401
# File 'lib/flickr/base.rb', line 401

def tags=(set) @tags = set end

#url(size = nil) ⇒ Object



407
408
409
410
411
412
413
# File 'lib/flickr/base.rb', line 407

def url(size=nil)
	base = "http://farm#{@farm}.static.flickr.com"
	ext = (size == 'o') ? self.originalformat : 'jpg'
	return size ?
	  "#{base}/#@server/#{@id}_#{@secret}_#{size}.#{ext}" :
	  "#{base}/#@server/#{@id}_#{@secret}.jpg"
end