image_mover 0.0.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.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/README.md +3 -0
- data/bin/image_mover +6 -0
- data/image_mover.gemspec +20 -0
- data/lib/image_mover.rb +58 -0
- metadata +64 -0
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: ea04978990f5e797415f26d5fd658be33c57d2ff
         | 
| 4 | 
            +
              data.tar.gz: 9ec52f6ca85fe28d9cdb858fcd8a45dca6c09dcb
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: 4c62aac672385a865771867cb60b8641864ee9ddbd378943d23f5fd417c15ae7c2ce9c42cc18a1cb5838951c3d24bc9ea2bbcef4a47b40c022ff59ddf1d7a3d0
         | 
| 7 | 
            +
              data.tar.gz: c66ed056d4077cf9768d73c4c5140e812423bf915b78bebf963383fedf136e3984f35bc0bc7fb0432ff88ea07bb2776610fb4d2856abaee6fd68089b6efd9cdb
         | 
    
        data/.gitignore
    ADDED
    
    
    
        data/README.md
    ADDED
    
    
    
        data/bin/image_mover
    ADDED
    
    
    
        data/image_mover.gemspec
    ADDED
    
    | @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            # coding: utf-8
         | 
| 2 | 
            +
            lib = File.expand_path('../lib', __FILE__)
         | 
| 3 | 
            +
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Gem::Specification.new do |s|
         | 
| 6 | 
            +
              s.name        = 'image_mover'
         | 
| 7 | 
            +
              s.version     = '0.0.1'
         | 
| 8 | 
            +
              s.date        = '2015-04-04'
         | 
| 9 | 
            +
              s.summary     = 'Organizes your image files'
         | 
| 10 | 
            +
              s.description = 'Moves and renames your images files based on the Exif info'
         | 
| 11 | 
            +
              s.authors     = ['Robert Jan de Gelder']
         | 
| 12 | 
            +
              s.email       = ['rjdegelder@gmail.com']
         | 
| 13 | 
            +
              s.homepage    = 'http://github.com/rjdegelder/image_mover'
         | 
| 14 | 
            +
              s.license     = 'MIT'
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              s.files       = `git ls-files`.split($/)
         | 
| 17 | 
            +
              s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              s.add_dependency 'exifr', '1.2.1'
         | 
| 20 | 
            +
            end
         | 
    
        data/lib/image_mover.rb
    ADDED
    
    | @@ -0,0 +1,58 @@ | |
| 1 | 
            +
            require 'fileutils'
         | 
| 2 | 
            +
            require 'exifr'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            class ImageMover
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              attr_reader :source_path, :destination_path
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              # ImageMover.new("/Users/robertjan/Pictures/Foto's/camera", "/Volumes/pictures/photos/Import").move
         | 
| 9 | 
            +
              def initialize source_path, destination_path
         | 
| 10 | 
            +
                @source_path = source_path
         | 
| 11 | 
            +
                @destination_path = destination_path
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              def move
         | 
| 15 | 
            +
                Dir.glob("#{source_path}/**/*.jpg").each do |filename|
         | 
| 16 | 
            +
                  move_file filename
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              private
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              def move_file filename
         | 
| 23 | 
            +
                if File.file?(filename) && !(File.basename(filename) =~ /\.jpg$/i).nil?
         | 
| 24 | 
            +
                  exif_data = EXIFR::JPEG.new(filename)
         | 
| 25 | 
            +
                  date_time = exif_data.date_time_original || exif_data.date_time || File.mtime(filename)
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  year_dir = File.join [destination_path, date_time.strftime("%Y")]
         | 
| 28 | 
            +
                  month_dir = File.join [year_dir, date_time.strftime("%m")]
         | 
| 29 | 
            +
                  date_dir = File.join [month_dir, date_time.strftime("%Y-%m-%d")]
         | 
| 30 | 
            +
                  new_filename = File.join [date_dir, File.basename(filename)]
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                  if File.file?(new_filename)
         | 
| 33 | 
            +
                    puts "Removing already existing file: #{filename}"
         | 
| 34 | 
            +
                    FileUtils.rm(filename)
         | 
| 35 | 
            +
                  else
         | 
| 36 | 
            +
                    unless File.directory?(year_dir)
         | 
| 37 | 
            +
                      puts "Creating directory: #{year_dir}"
         | 
| 38 | 
            +
                      FileUtils.mkdir(year_dir)
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                    unless File.directory?(month_dir)
         | 
| 42 | 
            +
                      puts "Creating directory: #{month_dir}"
         | 
| 43 | 
            +
                      FileUtils.mkdir(month_dir)
         | 
| 44 | 
            +
                    end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                    unless File.directory?(date_dir)
         | 
| 47 | 
            +
                      puts "Creating directory: #{date_dir}"
         | 
| 48 | 
            +
                      FileUtils.mkdir(date_dir)
         | 
| 49 | 
            +
                    end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                    puts "Moving: #{File.basename(filename)} to: #{new_filename}"
         | 
| 52 | 
            +
                    FileUtils.mv(filename, new_filename)
         | 
| 53 | 
            +
                  end
         | 
| 54 | 
            +
                end
         | 
| 55 | 
            +
              rescue => e
         | 
| 56 | 
            +
                puts "Error with #{filename}: #{e.message}"
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
            end
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,64 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: image_mover
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.0.1
         | 
| 5 | 
            +
            platform: ruby
         | 
| 6 | 
            +
            authors:
         | 
| 7 | 
            +
            - Robert Jan de Gelder
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 | 
            +
            bindir: bin
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
            date: 2015-04-04 00:00:00.000000000 Z
         | 
| 12 | 
            +
            dependencies:
         | 
| 13 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            +
              name: exifr
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 17 | 
            +
                - - '='
         | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: 1.2.1
         | 
| 20 | 
            +
              type: :runtime
         | 
| 21 | 
            +
              prerelease: false
         | 
| 22 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 24 | 
            +
                - - '='
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            +
                    version: 1.2.1
         | 
| 27 | 
            +
            description: Moves and renames your images files based on the Exif info
         | 
| 28 | 
            +
            email:
         | 
| 29 | 
            +
            - rjdegelder@gmail.com
         | 
| 30 | 
            +
            executables:
         | 
| 31 | 
            +
            - image_mover
         | 
| 32 | 
            +
            extensions: []
         | 
| 33 | 
            +
            extra_rdoc_files: []
         | 
| 34 | 
            +
            files:
         | 
| 35 | 
            +
            - ".gitignore"
         | 
| 36 | 
            +
            - README.md
         | 
| 37 | 
            +
            - bin/image_mover
         | 
| 38 | 
            +
            - image_mover.gemspec
         | 
| 39 | 
            +
            - lib/image_mover.rb
         | 
| 40 | 
            +
            homepage: http://github.com/rjdegelder/image_mover
         | 
| 41 | 
            +
            licenses:
         | 
| 42 | 
            +
            - MIT
         | 
| 43 | 
            +
            metadata: {}
         | 
| 44 | 
            +
            post_install_message: 
         | 
| 45 | 
            +
            rdoc_options: []
         | 
| 46 | 
            +
            require_paths:
         | 
| 47 | 
            +
            - lib
         | 
| 48 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 49 | 
            +
              requirements:
         | 
| 50 | 
            +
              - - ">="
         | 
| 51 | 
            +
                - !ruby/object:Gem::Version
         | 
| 52 | 
            +
                  version: '0'
         | 
| 53 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 54 | 
            +
              requirements:
         | 
| 55 | 
            +
              - - ">="
         | 
| 56 | 
            +
                - !ruby/object:Gem::Version
         | 
| 57 | 
            +
                  version: '0'
         | 
| 58 | 
            +
            requirements: []
         | 
| 59 | 
            +
            rubyforge_project: 
         | 
| 60 | 
            +
            rubygems_version: 2.4.6
         | 
| 61 | 
            +
            signing_key: 
         | 
| 62 | 
            +
            specification_version: 4
         | 
| 63 | 
            +
            summary: Organizes your image files
         | 
| 64 | 
            +
            test_files: []
         |