flickrup 0.0.5 → 0.0.6
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/processor.rb +9 -4
- data/lib/flickrup/slow_listener.rb +25 -41
- data/lib/flickrup.rb +1 -0
- metadata +3 -3
data/lib/flickrup/processor.rb
CHANGED
@@ -28,10 +28,15 @@ class Processor
|
|
28
28
|
|
29
29
|
uploader = Uploader.new(@config["api_key"], @config["shared_secret"])
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
31
|
+
if @config[:dryrun]
|
32
|
+
logger.info("Would now upload & move #{tagged.length} files, pausing for 5 secs instead")
|
33
|
+
sleep 5
|
34
|
+
else
|
35
|
+
tagged.each { |x|
|
36
|
+
x.doUpload(uploader)
|
37
|
+
x.archive(@config["archive_dir"])
|
38
|
+
}
|
39
|
+
end
|
35
40
|
|
36
41
|
logger.debug("Processed #{tagged.length} valid files")
|
37
42
|
|
@@ -18,9 +18,9 @@ require "flickrup/logging"
|
|
18
18
|
class SlowListener
|
19
19
|
include Logging
|
20
20
|
|
21
|
-
IDLE =
|
22
|
-
|
23
|
-
|
21
|
+
IDLE = 0
|
22
|
+
SCHEDULED = 1
|
23
|
+
PROCESSING = 2
|
24
24
|
|
25
25
|
def initialize(config)
|
26
26
|
@wait = config[:timeout]
|
@@ -33,7 +33,7 @@ class SlowListener
|
|
33
33
|
|
34
34
|
def run
|
35
35
|
logger.debug("Watching #{@config['watch_dir']}...")
|
36
|
-
Listen.to(@config['watch_dir']) do |modified, added,
|
36
|
+
Listen.to(@config['watch_dir']) do |modified, added, _|
|
37
37
|
unless modified.empty? && added.empty?
|
38
38
|
on_change
|
39
39
|
end
|
@@ -42,31 +42,27 @@ class SlowListener
|
|
42
42
|
|
43
43
|
def do_upload
|
44
44
|
logger.debug("Checking files for upload")
|
45
|
+
|
46
|
+
@processing.set PROCESSING
|
47
|
+
|
45
48
|
files = Dir["#{@config['watch_dir']}/*.{jpg,JPG,jpeg,JPEG}"]
|
46
49
|
|
47
50
|
old, new = files.partition { |x| Time.now > File.mtime(x) + @wait }
|
48
51
|
|
49
|
-
|
52
|
+
unless new.empty?
|
53
|
+
logger.debug("Found #{new.length} new files")
|
54
|
+
@processing.set SCHEDULED
|
55
|
+
end
|
50
56
|
|
51
57
|
unless old.empty?
|
52
58
|
logger.debug("Found #{old.length} stable files")
|
53
|
-
@processing.set PROCESSING
|
54
59
|
@processor.run(old)
|
55
|
-
changes = @processing.swap IDLE
|
56
|
-
if changes > 0
|
57
|
-
logger.debug("Changes occurred while processing")
|
58
|
-
reschedule = true
|
59
|
-
end
|
60
60
|
end
|
61
61
|
|
62
|
-
|
63
|
-
logger.debug("Found #{new.length} new files")
|
64
|
-
reschedule = true
|
65
|
-
end
|
62
|
+
@processing.compare_and_swap(PROCESSING,IDLE)
|
66
63
|
|
67
|
-
if
|
64
|
+
if @processing.get == SCHEDULED
|
68
65
|
logger.debug("Rescheduling...")
|
69
|
-
#todo: schedule for latest
|
70
66
|
schedule
|
71
67
|
end
|
72
68
|
end
|
@@ -74,27 +70,17 @@ class SlowListener
|
|
74
70
|
def on_change
|
75
71
|
logger.debug("Change detected")
|
76
72
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
end
|
89
|
-
else #wasn't processing
|
90
|
-
case current_state
|
91
|
-
when IDLE
|
92
|
-
schedule
|
93
|
-
when CHANGES_QUEUED
|
94
|
-
logger.debug("Scheduling already queued") # already queued changes
|
95
|
-
when PROCESSING
|
96
|
-
on_change #retry
|
97
|
-
end
|
73
|
+
previous_state = @processing.swap(SCHEDULED)
|
74
|
+
|
75
|
+
case previous_state
|
76
|
+
when SCHEDULED
|
77
|
+
#ignore, already scheduled
|
78
|
+
logger.debug("Already scheduled")
|
79
|
+
when PROCESSING
|
80
|
+
#ignore, processing thread will reschedule
|
81
|
+
logger.debug("Scheduling queued")
|
82
|
+
when IDLE
|
83
|
+
schedule
|
98
84
|
end
|
99
85
|
end
|
100
86
|
|
@@ -102,9 +88,7 @@ class SlowListener
|
|
102
88
|
if @scheduler.jobs.empty?
|
103
89
|
logger.debug("Scheduling processing for #@wait sec")
|
104
90
|
@scheduler.in @wait do
|
105
|
-
|
106
|
-
do_upload
|
107
|
-
end
|
91
|
+
do_upload
|
108
92
|
end
|
109
93
|
else
|
110
94
|
logger.debug("Already scheduled")
|
data/lib/flickrup.rb
CHANGED
@@ -26,6 +26,7 @@ module Flickrup
|
|
26
26
|
opt :loglevel, "Logging level", :type => :string, :default => "INFO"
|
27
27
|
opt :config, "Configuration file", :type => :string, :default => './flickrup.yml'
|
28
28
|
opt :timeout, "Timeout/Wait for file modification", :default => 5*60
|
29
|
+
opt :dryrun, "Dry run, don't move or upload (useful for debugging)"
|
29
30
|
end
|
30
31
|
|
31
32
|
logger.level = Logger::Severity.const_get(opts.loglevel)
|
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: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 6
|
10
|
+
version: 0.0.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jonathan Gilbert
|