flickrup 1.1.4 → 1.1.5
Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,27 @@
|
|
1
|
+
require "fileutils"
|
2
|
+
|
3
|
+
class Archiver
|
4
|
+
|
5
|
+
def archive(ctx)
|
6
|
+
archive_file_by_date(ctx.properties[:filename], ctx.properties[:archive_dir], ctx.properties[:date_taken], ctx.properties[:subdir])
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def archive_file_by_date(file, to_dir, date, subdir = nil)
|
12
|
+
target_dir = File.join(
|
13
|
+
to_dir,
|
14
|
+
date.strftime("%Y"),
|
15
|
+
date.strftime("%b")
|
16
|
+
)
|
17
|
+
|
18
|
+
if subdir
|
19
|
+
target_dir = "#{target_dir}/#{subdir}"
|
20
|
+
end
|
21
|
+
|
22
|
+
FileUtils.mkdir_p(target_dir)
|
23
|
+
FileUtils.mv(file, File.join(target_dir, File.basename(file)))
|
24
|
+
logger.info("Archived #{File.basename(file)} to #{target_dir}")
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -15,9 +15,20 @@ class TagSets < PrefixedExtension
|
|
15
15
|
|
16
16
|
uploaded = @delegate.upload(ctx)
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
unless ctx.properties[UploaderConstants::NO_UPLOAD] == true
|
19
|
+
sets.each do |set|
|
20
|
+
logger.debug("Adding #{ctx.file.filename} to set: #{set}")
|
21
|
+
@flickr.add_to_set(uploaded, set)
|
22
|
+
end
|
21
23
|
end
|
22
24
|
end
|
25
|
+
|
26
|
+
def archive(ctx)
|
27
|
+
sets = values(:tagsetprefix, ctx).uniq
|
28
|
+
|
29
|
+
if sets.length == 1
|
30
|
+
ctx.properties[:subdir] = sets[0]
|
31
|
+
end
|
32
|
+
@delegate.archive(ctx)
|
33
|
+
end
|
23
34
|
end
|
@@ -44,9 +44,12 @@ class TaggedFile
|
|
44
44
|
end)
|
45
45
|
end
|
46
46
|
|
47
|
-
def archive(to_dir)
|
48
|
-
|
49
|
-
|
47
|
+
def archive(archive_handlers, to_dir)
|
48
|
+
archive_handlers.archive(ProcessingContext.new(self, {
|
49
|
+
:archive_dir => to_dir,
|
50
|
+
:date_taken => @parsed.date_time_original || @parsed.modifydate,
|
51
|
+
:filename => @filename
|
52
|
+
}))
|
50
53
|
end
|
51
54
|
|
52
55
|
def pre_upload
|
@@ -56,25 +59,6 @@ class TaggedFile
|
|
56
59
|
def post_upload
|
57
60
|
|
58
61
|
end
|
59
|
-
|
60
|
-
private
|
61
|
-
|
62
|
-
def archive_by_date(to_dir, date)
|
63
|
-
archive_file_by_date(@filename, to_dir, date)
|
64
|
-
end
|
65
|
-
|
66
|
-
def archive_file_by_date(file, to_dir, date)
|
67
|
-
target_dir = File.join(
|
68
|
-
to_dir,
|
69
|
-
date.strftime("%Y"),
|
70
|
-
date.strftime("%b")
|
71
|
-
)
|
72
|
-
|
73
|
-
FileUtils.mkdir_p(target_dir)
|
74
|
-
FileUtils.mv(file, File.join(target_dir, File.basename(file)))
|
75
|
-
logger.info("Archived #{File.basename(file)} to #{target_dir}")
|
76
|
-
end
|
77
|
-
|
78
62
|
end
|
79
63
|
|
80
64
|
require 'flickrup/filetype/tagged_image'
|
@@ -1,13 +1,13 @@
|
|
1
1
|
class ProcessingContext
|
2
2
|
attr_reader :file
|
3
|
-
attr_reader :
|
3
|
+
attr_reader :properties
|
4
4
|
|
5
5
|
def initialize(file, props = {})
|
6
6
|
@file = file
|
7
|
-
@
|
7
|
+
@properties = props
|
8
8
|
end
|
9
9
|
|
10
10
|
def with_properties(props)
|
11
|
-
ProcessingContext.new(self.file, self.
|
11
|
+
ProcessingContext.new(self.file, self.properties.merge(props))
|
12
12
|
end
|
13
13
|
end
|
data/lib/flickrup/processor.rb
CHANGED
@@ -5,6 +5,7 @@ require "flickrup/ext/tag_sets"
|
|
5
5
|
require "flickrup/ext/replacement_tags"
|
6
6
|
require "flickrup/ext/machine_tags"
|
7
7
|
require "flickrup/ext/visibility"
|
8
|
+
require "flickrup/archiver"
|
8
9
|
|
9
10
|
class Processor
|
10
11
|
include Logging
|
@@ -55,7 +56,7 @@ class Processor
|
|
55
56
|
x.doUpload(get_preupload_handlers, uploader)
|
56
57
|
logger.debug("Upload complete for #{x.filename}")
|
57
58
|
logger.debug("Beginning archive for #{x.filename}...")
|
58
|
-
x.archive(@config[:archive_dir])
|
59
|
+
x.archive(get_archiver, @config[:archive_dir])
|
59
60
|
logger.debug("Processing complete for #{x.filename}")
|
60
61
|
rescue => e
|
61
62
|
logger.error("Failed to process #{x.filename} due to exception: #{e}")
|
@@ -82,13 +83,23 @@ class Processor
|
|
82
83
|
end
|
83
84
|
end
|
84
85
|
|
86
|
+
def get_archiver
|
87
|
+
archive_handlers.reduce(Archiver.new) do |result, clazz|
|
88
|
+
clazz.new(@config, result, {})
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
85
92
|
def get_preupload_handlers
|
86
93
|
[MachineTags.new(@config, {}), ReplacementTags.new(@config)]
|
87
94
|
end
|
88
95
|
|
89
|
-
def upload_handlers
|
96
|
+
def upload_handlers
|
90
97
|
[TagSets, Visibility]
|
91
98
|
end
|
92
99
|
|
100
|
+
def archive_handlers
|
101
|
+
[TagSets]
|
102
|
+
end
|
103
|
+
|
93
104
|
end
|
94
105
|
|
data/lib/flickrup/uploader.rb
CHANGED
@@ -16,7 +16,7 @@ class Uploader
|
|
16
16
|
|
17
17
|
def upload(ctx)
|
18
18
|
|
19
|
-
if ctx.
|
19
|
+
if ctx.properties[UploaderConstants::NO_UPLOAD]
|
20
20
|
logger.info("Skipping upload of #{ctx.file.filename} as marked as NO_UPLOAD")
|
21
21
|
else
|
22
22
|
logger.debug("Uploading #{ctx.file.filename} with tags #{ctx.file.tags}")
|
@@ -33,7 +33,7 @@ class Uploader
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def prepare_upload_properties(ctx)
|
36
|
-
{:tags => ctx.file.tags.to_s}.merge(ctx.
|
36
|
+
{:tags => ctx.file.tags.to_s}.merge(ctx.properties)
|
37
37
|
end
|
38
38
|
|
39
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
|
- 1
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 1.1.
|
9
|
+
- 5
|
10
|
+
version: 1.1.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jonathan Gilbert
|
@@ -154,6 +154,7 @@ extensions: []
|
|
154
154
|
extra_rdoc_files: []
|
155
155
|
|
156
156
|
files:
|
157
|
+
- lib/flickrup/archiver.rb
|
157
158
|
- lib/flickrup/ext/machine_tags.rb
|
158
159
|
- lib/flickrup/ext/prefixed_extension.rb
|
159
160
|
- lib/flickrup/ext/replacement_tags.rb
|