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: []
|