flickrup 1.1.16 → 1.1.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/flickrup/converter.rb +33 -0
- data/lib/flickrup/filetype/tagged_video.rb +1 -1
- data/lib/flickrup/processor.rb +16 -1
- data/lib/flickrup/slow_listener.rb +11 -8
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ece798f51989ffaa6c056bc48e54d9a593ba7248
|
4
|
+
data.tar.gz: 7ef6b9643cf597917b614353b4934e9d05ea1d9c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d270ceea438c105e8d28626e61c1c1ee2dac02d05169962809fade8cb1e0e8eeee52c7a64ed8352fb27a702b9189a7f3af06822edd597e697733f4f220cc9683
|
7
|
+
data.tar.gz: 540b8c03c5d9a1161ae7347be209fa7bfeb8cb51cdf08e1f0f9649251558a73e9bd11f47767110be12619814a32cd97382e4ba87e7125cebcd9be159c372e142
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'tmpdir'
|
3
|
+
|
4
|
+
class Converter
|
5
|
+
include Logging
|
6
|
+
|
7
|
+
def initialize(mappings)
|
8
|
+
@mappings = mappings
|
9
|
+
@move_dir = Dir.tmpdir
|
10
|
+
end
|
11
|
+
|
12
|
+
def maybe_convert(file)
|
13
|
+
mapping = @mappings[File.extname(file)[1..-1].downcase]
|
14
|
+
|
15
|
+
if mapping then
|
16
|
+
to_exec = mapping % {:file => file}
|
17
|
+
logger.debug("Running: #{to_exec}")
|
18
|
+
result = system(to_exec)
|
19
|
+
|
20
|
+
if result
|
21
|
+
logger.info("Removing converted source file #{file}")
|
22
|
+
logger.debug("Moving #{file} to #{@move_dir}")
|
23
|
+
FileUtils.mv(file, @move_dir)
|
24
|
+
else
|
25
|
+
logger.info("Failed to convert source file #{file}")
|
26
|
+
end
|
27
|
+
|
28
|
+
return result
|
29
|
+
else
|
30
|
+
false
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/flickrup/processor.rb
CHANGED
@@ -8,6 +8,7 @@ require "flickrup/ext/visibility"
|
|
8
8
|
require "flickrup/ext/sidecar"
|
9
9
|
require "flickrup/archiver"
|
10
10
|
require "flickrup/ext/associated_files"
|
11
|
+
require 'flickrup/converter'
|
11
12
|
|
12
13
|
class Processor
|
13
14
|
include Logging
|
@@ -15,6 +16,7 @@ class Processor
|
|
15
16
|
def initialize(config)
|
16
17
|
@MAX_DATE = Time.at(2130578470)
|
17
18
|
@config = config
|
19
|
+
@converter = Converter.new(config[:convert_files])
|
18
20
|
end
|
19
21
|
|
20
22
|
def paused
|
@@ -30,6 +32,19 @@ class Processor
|
|
30
32
|
return 0
|
31
33
|
end
|
32
34
|
|
35
|
+
converted_count = all_files.select{ |x|
|
36
|
+
if File.exist? x
|
37
|
+
@converter.maybe_convert(x)
|
38
|
+
else
|
39
|
+
false
|
40
|
+
end
|
41
|
+
}.length
|
42
|
+
|
43
|
+
if converted_count > 0
|
44
|
+
logger.info("Converted #{converted_count} files, reprocessing")
|
45
|
+
return true
|
46
|
+
end
|
47
|
+
|
33
48
|
# some files may have been removed by now: https://bitbucket.org/jgilbert/flickrup/issue/1
|
34
49
|
files = all_files.map { |x|
|
35
50
|
if File.exist? x
|
@@ -81,7 +96,7 @@ class Processor
|
|
81
96
|
|
82
97
|
logger.info("Processed #{tagged.length} valid files")
|
83
98
|
|
84
|
-
|
99
|
+
false
|
85
100
|
end
|
86
101
|
|
87
102
|
private
|
@@ -53,7 +53,7 @@ class SlowListener
|
|
53
53
|
#ignore, processing thread will reschedule
|
54
54
|
logger.info("Scheduling queued")
|
55
55
|
when IDLE
|
56
|
-
schedule_internal
|
56
|
+
schedule_internal @wait
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
@@ -71,6 +71,7 @@ class SlowListener
|
|
71
71
|
@processing.set PROCESSING
|
72
72
|
|
73
73
|
files = Dir["#{@config[:watch_dir]}/*.*"]
|
74
|
+
reprocess = false
|
74
75
|
|
75
76
|
old, new = files.partition { |x| Time.now > File.mtime(x) + @wait }
|
76
77
|
|
@@ -81,25 +82,27 @@ class SlowListener
|
|
81
82
|
|
82
83
|
unless old.empty?
|
83
84
|
logger.info("Found #{old.length} stable files")
|
84
|
-
@processor.run(old)
|
85
|
+
reprocess = @processor.run(old)
|
85
86
|
end
|
86
87
|
|
87
88
|
@processing.compare_and_swap(PROCESSING, IDLE)
|
88
89
|
|
89
|
-
if
|
90
|
+
if reprocess
|
91
|
+
schedule_internal 1
|
92
|
+
elsif @processing.get == SCHEDULED
|
90
93
|
logger.info("Rescheduling...")
|
91
|
-
schedule_internal
|
94
|
+
schedule_internal @wait
|
92
95
|
end
|
93
96
|
end
|
94
97
|
|
95
|
-
def schedule_internal
|
98
|
+
def schedule_internal(secs)
|
96
99
|
if @scheduler.jobs.empty?
|
97
|
-
logger.info("Scheduling processing for
|
98
|
-
@scheduler.in
|
100
|
+
logger.info("Scheduling processing for #{secs} sec")
|
101
|
+
@scheduler.in secs do
|
99
102
|
do_upload
|
100
103
|
end
|
101
104
|
else
|
102
|
-
logger.info(
|
105
|
+
logger.info('Already scheduled')
|
103
106
|
end
|
104
107
|
end
|
105
108
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flickrup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Gilbert
|
@@ -130,6 +130,7 @@ extensions: []
|
|
130
130
|
extra_rdoc_files: []
|
131
131
|
files:
|
132
132
|
- lib/flickrup/archiver.rb
|
133
|
+
- lib/flickrup/converter.rb
|
133
134
|
- lib/flickrup/ext/associated_files.rb
|
134
135
|
- lib/flickrup/ext/machine_tags.rb
|
135
136
|
- lib/flickrup/ext/prefixed_extension.rb
|