dustin-r2flickr 0.1.1.6 → 0.1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/flickr/photos.rb CHANGED
@@ -1,290 +1,293 @@
1
1
  require 'flickr/base'
2
2
 
3
3
  begin
4
- # Did not exist in 1.8.6
5
- StopIteration
4
+ # Did not exist in 1.8.6
5
+ StopIteration
6
6
  rescue NameError
7
- class StopIteration < Exception
8
- end
7
+ class StopIteration < Exception
8
+ end
9
9
  end
10
10
 
11
11
  class Flickr::Photos < Flickr::APIBase
12
- def upload
13
- require 'flickr/upload'
14
- @upload ||= Flickr::Upload.new(@flickr)
15
- end
12
+ def upload
13
+ require 'flickr/upload'
14
+ @upload ||= Flickr::Upload.new(@flickr)
15
+ end
16
16
 
17
- def licenses
18
- require 'flickr/licenses'
19
- @licenses ||= Flickr::Licenses.new(@flickr)
20
- end
17
+ def licenses
18
+ require 'flickr/licenses'
19
+ @licenses ||= Flickr::Licenses.new(@flickr)
20
+ end
21
21
 
22
- def notes
23
- require 'flickr/notes'
24
- @notes ||= Flickr::Notes.new(@flickr)
25
- end
22
+ def notes
23
+ require 'flickr/notes'
24
+ @notes ||= Flickr::Notes.new(@flickr)
25
+ end
26
26
 
27
- def transform
28
- require 'flickr/transform'
29
- @transform ||= Flickr::Transform.new(@flickr)
30
- end
27
+ def transform
28
+ require 'flickr/transform'
29
+ @transform ||= Flickr::Transform.new(@flickr)
30
+ end
31
31
 
32
- # photo can be a Photo or a photo id
33
- # tags is an array of tags
34
- def addTags(photo,tags)
35
- photo = photo.id if photo.class == Flickr::Photo
36
- tstr = tags.join(',')
37
- @flickr.call_method('flickr.photos.addTags',
38
- 'photo_id' => photo, 'tags' => tstr)
39
- end
32
+ # photo can be a Photo or a photo id
33
+ # tags is an array of tags
34
+ def addTags(photo,tags)
35
+ photo = photo.id if photo.class == Flickr::Photo
36
+ tstr = tags.join(',')
37
+ @flickr.call_method('flickr.photos.addTags',
38
+ 'photo_id' => photo, 'tags' => tstr)
39
+ end
40
40
 
41
- def removeTag(tag)
42
- tag = tag.id if tag.class == Flickr::Tag
43
- @flickr.call_method('flickr.photos.removeTag', 'tag_id' => tag)
44
- end
41
+ def removeTag(tag)
42
+ tag = tag.id if tag.class == Flickr::Tag
43
+ @flickr.call_method('flickr.photos.removeTag', 'tag_id' => tag)
44
+ end
45
45
 
46
- def setTags(tags)
47
- tags=tags.map{|t| (t.class == Flickr::Tag) ? t.id : t}.join(' ')
48
- photo = photo.id if photo.class == Flickr::Photo
49
- @flickr.call_method('flickr.photos.setTags',
50
- 'photo_id' => photo, 'tags' => tags)
51
- end
46
+ def setTags(tags)
47
+ tags=tags.map{|t| (t.class == Flickr::Tag) ? t.id : t}.join(' ')
48
+ photo = photo.id if photo.class == Flickr::Photo
49
+ @flickr.call_method('flickr.photos.setTags',
50
+ 'photo_id' => photo, 'tags' => tags)
51
+ end
52
52
 
53
- # photo can be a Photo or photo id string/number
54
- def delete(photo)
55
- photo = photo.id if photo.class == Flickr::Photo
56
- res = @flickr.call_method('flickr.photos.delete',
57
- 'photo_id'=>photo)
58
- end
53
+ # photo can be a Photo or photo id string/number
54
+ def delete(photo)
55
+ photo = photo.id if photo.class == Flickr::Photo
56
+ res = @flickr.call_method('flickr.photos.delete',
57
+ 'photo_id'=>photo)
58
+ end
59
59
 
60
- # photo can be a Photo or photo id string/number
61
- def getAllContexts(photo)
62
- photo = photo.id if photo.class == Flickr::Photo
63
- res @flickr.call_method('flickr.photos.getAllContexts',
64
- 'photo_id'=>photo)
65
- list = []
66
- res.each_element('set') do |set|
67
- att = set.attributes
68
- psid = att['id']
69
- set = @flickr.photoset_cache_lookup(psid) ||
70
- Flickr::PhotoSet.new(att['id'],@flickr)
71
- set.title = att['title']
60
+ # photo can be a Photo or photo id string/number
61
+ def getAllContexts(photo)
62
+ photo = photo.id if photo.class == Flickr::Photo
63
+ res @flickr.call_method('flickr.photos.getAllContexts',
64
+ 'photo_id'=>photo)
65
+ list = []
66
+ res.each_element('set') do |set|
67
+ att = set.attributes
68
+ psid = att['id']
69
+ set = @flickr.photoset_cache_lookup(psid) ||
70
+ Flickr::PhotoSet.new(att['id'],@flickr)
71
+ set.title = att['title']
72
72
 
73
- @flickr.photoset_cache_store(set)
74
- list << set
75
- end
76
- res.each_element('pool') do |set|
77
- att = set.attributes
78
- ppid = att['id']
73
+ @flickr.photoset_cache_store(set)
74
+ list << set
75
+ end
76
+ res.each_element('pool') do |set|
77
+ att = set.attributes
78
+ ppid = att['id']
79
79
 
80
- p = @flickr.photopool_cache_lookup(ppid) ||
81
- Flickr::PhotoPool.new(ppid,@flickr)
82
- p.title = att['title']
83
- @flickr.photopool_cache_store(ppid)
84
- list << p
85
- end
86
- return list
87
- end
80
+ p = @flickr.photopool_cache_lookup(ppid) ||
81
+ Flickr::PhotoPool.new(ppid,@flickr)
82
+ p.title = att['title']
83
+ @flickr.photopool_cache_store(ppid)
84
+ list << p
85
+ end
86
+ return list
87
+ end
88
88
 
89
- def getPerms(photo)
90
- photo = photo.id if photo.class == Flickr::Photo
91
- res = @flickr.call_method('flickr.photos.getPerms',
92
- 'photo_id' => photo)
93
- perms = res.elements['/perms']
94
- att = perms.attributes
95
- phid = att['id']
96
- photo = (photo.class == Flickr::Photo) ? photo :
97
- (@flickr.photo_cache_lookup(phid) ||
98
- Flickr::Photo.new(@flickr,phid))
99
- photo.ispublic = (att['ispublic'].to_i == 1)
100
- photo.isfriend = (att['isfriend'].to_i == 1)
101
- photo.isfamily = (att['isfamily'].to_i == 1)
102
- photo.permcomment = att['permcomment'].to_i
103
- photo.permaddmeta = att['permaddmeta'].to_i
104
- return photo
105
- end
89
+ def getPerms(photo)
90
+ photo = photo.id if photo.class == Flickr::Photo
91
+ res = @flickr.call_method('flickr.photos.getPerms',
92
+ 'photo_id' => photo)
93
+ perms = res.elements['/perms']
94
+ att = perms.attributes
95
+ phid = att['id']
96
+ photo = (photo.class == Flickr::Photo) ? photo :
97
+ (@flickr.photo_cache_lookup(phid) ||
98
+ Flickr::Photo.new(@flickr,phid))
99
+ photo.ispublic = (att['ispublic'].to_i == 1)
100
+ photo.isfriend = (att['isfriend'].to_i == 1)
101
+ photo.isfamily = (att['isfamily'].to_i == 1)
102
+ photo.permcomment = att['permcomment'].to_i
103
+ photo.permaddmeta = att['permaddmeta'].to_i
104
+ return photo
105
+ end
106
106
 
107
- def setPerms(photo,is_public,is_friend,is_family,perm_comment,
108
- perm_addmeta)
109
- photo = photo.id if photo.class == Flickr::Photo
110
- args = {
111
- 'photo_id' => photo,
112
- 'is_public' => (is_public == true || is_public == 1) ? 1 : 0,
113
- 'is_friend' => (is_friend == true || is_friend == 1) ? 1 : 0,
114
- 'is_family' => (is_family == true || is_family == 1) ? 1 : 0,
115
- 'perm_comment' => perm_comment,
116
- 'perm_addmeta' => perm_addmeta
117
- }
118
- res = @flickr.call_method('flickr.photos.setPerms',args)
119
- end
107
+ def setPerms(photo,is_public,is_friend,is_family,perm_comment,
108
+ perm_addmeta)
109
+ photo = photo.id if photo.class == Flickr::Photo
110
+ args = {
111
+ 'photo_id' => photo,
112
+ 'is_public' => (is_public == true || is_public == 1) ? 1 : 0,
113
+ 'is_friend' => (is_friend == true || is_friend == 1) ? 1 : 0,
114
+ 'is_family' => (is_family == true || is_family == 1) ? 1 : 0,
115
+ 'perm_comment' => perm_comment,
116
+ 'perm_addmeta' => perm_addmeta
117
+ }
118
+ res = @flickr.call_method('flickr.photos.setPerms',args)
119
+ end
120
120
 
121
- def getContactsPhotos(count=nil,just_friends=nil,single_photo=nil,
122
- include_self=nil)
123
- args = {}
124
- args['count'] = count if count
125
- args['just_friends'] = just_friends ? '1' : '0' if
126
- just_friends != nil
127
- args['single_photo'] = single_photo ? '1' : '0' if
128
- single_photo != nil
129
- args['include_self'] = include_self ? '1' : '0' if
130
- include_self != nil
131
- res= @flickr.call_method('flickr.photos.getContactsPhotos',args)
132
- return Flickr::PhotoList.from_xml(res,@flickr)
133
- end
121
+ def getContactsPhotos(count=nil,just_friends=nil,single_photo=nil,
122
+ include_self=nil)
123
+ args = {}
124
+ args['count'] = count if count
125
+ args['just_friends'] = just_friends ? '1' : '0' if
126
+ just_friends != nil
127
+ args['single_photo'] = single_photo ? '1' : '0' if
128
+ single_photo != nil
129
+ args['include_self'] = include_self ? '1' : '0' if
130
+ include_self != nil
131
+ res= @flickr.call_method('flickr.photos.getContactsPhotos',args)
132
+ return Flickr::PhotoList.from_xml(res,@flickr)
133
+ end
134
134
 
135
- # Person can be a string nsid or anything that responds to the
136
- # nsid method.
137
- def getContactsPublicPhotos(user, count=nil,just_friends=nil,
138
- single_photo=nil, include_self=nil)
139
- user = user.nsid if user.respond_to?(:nsid)
140
- args = {}
141
- args['count'] = count if count
142
- args['user_id'] = user
143
- args['just_friends'] = just_friends ? '1' : '0' if
144
- just_friends != nil
145
- args['single_photo'] = single_photo ? '1' : '0' if
146
- single_photo != nil
147
- args['include_self'] = include_self ? '1' : '0' if
148
- include_self != nil
149
- res=@flickr.call_method('flickr.photos.getContactsPublicPhotos',
150
- args)
151
- return Flickr::PhotoList.from_xml(res,@flickr)
152
- end
135
+ # Person can be a string nsid or anything that responds to the
136
+ # nsid method.
137
+ def getContactsPublicPhotos(user, count=nil,just_friends=nil,
138
+ single_photo=nil, include_self=nil)
139
+ user = user.nsid if user.respond_to?(:nsid)
140
+ args = {}
141
+ args['count'] = count if count
142
+ args['user_id'] = user
143
+ args['just_friends'] = just_friends ? '1' : '0' if
144
+ just_friends != nil
145
+ args['single_photo'] = single_photo ? '1' : '0' if
146
+ single_photo != nil
147
+ args['include_self'] = include_self ? '1' : '0' if
148
+ include_self != nil
149
+ res=@flickr.call_method('flickr.photos.getContactsPublicPhotos',
150
+ args)
151
+ return Flickr::PhotoList.from_xml(res,@flickr)
152
+ end
153
153
 
154
- def getContext(photo)
155
- photo = photo.id if photo.class == Flickr::Photo
156
- res = @flickr.call_method('flickr.photos.getContext',
157
- 'photo_id' => photo)
158
- return Flickr::Context.from_xml(res)
159
- end
154
+ def getContext(photo)
155
+ photo = photo.id if photo.class == Flickr::Photo
156
+ res = @flickr.call_method('flickr.photos.getContext',
157
+ 'photo_id' => photo)
158
+ return Flickr::Context.from_xml(res)
159
+ end
160
160
 
161
- def getCounts(dates=nil,taken_dates=nil)
162
- args = {}
163
- args['dates'] = dates.map{|d| d.to_i}.join(',') if dates
164
- args['taken_dates'] = taken_dates.map{|d| d.to_i}.join(',') if
165
- taken_dates
166
- res = @flickr.call_method('flickr.photos.getCounts',args)
167
- list = []
168
- res.elements['/photocounts'].each_element('photocount') do |el|
169
- list << Flickr::Count.from_xml(el)
170
- end
171
- return list
172
- end
161
+ def getCounts(dates=nil,taken_dates=nil)
162
+ args = {}
163
+ args['dates'] = dates.map{|d| d.to_i}.join(',') if dates
164
+ args['taken_dates'] = taken_dates.map{|d| d.to_i}.join(',') if
165
+ taken_dates
166
+ res = @flickr.call_method('flickr.photos.getCounts',args)
167
+ list = []
168
+ res.elements['/photocounts'].each_element('photocount') do |el|
169
+ list << Flickr::Count.from_xml(el)
170
+ end
171
+ return list
172
+ end
173
173
 
174
- def getExif(photo,secret = nil)
175
- photo = photo.id if photo.class == Flickr::Photo
176
- args = {'photo_id' => photo}
177
- args['secret'] = secret if secret
178
- res = @flickr.call_method('flickr.photos.getExif',args)
179
- return Flickr::Photo.from_xml(res.elements['/photo'],@flickr)
180
- end
174
+ def getExif(photo,secret = nil)
175
+ photo = photo.id if photo.class == Flickr::Photo
176
+ args = {'photo_id' => photo}
177
+ args['secret'] = secret if secret
178
+ res = @flickr.call_method('flickr.photos.getExif',args)
179
+ return Flickr::Photo.from_xml(res.elements['/photo'],@flickr)
180
+ end
181
181
 
182
- def getInfo(photo,secret = nil)
183
- photo = (photo.class == Flickr::Photo) ? photo.id : photo
184
- args= {'photo_id' => photo}
185
- args['secret'] = secret if secret
186
- res = @flickr.call_method('flickr.photos.getInfo',args)
187
- return Flickr::Photo.from_xml(res.elements['photo'],@flickr)
188
- end
189
-
190
- def getNotInSet(extras=nil,per_page = nil, page = nil)
191
- args = {}
192
- extras = extras.join(',') if extras.class == Array
193
- args['extras'] = extras if extras
194
- args['per_page'] = per_page if per_page
195
- args['page'] = page if page
196
- res = @flickr.call_method('flickr.photos.getNotInSet',args)
197
- return Flickr::PhotoList.from_xml(res,@flickr)
198
- end
199
-
200
- def getRecent(extras=nil,per_page = nil, page = nil)
201
- args = {}
202
- extras = extras.join(',') if extras.class == Array
203
- args['extras'] = extras if extras
204
- args['per_page'] = per_page if per_page
205
- args['page'] = page if page
206
- res = @flickr.call_method('flickr.photos.getRecent',args)
207
- return Flickr::PhotoList.from_xml(res,@flickr)
208
- end
209
-
210
- def getUntagged(extras=nil,per_page = nil, page = nil)
211
- args = {}
212
- extras = extras.join(',') if extras.class == Array
213
- args['extras'] = extras if extras
214
- args['per_page'] = per_page if per_page
215
- args['page'] = page if page
216
- res = @flickr.call_method('flickr.photos.getUntagged',args)
217
- return Flickr::PhotoList.from_xml(res,@flickr)
218
- end
182
+ def getInfo(photo,secret = nil)
183
+ photo = (photo.class == Flickr::Photo) ? photo.id : photo
184
+ args= {'photo_id' => photo}
185
+ args['secret'] = secret if secret
186
+ res = @flickr.call_method('flickr.photos.getInfo',args)
187
+ return Flickr::Photo.from_xml(res.elements['photo'],@flickr)
188
+ end
219
189
 
220
- def getSizes(photo)
221
- photo_id = (photo.class == Flickr::Photo) ? photo.id : photo
222
- photo = (photo.class == Flickr::Photo) ? photo :
223
- (@flickr.photo_cache_lookup(photo_id) ||
224
- Flickr::Photo.new(@flickr,photo_id))
225
- res = @flickr.call_method('flickr.photos.getSizes',
226
- 'photo_id' => photo_id )
227
- photo.sizes = {}
228
- res.elements['/sizes'].each_element do |el|
229
- size = Flickr::Size.from_xml(el)
230
- photo.sizes[size.label.intern] = size
231
- end
232
- @flickr.photo_cache_store(photo)
233
- return photo
234
- end
190
+ def getNotInSet(extras=nil,per_page = nil, page = nil)
191
+ args = {}
192
+ extras = extras.join(',') if extras.class == Array
193
+ args['extras'] = extras if extras
194
+ args['per_page'] = per_page if per_page
195
+ args['page'] = page if page
196
+ res = @flickr.call_method('flickr.photos.getNotInSet',args)
197
+ return Flickr::PhotoList.from_xml(res,@flickr)
198
+ end
235
199
 
236
- def setDates(photo,date_posted=nil,date_taken=nil,
237
- date_taken_granularity=nil)
238
- photo = photo.id if photo.class == Flickr::Photo
239
- date_posted = date_posted.to_i if date_posted.class == Time
240
- date_taken = @flickr.mysql_datetime(date_taken) if
241
- date_taken.class == Time
242
- args = {'photo_id' => photo}
243
- args['date_posted'] = date_posted if date_posted
244
- args['date_taken'] = date_taken if date_taken
245
- args['date_taken_granularity'] = date_taken_granularity if
246
- date_taken_granularity
247
- @flickr.call_method('flickr.photos.setDates',args)
248
- end
200
+ def getRecent(extras=nil,per_page = nil, page = nil)
201
+ args = {}
202
+ extras = extras.join(',') if extras.class == Array
203
+ args['extras'] = extras if extras
204
+ args['per_page'] = per_page if per_page
205
+ args['page'] = page if page
206
+ res = @flickr.call_method('flickr.photos.getRecent',args)
207
+ return Flickr::PhotoList.from_xml(res,@flickr)
208
+ end
249
209
 
250
- def setMeta(photo,title,description)
251
- photo = photo.id if photo.class == Flickr::Photo
252
- args = {'photo_id' => photo,
253
- 'title' => title,
254
- 'description' => description}
255
- @flickr.call_method('flickr.photos.setMeta',args)
256
- end
210
+ def getUntagged(extras=nil,per_page = nil, page = nil)
211
+ args = {}
212
+ extras = extras.join(',') if extras.class == Array
213
+ args['extras'] = extras if extras
214
+ args['per_page'] = per_page if per_page
215
+ args['page'] = page if page
216
+ res = @flickr.call_method('flickr.photos.getUntagged',args)
217
+ return Flickr::PhotoList.from_xml(res,@flickr)
218
+ end
257
219
 
258
- def search(args)
259
- args[:user_id] = args[:user_id].nsid if args[:user_id].respond_to?(:nsid)
260
- args[:tags] = args[:tags].join(',') if args[:tags].class == Array
261
- [:min_upload_date, :max_upload_date].each do |k|
262
- args[k] = args[k].to_i if args[k].is_a? Time
263
- end
264
- [:min_taken_date, :max_taken_date].each do |k|
265
- args[k] = @flickr.mysql_datetime(args[k]) if args[k].is_a? Time
266
- end
267
- args[:license] = args[:license].id if args[:license].is_a? Flickr::License
268
- args[:extras] = args[:extras].join(',') if args[:extras].is_a? Array
269
- args.each {|k,v| v = args.delete(k); args[k.to_s] = v}
220
+ def getSizes(photo)
221
+ photo_id = (photo.class == Flickr::Photo) ? photo.id : photo
222
+ photo = (photo.class == Flickr::Photo) ? photo :
223
+ (@flickr.photo_cache_lookup(photo_id) ||
224
+ Flickr::Photo.new(@flickr,photo_id))
225
+ res = @flickr.call_method('flickr.photos.getSizes',
226
+ 'photo_id' => photo_id )
227
+ photo.sizes = {}
228
+ res.elements['/sizes'].each_element do |el|
229
+ size = Flickr::Size.from_xml(el)
230
+ photo.sizes[size.label.intern] = size
231
+ end
232
+ @flickr.photo_cache_store(photo)
233
+ return photo
234
+ end
270
235
 
271
- if block_given?
272
- thispage = 1
273
- maxpages = 2
274
- args['per_page'] ||= 500
275
- until thispage > maxpages do
276
- args['page'] = thispage
277
- res = @flickr.call_method('flickr.photos.search',args)
278
- list = Flickr::PhotoList.from_xml(res, @flickr)
279
- maxpages = list.pages
280
- list.each {|p| yield p}
281
- thispage += 1
282
- end
283
- else
284
- res = @flickr.call_method('flickr.photos.search',args)
285
- return Flickr::PhotoList.from_xml(res,@flickr)
286
- end
287
- rescue StopIteration
288
- nil
289
- end
236
+ def setDates(photo,date_posted=nil,date_taken=nil,
237
+ date_taken_granularity=nil)
238
+ photo = photo.id if photo.class == Flickr::Photo
239
+ date_posted = date_posted.to_i if date_posted.class == Time
240
+ date_taken = @flickr.mysql_datetime(date_taken) if
241
+ date_taken.class == Time
242
+ args = {'photo_id' => photo}
243
+ args['date_posted'] = date_posted if date_posted
244
+ args['date_taken'] = date_taken if date_taken
245
+ args['date_taken_granularity'] = date_taken_granularity if
246
+ date_taken_granularity
247
+ @flickr.call_method('flickr.photos.setDates',args)
248
+ end
249
+
250
+ def setMeta(photo,title,description)
251
+ photo = photo.id if photo.class == Flickr::Photo
252
+ args = {'photo_id' => photo,
253
+ 'title' => title,
254
+ 'description' => description}
255
+ @flickr.call_method('flickr.photos.setMeta',args)
256
+ end
257
+
258
+ def search(args)
259
+ args[:user_id] = args[:user_id].nsid if args[:user_id].respond_to?(:nsid)
260
+ args[:tags] = args[:tags].join(',') if args[:tags].class == Array
261
+
262
+ [:min_upload_date, :max_upload_date].each do |k|
263
+ args[k] = args[k].to_i if args[k].is_a? Time
264
+ end
265
+
266
+ [:min_taken_date, :max_taken_date].each do |k|
267
+ args[k] = @flickr.mysql_datetime(args[k]) if args[k].is_a? Time
268
+ end
269
+
270
+ args[:license] = args[:license].id if args[:license].is_a? Flickr::License
271
+ args[:extras] = args[:extras].join(',') if args[:extras].is_a? Array
272
+ args.each {|k,v| v = args.delete(k); args[k.to_s] = v}
273
+
274
+ if block_given?
275
+ thispage = 1
276
+ maxpages = 2
277
+ args['per_page'] ||= 500
278
+ until thispage > maxpages do
279
+ args['page'] = thispage
280
+ res = @flickr.call_method('flickr.photos.search',args)
281
+ list = Flickr::PhotoList.from_xml(res, @flickr)
282
+ maxpages = list.pages
283
+ list.each {|p| yield p}
284
+ thispage += 1
285
+ end
286
+ else
287
+ res = @flickr.call_method('flickr.photos.search',args)
288
+ return Flickr::PhotoList.from_xml(res,@flickr)
289
+ end
290
+ rescue StopIteration
291
+ nil
292
+ end
290
293
  end