flickrup 0.0.14 → 0.1.1
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/flickrup/ext/machine_tags.rb +5 -5
- data/lib/flickrup/ext/prefixed_extension.rb +2 -2
- data/lib/flickrup/ext/replacement_tags.rb +4 -4
- data/lib/flickrup/ext/tag_sets.rb +3 -3
- data/lib/flickrup/ext/visibility.rb +3 -3
- data/lib/flickrup/processing_context.rb +13 -0
- data/lib/flickrup/processor.rb +4 -4
- data/lib/flickrup/tagged_image.rb +10 -9
- data/lib/flickrup/uploader.rb +11 -7
- metadata +5 -4
| @@ -3,9 +3,9 @@ class MachineTags | |
| 3 3 | 
             
                @config = config
         | 
| 4 4 | 
             
              end
         | 
| 5 5 |  | 
| 6 | 
            -
              def preupload( | 
| 6 | 
            +
              def preupload(ctx)
         | 
| 7 7 |  | 
| 8 | 
            -
                tags =  | 
| 8 | 
            +
                tags = ctx.image.tags
         | 
| 9 9 |  | 
| 10 10 | 
             
                remapped = tags.map do |x|
         | 
| 11 11 | 
             
                  x.sub(/^([^:]+):([^:]+)::/,"\\1:\\2=")
         | 
| @@ -14,11 +14,11 @@ class MachineTags | |
| 14 14 |  | 
| 15 15 |  | 
| 16 16 | 
             
                unless tags == remapped #write back to file
         | 
| 17 | 
            -
                   | 
| 18 | 
            -
                   | 
| 17 | 
            +
                  ctx.image['Keywords'] = remapped
         | 
| 18 | 
            +
                  ctx.image['Subject'] = remapped #also write Subject XMP tag
         | 
| 19 19 | 
             
                end
         | 
| 20 20 |  | 
| 21 | 
            -
                 | 
| 21 | 
            +
                ctx
         | 
| 22 22 |  | 
| 23 23 | 
             
              end
         | 
| 24 24 | 
             
            end
         | 
| @@ -3,23 +3,23 @@ class ReplacementTags | |
| 3 3 | 
             
                @config = config
         | 
| 4 4 | 
             
              end
         | 
| 5 5 |  | 
| 6 | 
            -
              def preupload( | 
| 6 | 
            +
              def preupload(ctx)
         | 
| 7 7 |  | 
| 8 8 | 
             
                replacements = @config[:tag_replacements]
         | 
| 9 9 |  | 
| 10 10 | 
             
                if replacements != nil
         | 
| 11 11 | 
             
                  replacements.each do |tag_name, tag_value_replacements|
         | 
| 12 | 
            -
                    existing =  | 
| 12 | 
            +
                    existing = ctx.image[tag_name]
         | 
| 13 13 |  | 
| 14 14 | 
             
                    tag_value_replacements.each do |key, value|
         | 
| 15 15 | 
             
                      if existing == key
         | 
| 16 | 
            -
                         | 
| 16 | 
            +
                        ctx.image[tag_name] = value
         | 
| 17 17 | 
             
                        break
         | 
| 18 18 | 
             
                      end
         | 
| 19 19 | 
             
                    end
         | 
| 20 20 | 
             
                  end
         | 
| 21 21 | 
             
                end
         | 
| 22 22 |  | 
| 23 | 
            -
                 | 
| 23 | 
            +
                ctx
         | 
| 24 24 | 
             
              end
         | 
| 25 25 | 
             
            end
         | 
| @@ -7,10 +7,10 @@ class TagSets < PrefixedExtension | |
| 7 7 | 
             
                @flickr = context[:flickr_client]
         | 
| 8 8 | 
             
              end
         | 
| 9 9 |  | 
| 10 | 
            -
              def upload( | 
| 11 | 
            -
                sets = values(:tagsetprefix,  | 
| 10 | 
            +
              def upload(ctx)
         | 
| 11 | 
            +
                sets = values(:tagsetprefix, ctx)
         | 
| 12 12 |  | 
| 13 | 
            -
                uploaded = @delegate.upload( | 
| 13 | 
            +
                uploaded = @delegate.upload(ctx)
         | 
| 14 14 |  | 
| 15 15 | 
             
                sets.each do |set|
         | 
| 16 16 | 
             
                  @flickr.add_to_set(uploaded, set)
         | 
| @@ -8,8 +8,8 @@ class Visibility < PrefixedExtension | |
| 8 8 | 
             
                @delegate = delegate
         | 
| 9 9 | 
             
              end
         | 
| 10 10 |  | 
| 11 | 
            -
              def upload( | 
| 12 | 
            -
                visibility = values(:visibilityprefix,  | 
| 11 | 
            +
              def upload(ctx)
         | 
| 12 | 
            +
                visibility = values(:visibilityprefix, ctx)
         | 
| 13 13 |  | 
| 14 14 | 
             
                config_override = if visibility.length == 0
         | 
| 15 15 | 
             
                  logger.debug("No visibility specified for #{image}.")
         | 
| @@ -21,7 +21,7 @@ class Visibility < PrefixedExtension | |
| 21 21 | 
             
                  config_for_visibility(visibility[0])
         | 
| 22 22 | 
             
                end
         | 
| 23 23 |  | 
| 24 | 
            -
                @delegate.upload( | 
| 24 | 
            +
                @delegate.upload(ctx.with_properties(config_override))
         | 
| 25 25 | 
             
              end
         | 
| 26 26 |  | 
| 27 27 | 
             
              def config_for_visibility(visibility)
         | 
| @@ -0,0 +1,13 @@ | |
| 1 | 
            +
            class ProcessingContext
         | 
| 2 | 
            +
              attr_reader :image
         | 
| 3 | 
            +
              attr_reader :upload_properties
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              def initialize(image, props = {})
         | 
| 6 | 
            +
                @image = image
         | 
| 7 | 
            +
                @upload_properties = props
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              def with_properties(props)
         | 
| 11 | 
            +
                ProcessingContext.new(self.image, self.upload_properties.merge(props))
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
            end
         | 
    
        data/lib/flickrup/processor.rb
    CHANGED
    
    | @@ -39,12 +39,12 @@ class Processor | |
| 39 39 | 
             
                  sleep 5
         | 
| 40 40 | 
             
                else
         | 
| 41 41 | 
             
                  tagged.each { |x|
         | 
| 42 | 
            -
                    logger.debug("Beginning upload for #{x. | 
| 42 | 
            +
                    logger.debug("Beginning upload for #{x.filename}...")
         | 
| 43 43 | 
             
                    x.doUpload(get_preupload_handlers, uploader)
         | 
| 44 | 
            -
                    logger.debug("Upload complete for #{x. | 
| 45 | 
            -
                    logger.debug("Beginning archive for #{x. | 
| 44 | 
            +
                    logger.debug("Upload complete for #{x.filename}")
         | 
| 45 | 
            +
                    logger.debug("Beginning archive for #{x.filename}...")
         | 
| 46 46 | 
             
                    x.archive(@config[:archive_dir])
         | 
| 47 | 
            -
                    logger.debug("Processing complete for #{x. | 
| 47 | 
            +
                    logger.debug("Processing complete for #{x.filename}")
         | 
| 48 48 | 
             
                  }
         | 
| 49 49 | 
             
                end
         | 
| 50 50 |  | 
| @@ -2,15 +2,16 @@ require 'mini_exiftool' | |
| 2 2 | 
             
            require 'fileutils'
         | 
| 3 3 | 
             
            require "flickrup/logging"
         | 
| 4 4 | 
             
            require "flickrup/tag_set"
         | 
| 5 | 
            +
            require "flickrup/processing_context"
         | 
| 5 6 |  | 
| 6 7 | 
             
            class TaggedImage
         | 
| 7 8 | 
             
              include Logging
         | 
| 8 9 |  | 
| 9 | 
            -
              attr_reader : | 
| 10 | 
            +
              attr_reader :filename
         | 
| 10 11 |  | 
| 11 | 
            -
              def initialize( | 
| 12 | 
            -
                @ | 
| 13 | 
            -
                @parsed = MiniExiftool.new  | 
| 12 | 
            +
              def initialize(filename)
         | 
| 13 | 
            +
                @filename = filename
         | 
| 14 | 
            +
                @parsed = MiniExiftool.new filename
         | 
| 14 15 | 
             
              end
         | 
| 15 16 |  | 
| 16 17 | 
             
              def tags
         | 
| @@ -25,8 +26,8 @@ class TaggedImage | |
| 25 26 |  | 
| 26 27 | 
             
              def doUpload(preupload_handlers, uploader)
         | 
| 27 28 |  | 
| 28 | 
            -
                 | 
| 29 | 
            -
                  handler.preupload( | 
| 29 | 
            +
                context = preupload_handlers.reduce(ProcessingContext.new(self)) do |ctx, handler|
         | 
| 30 | 
            +
                  handler.preupload(ctx)
         | 
| 30 31 | 
             
                end
         | 
| 31 32 |  | 
| 32 33 | 
             
                #maybe save afterwards
         | 
| @@ -34,7 +35,7 @@ class TaggedImage | |
| 34 35 | 
             
                  @parsed.save!
         | 
| 35 36 | 
             
                end
         | 
| 36 37 |  | 
| 37 | 
            -
                uploader.upload( | 
| 38 | 
            +
                uploader.upload(context)
         | 
| 38 39 |  | 
| 39 40 | 
             
                #maybe save afterwards
         | 
| 40 41 | 
             
                if @parsed.changed?
         | 
| @@ -52,8 +53,8 @@ class TaggedImage | |
| 52 53 | 
             
                )
         | 
| 53 54 |  | 
| 54 55 | 
             
                FileUtils.mkdir_p(target_dir)
         | 
| 55 | 
            -
                FileUtils.mv(@ | 
| 56 | 
            -
                logger.info("Archived #{File.basename(@ | 
| 56 | 
            +
                FileUtils.mv(@filename, File.join(target_dir, File.basename(@filename)))
         | 
| 57 | 
            +
                logger.info("Archived #{File.basename(@filename)} to #{target_dir}")
         | 
| 57 58 | 
             
              end
         | 
| 58 59 |  | 
| 59 60 | 
             
              # Returns the value of a tag.
         | 
    
        data/lib/flickrup/uploader.rb
    CHANGED
    
    | @@ -14,22 +14,26 @@ class Uploader | |
| 14 14 | 
             
                @flickr = flickr_client
         | 
| 15 15 | 
             
              end
         | 
| 16 16 |  | 
| 17 | 
            -
              def upload( | 
| 17 | 
            +
              def upload(ctx)
         | 
| 18 18 |  | 
| 19 | 
            -
                if  | 
| 20 | 
            -
                  logger.info("Skipping upload of #{image} as marked as NO_UPLOAD")
         | 
| 19 | 
            +
                if ctx.upload_properties[UploaderConstants::NO_UPLOAD]
         | 
| 20 | 
            +
                  logger.info("Skipping upload of #{ctx.image.filename} as marked as NO_UPLOAD")
         | 
| 21 21 | 
             
                else
         | 
| 22 | 
            -
                  logger.debug("Uploading #{image} with tags #{ | 
| 22 | 
            +
                  logger.debug("Uploading #{ctx.image.filename} with tags #{ctx.image.tags}")
         | 
| 23 23 |  | 
| 24 24 | 
             
                  begin
         | 
| 25 | 
            -
                    rv = @flickr.upload_photo(image,  | 
| 26 | 
            -
                    logger.debug("Uploaded #{image}")
         | 
| 25 | 
            +
                    rv = @flickr.upload_photo(ctx.image.filename, prepare_upload_properties(ctx))
         | 
| 26 | 
            +
                    logger.debug("Uploaded #{ctx.image.filename}")
         | 
| 27 27 | 
             
                  rescue StandardError => err
         | 
| 28 | 
            -
                    logger.error("Failed to upload #{image}: #{err}")
         | 
| 28 | 
            +
                    logger.error("Failed to upload #{ctx.image.filename}: #{err}")
         | 
| 29 29 | 
             
                  end
         | 
| 30 30 | 
             
                end
         | 
| 31 31 |  | 
| 32 32 | 
             
                rv
         | 
| 33 33 | 
             
              end
         | 
| 34 34 |  | 
| 35 | 
            +
              def prepare_upload_properties(ctx)
         | 
| 36 | 
            +
                {:tags => ctx.image.tags.to_s}.merge(ctx.upload_properties)
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
             | 
| 35 39 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: flickrup
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              hash:  | 
| 4 | 
            +
              hash: 25
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 0
         | 
| 8 | 
            -
              -  | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 0. | 
| 8 | 
            +
              - 1
         | 
| 9 | 
            +
              - 1
         | 
| 10 | 
            +
              version: 0.1.1
         | 
| 11 11 | 
             
            platform: ruby
         | 
| 12 12 | 
             
            authors: 
         | 
| 13 13 | 
             
            - Jonathan Gilbert
         | 
| @@ -145,6 +145,7 @@ files: | |
| 145 145 | 
             
            - lib/flickrup/ext/visibility.rb
         | 
| 146 146 | 
             
            - lib/flickrup/flickr_client.rb
         | 
| 147 147 | 
             
            - lib/flickrup/logging.rb
         | 
| 148 | 
            +
            - lib/flickrup/processing_context.rb
         | 
| 148 149 | 
             
            - lib/flickrup/processor.rb
         | 
| 149 150 | 
             
            - lib/flickrup/quick_listener.rb
         | 
| 150 151 | 
             
            - lib/flickrup/slow_listener.rb
         |