Module: Flickrchive::Execute
- Included in:
- Config
- Defined in:
- lib/flickrchive/execute.rb
Instance Method Summary collapse
- #add_to_set(photo) ⇒ Object
- #execute ⇒ Object
- #get_sets ⇒ Object
- #handle_flickr_fail(e) ⇒ Object
- #upload_photo(photo) ⇒ Object
Instance Method Details
#add_to_set(photo) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/flickrchive/execute.rb', line 35 def add_to_set(photo) set = self.sets.find { |i| photo[:set] == i['title'] } if !set.nil? begin flickr.photosets.addPhoto photoset_id: set['id'], photo_id: photo[:flickr_id] rescue FlickRaw::FailedResponse => e handle_flickr_fail(e) retry end Flickrchive.logger.info("Photo added to set: #{photo[:filename]}, #{photo[:set]}") elsif photo[:set] == '' Flickrchive.logger.debug("Photo in base, not adding to set: #{photo[:filename]}") else begin flickr.photosets.create title: photo[:set], primary_photo_id: photo[:flickr_id] rescue FlickRaw::FailedResponse => e handle_flickr_fail(e) retry end Flickrchive.logger.info("Created set, added photo: #{photo[:set]}, #{photo[:filename]}") get_sets # refresh for new set end end |
#execute ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/flickrchive/execute.rb', line 3 def execute get_sets self.db.load to_upload = [] self.db.synchronize do to_upload = self.db.reject { |k,v| v[:flickr_id] } Flickrchive.logger.debug("Grabbing un-uploaded photos from db.") end to_upload.each do |k,v| upload_photo(v) add_to_set(v) end self.db.close end |
#get_sets ⇒ Object
59 60 61 62 63 64 65 66 |
# File 'lib/flickrchive/execute.rb', line 59 def get_sets begin self.sets = flickr.photosets.getList rescue FlickRaw::FailedResponse => e handle_flickr_fail(e) retry end end |
#handle_flickr_fail(e) ⇒ Object
68 69 70 71 72 73 74 75 76 |
# File 'lib/flickrchive/execute.rb', line 68 def handle_flickr_fail(e) if [3, 105, 106].include?(e.code) sleep 60 # sleep 60, returning to code which will retry else Flickrchive.logger.fail("Uncatchable response from flickr. Check and restart: #{e.msg}") self.db.close exit end end |
#upload_photo(photo) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/flickrchive/execute.rb', line 18 def upload_photo(photo) begin id = flickr.upload_photo photo[:filename], is_public: 0, is_friend: 0, is_family: 0, hidden: 2, tags: photo[:tags] rescue FlickRaw::FailedResponse => e handle_flickr_fail(e) retry rescue EOFError Flickrchive.logger.info("Caught network EOFError. Retrying upload") retry end Flickrchive.logger.info("Uploaded file: #{photo[:filename]}") photo[:flickr_id] = id self.db.synchronize do self.db[photo[:md5]] = photo end end |