squarepusher 0.0.6 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 857a2153d16ce0f3f8fbd698af1518f2c0795459
4
- data.tar.gz: 9f9ac1657c7967278e5fcd9a2294d8eb1759c79e
3
+ metadata.gz: 89a2f891450d7acd7d93fb4e2acaa67a235962a4
4
+ data.tar.gz: 4e73934a2ad455c8ef34e90893d0ba7e53432241
5
5
  SHA512:
6
- metadata.gz: 55bfd7340dc575c01a0f2431d6b7edf55be2c67a86add122ccc84951293dd1ab9137de9638d57ec5d131986c8ff1a23aa3b54e478fb047f0dfecd8a3c2e5dc28
7
- data.tar.gz: d167388c0eed291d355c036dbfbd6fe4ebcf487f1f05cfc9fddf2ff72b0629b0ee8c7b346fe70b98c39bbf0bddddd3184a7678c0ae93cdf2d5b403c0ebf6b1b0
6
+ metadata.gz: 4b6411977c5b5aea4861090e690347b5dd5876ca2568919373e861e4a4174a3bf2ef14ffc084e1afdacb31b8411854893dcdd6e61f43755cad5b59f0111959a1
7
+ data.tar.gz: c77411eabb63dbb63cb4573df147faed887ac19bec65277760c814720edd1b3346d12503430261c78ca5bdcf595c58e2b80fa12a2ac0bbc68dfdf95736639f99
@@ -1,5 +1,7 @@
1
1
  require 'fileutils'
2
2
  require 'optparse'
3
+ require 'set'
4
+
3
5
 
4
6
  FlickRawOptions = {}
5
7
 
@@ -31,8 +33,13 @@ module Squarepusher
31
33
  else
32
34
  ownername = owner
33
35
  end
36
+ elsif p.respond_to?(:ownername)
37
+ # I want to remove this since the ownername is the human readable form and not the owner id,
38
+ # so isn't always safe to build a URL with. but for photoset.getList the only way to get the owner name
39
+ # is by specifying the extra "owner_name" - need to find a way to get the owner id
40
+ ownername = p.ownername
34
41
  else
35
- raise Exception("photo does not contain 'owner' attribute: #{p.inspect}")
42
+ raise Exception.new("photo does not contain 'owner' attribute: #{p.inspect}")
36
43
  end
37
44
 
38
45
  "http://flickr.com/photos/#{ownername}"
@@ -140,29 +147,9 @@ module Squarepusher
140
147
  flickr.access_token = token
141
148
  flickr.access_secret = token_secret
142
149
 
143
- size = args[:size] || :small_square
144
-
145
- # TODO: use url_for() method
146
- @url_for_photo = case size
147
- when :original
148
- lambda { |p| FlickRaw.url_o(p) }
149
- when :large
150
- lambda { |p| FlickRaw.url_b(p) }
151
- when :medium_640
152
- lambda { |p| FlickRaw.url_z(p) }
153
- when :medium_500
154
- lambda { |p| FlickRaw.url(p) }
155
- when :small
156
- lambda { |p| FlickRaw.url_m(p) }
157
- when :thumb
158
- lambda { |p| FlickRaw.url_t(p) }
159
- when :small_square
160
- lambda { |p| FlickRaw.url_s(p) }
161
- else
162
- raise Exception("unrecognized size: #{size}")
163
- end
150
+ @size = args[:size] || :small_square
164
151
  end
165
-
152
+
166
153
  def get_photo(photo_id)
167
154
  flickr.photos.getInfo(:photo_id => photo_id)
168
155
  end
@@ -245,16 +232,26 @@ module Squarepusher
245
232
  if count == 100 then download_favorites(output_dir, page+1, &photo_call) end
246
233
  end
247
234
 
248
- def download_photoset(photoset, output_dir)
249
- dirname = Squarepusher.normalize(photoset.title)
235
+ def download_photoset(photoset, output_dir, args={})
236
+ size = args[:size] || @size
237
+
238
+ pset_normalized_title = Squarepusher.normalize(photoset.title)
239
+ dirname = pset_normalized_title
250
240
  set_dir = File.join(output_dir, dirname)
251
241
  $fileutils.mkdir_p set_dir
252
242
 
253
- # handles socket timeout when loading photoset info
243
+ # contains the following keys
244
+ # error
245
+ # exists
254
246
  results = {}
247
+ local_paths = []
248
+ results[:local_photoset_dir] = set_dir
249
+ results[:local_paths] = local_paths
250
+
251
+ # handles socket timeout when loading photoset info
255
252
  status, photoset_result = handle_error { flickr.photosets.getPhotos(:photoset_id => photoset.id,
256
253
  :privacy_filter => @privacy,
257
- :extras => "original_format,url_o")["photo"] }
254
+ :extras => "original_format,url_o,date_taken")["photo"] }
258
255
  if status == :error
259
256
  error photoset_result
260
257
  results[status] = 1
@@ -264,15 +261,16 @@ module Squarepusher
264
261
  end
265
262
 
266
263
  photos.each do |p|
267
- # TODO: use name of file in url since titles can be duplicate
268
- # copies string?
269
- name = "#{p.id}"
264
+ # removes all non digits from date
265
+ date_taken = p["datetaken"].gsub(/[^\d]+/, '')
266
+
267
+ name = "#{date_taken}-#{p.id}-#{pset_normalized_title}"
270
268
  if not p.title.empty?
271
269
  normalized_title = Squarepusher.normalize(p.title)
272
270
  name << "-#{normalized_title}"
273
271
  end
274
272
 
275
- url = @url_for_photo[p]
273
+ url = Squarepusher.url_for(p, size)
276
274
 
277
275
  # TODO: only add .jpg suffix if it's not in the image name already
278
276
  path = File.join(set_dir, name)
@@ -290,10 +288,31 @@ module Squarepusher
290
288
  else
291
289
  results[result] = 1
292
290
  end
291
+
292
+ if result == :success || result == :exists
293
+ local_paths << path
294
+ end
293
295
  end
294
296
  results
295
297
  end
296
298
 
299
+ # syncs local directory with flickr photoset
300
+ # meaning, if a file exists locally that is no longer in the set, it will be deleted
301
+ def sync_photoset(photoset, output_dir, args={})
302
+ results = download_photoset(photoset, output_dir, args)
303
+ local_pset_dir = results[:local_photoset_dir]
304
+
305
+ # converts list to set for faster lookups
306
+ local_paths = Set.new(results[:local_paths])
307
+
308
+ Dir.entries(local_pset_dir).collect { |e| "#{local_pset_dir}/#{e}"}.select { |e| File.file?(e) }.each do |e|
309
+ if not local_paths.include?(e)
310
+ # puts "deleting #{e}"
311
+ $fileutils.rm e
312
+ end
313
+ end
314
+ end
315
+
297
316
  private
298
317
 
299
318
  def fire_event(args={})
@@ -1,3 +1,3 @@
1
1
  module Squarepusher
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.8"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: squarepusher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - mhawthorne
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-02 00:00:00.000000000 Z
11
+ date: 2013-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: flickraw