dustin-r2flickr 0.1.1.6 → 0.1.1.7

Sign up to get free protection for your applications and to get access to all the features.
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