maid 0.6.1 → 0.7.0.alpha.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.
- data/ChangeLog +7 -0
- data/lib/maid/tools.rb +17 -0
- data/lib/maid/version.rb +1 -1
- data/maid.gemspec +2 -0
- data/spec/dependency_spec.rb +17 -1
- data/spec/fixtures/files/sydney.jpg +0 -0
- data/spec/lib/maid/tools_spec.rb +17 -2
- metadata +65 -43
- data/spec/fixtures/files/283x240.jpg +0 -0
data/ChangeLog
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
maid (0.7.0) unstable; urgency=low
|
2
|
+
|
3
|
+
* Add dependencies: "exifr", "geocoder"
|
4
|
+
* Add "location_city" tool
|
5
|
+
|
6
|
+
-- Benjamin Oakes <hello@benjaminoakes.com> TODO
|
7
|
+
|
1
8
|
maid (0.6.1) stable; urgency=low
|
2
9
|
|
3
10
|
* Brandon Pittman, Benjamin Oakes: Improve documentation. (Closes: #135)
|
data/lib/maid/tools.rb
CHANGED
@@ -3,6 +3,8 @@ require 'find'
|
|
3
3
|
require 'fileutils'
|
4
4
|
require 'time'
|
5
5
|
|
6
|
+
require 'exifr'
|
7
|
+
require 'geocoder'
|
6
8
|
require 'mime/types'
|
7
9
|
require 'dimensions'
|
8
10
|
require 'zip'
|
@@ -441,6 +443,21 @@ module Maid::Tools
|
|
441
443
|
Dimensions.dimensions(path)
|
442
444
|
end
|
443
445
|
|
446
|
+
# Determine the city of the given JPEG image.
|
447
|
+
#
|
448
|
+
# ## Examples
|
449
|
+
#
|
450
|
+
# loation_city('old_capitol.jpg') # => "Iowa City, IA, US"
|
451
|
+
def location_city(path)
|
452
|
+
case mime_type(path)
|
453
|
+
when 'image/jpeg'
|
454
|
+
gps = EXIFR::JPEG.new(path).gps
|
455
|
+
coordinates_string = [gps.latitude, gps.longitude]
|
456
|
+
location = Geocoder.search(coordinates_string).first
|
457
|
+
[location.city, location.province, location.country_code].join(', ')
|
458
|
+
end
|
459
|
+
end
|
460
|
+
|
444
461
|
# [Mac OS X] Use Spotlight metadata to determine audio length.
|
445
462
|
#
|
446
463
|
# ## Examples
|
data/lib/maid/version.rb
CHANGED
data/maid.gemspec
CHANGED
@@ -27,6 +27,8 @@ Gem::Specification.new do |s|
|
|
27
27
|
s.add_dependency('xdg', '~> 2.2.3') # previous versions had bugs
|
28
28
|
s.add_dependency('listen', '~> 2.8.0')
|
29
29
|
s.add_dependency('rufus-scheduler', '~> 3.0.6')
|
30
|
+
s.add_dependency('exifr', '~> 1.2.0')
|
31
|
+
s.add_dependency('geocoder', '~> 1.2.0')
|
30
32
|
|
31
33
|
# TODO: use one of these two gems instead of `mdfind`. **But** They have to work on Linux as well.
|
32
34
|
#
|
data/spec/dependency_spec.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'dimensions'
|
2
|
+
require 'exifr'
|
2
3
|
require 'logger'
|
4
|
+
require 'geocoder'
|
3
5
|
require 'mime/types'
|
4
6
|
require 'rbconfig'
|
5
7
|
require 'stringio'
|
@@ -81,7 +83,21 @@ describe 'Dependency expectations' do
|
|
81
83
|
|
82
84
|
describe Dimensions do
|
83
85
|
it 'returns dimensions as an array' do
|
84
|
-
expect(Dimensions.dimensions("#@file_fixtures_path/
|
86
|
+
expect(Dimensions.dimensions("#@file_fixtures_path/sydney.jpg")).to eq([100, 75])
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe EXIFR::JPEG do
|
91
|
+
it 'returns latitude and longitude' do
|
92
|
+
gps = EXIFR::JPEG.new("#@file_fixtures_path/sydney.jpg").gps
|
93
|
+
expect([gps.latitude, gps.longitude]).to eq([-33.85608611111111, 151.219925])
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe Geocoder do
|
98
|
+
it 'translates latitude and longitude into street addresses' do
|
99
|
+
city = Geocoder.search('-33.85608611111111,151.219925').map { |location| location.city }.uniq.compact
|
100
|
+
expect(city).to eq(['Sydney'])
|
85
101
|
end
|
86
102
|
end
|
87
103
|
end
|
Binary file
|
data/spec/lib/maid/tools_spec.rb
CHANGED
@@ -644,6 +644,21 @@ module Maid
|
|
644
644
|
end
|
645
645
|
end
|
646
646
|
|
647
|
+
describe '#location_city' do
|
648
|
+
context 'given a JPEG image' do
|
649
|
+
it 'reports the known location' do
|
650
|
+
sydney_path = File.join(file_fixtures_path, 'sydney.jpg')
|
651
|
+
expect(@maid.location_city(sydney_path)).to eq('Sydney, New South Wales, AU')
|
652
|
+
end
|
653
|
+
end
|
654
|
+
|
655
|
+
context 'given an unknown type' do
|
656
|
+
it 'returns nil' do
|
657
|
+
expect(@maid.location_city(unknown_path)).to be_nil
|
658
|
+
end
|
659
|
+
end
|
660
|
+
end
|
661
|
+
|
647
662
|
describe '#mime_type' do
|
648
663
|
context 'given a JPEG image' do
|
649
664
|
it 'reports "image/jpeg"' do
|
@@ -678,8 +693,8 @@ module Maid
|
|
678
693
|
matches = @maid.where_content_type(@maid.dir(file_fixtures_glob), 'image')
|
679
694
|
|
680
695
|
expect(matches.length).to eq(2)
|
681
|
-
expect(matches.first).to end_with('spec/fixtures/files/
|
682
|
-
expect(matches.last).to end_with('spec/fixtures/files/
|
696
|
+
expect(matches.first).to end_with('spec/fixtures/files/ruby.jpg')
|
697
|
+
expect(matches.last).to end_with('spec/fixtures/files/sydney.jpg')
|
683
698
|
end
|
684
699
|
end
|
685
700
|
end
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: maid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.7.0.alpha.1
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Benjamin Oakes
|
@@ -13,7 +13,7 @@ date: 2015-01-02 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: escape
|
16
|
-
requirement: &
|
16
|
+
requirement: &21482480 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -24,10 +24,10 @@ dependencies:
|
|
24
24
|
version: 0.1.0
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
|
-
version_requirements: *
|
27
|
+
version_requirements: *21482480
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: thor
|
30
|
-
requirement: &
|
30
|
+
requirement: &21481740 !ruby/object:Gem::Requirement
|
31
31
|
none: false
|
32
32
|
requirements:
|
33
33
|
- - ! '>='
|
@@ -38,10 +38,10 @@ dependencies:
|
|
38
38
|
version: 1.0.0
|
39
39
|
type: :runtime
|
40
40
|
prerelease: false
|
41
|
-
version_requirements: *
|
41
|
+
version_requirements: *21481740
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: deprecated
|
44
|
-
requirement: &
|
44
|
+
requirement: &21481020 !ruby/object:Gem::Requirement
|
45
45
|
none: false
|
46
46
|
requirements:
|
47
47
|
- - ~>
|
@@ -49,10 +49,10 @@ dependencies:
|
|
49
49
|
version: 3.0.0
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
|
-
version_requirements: *
|
52
|
+
version_requirements: *21481020
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: dimensions
|
55
|
-
requirement: &
|
55
|
+
requirement: &21480540 !ruby/object:Gem::Requirement
|
56
56
|
none: false
|
57
57
|
requirements:
|
58
58
|
- - ! '>='
|
@@ -63,10 +63,10 @@ dependencies:
|
|
63
63
|
version: '2.0'
|
64
64
|
type: :runtime
|
65
65
|
prerelease: false
|
66
|
-
version_requirements: *
|
66
|
+
version_requirements: *21480540
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
68
|
name: mime-types
|
69
|
-
requirement: &
|
69
|
+
requirement: &21479820 !ruby/object:Gem::Requirement
|
70
70
|
none: false
|
71
71
|
requirements:
|
72
72
|
- - ~>
|
@@ -74,10 +74,10 @@ dependencies:
|
|
74
74
|
version: '2.0'
|
75
75
|
type: :runtime
|
76
76
|
prerelease: false
|
77
|
-
version_requirements: *
|
77
|
+
version_requirements: *21479820
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
79
|
name: rubyzip
|
80
|
-
requirement: &
|
80
|
+
requirement: &21479360 !ruby/object:Gem::Requirement
|
81
81
|
none: false
|
82
82
|
requirements:
|
83
83
|
- - ~>
|
@@ -85,10 +85,10 @@ dependencies:
|
|
85
85
|
version: 1.1.0
|
86
86
|
type: :runtime
|
87
87
|
prerelease: false
|
88
|
-
version_requirements: *
|
88
|
+
version_requirements: *21479360
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: xdg
|
91
|
-
requirement: &
|
91
|
+
requirement: &21478900 !ruby/object:Gem::Requirement
|
92
92
|
none: false
|
93
93
|
requirements:
|
94
94
|
- - ~>
|
@@ -96,10 +96,10 @@ dependencies:
|
|
96
96
|
version: 2.2.3
|
97
97
|
type: :runtime
|
98
98
|
prerelease: false
|
99
|
-
version_requirements: *
|
99
|
+
version_requirements: *21478900
|
100
100
|
- !ruby/object:Gem::Dependency
|
101
101
|
name: listen
|
102
|
-
requirement: &
|
102
|
+
requirement: &20897480 !ruby/object:Gem::Requirement
|
103
103
|
none: false
|
104
104
|
requirements:
|
105
105
|
- - ~>
|
@@ -107,10 +107,10 @@ dependencies:
|
|
107
107
|
version: 2.8.0
|
108
108
|
type: :runtime
|
109
109
|
prerelease: false
|
110
|
-
version_requirements: *
|
110
|
+
version_requirements: *20897480
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rufus-scheduler
|
113
|
-
requirement: &
|
113
|
+
requirement: &20895860 !ruby/object:Gem::Requirement
|
114
114
|
none: false
|
115
115
|
requirements:
|
116
116
|
- - ~>
|
@@ -118,10 +118,32 @@ dependencies:
|
|
118
118
|
version: 3.0.6
|
119
119
|
type: :runtime
|
120
120
|
prerelease: false
|
121
|
-
version_requirements: *
|
121
|
+
version_requirements: *20895860
|
122
|
+
- !ruby/object:Gem::Dependency
|
123
|
+
name: exifr
|
124
|
+
requirement: &20894420 !ruby/object:Gem::Requirement
|
125
|
+
none: false
|
126
|
+
requirements:
|
127
|
+
- - ~>
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: 1.2.0
|
130
|
+
type: :runtime
|
131
|
+
prerelease: false
|
132
|
+
version_requirements: *20894420
|
133
|
+
- !ruby/object:Gem::Dependency
|
134
|
+
name: geocoder
|
135
|
+
requirement: &20192760 !ruby/object:Gem::Requirement
|
136
|
+
none: false
|
137
|
+
requirements:
|
138
|
+
- - ~>
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: 1.2.0
|
141
|
+
type: :runtime
|
142
|
+
prerelease: false
|
143
|
+
version_requirements: *20192760
|
122
144
|
- !ruby/object:Gem::Dependency
|
123
145
|
name: fakefs
|
124
|
-
requirement: &
|
146
|
+
requirement: &20192300 !ruby/object:Gem::Requirement
|
125
147
|
none: false
|
126
148
|
requirements:
|
127
149
|
- - ~>
|
@@ -129,10 +151,10 @@ dependencies:
|
|
129
151
|
version: 0.4.2
|
130
152
|
type: :development
|
131
153
|
prerelease: false
|
132
|
-
version_requirements: *
|
154
|
+
version_requirements: *20192300
|
133
155
|
- !ruby/object:Gem::Dependency
|
134
156
|
name: guard
|
135
|
-
requirement: &
|
157
|
+
requirement: &20191840 !ruby/object:Gem::Requirement
|
136
158
|
none: false
|
137
159
|
requirements:
|
138
160
|
- - ~>
|
@@ -140,10 +162,10 @@ dependencies:
|
|
140
162
|
version: 2.10.4
|
141
163
|
type: :development
|
142
164
|
prerelease: false
|
143
|
-
version_requirements: *
|
165
|
+
version_requirements: *20191840
|
144
166
|
- !ruby/object:Gem::Dependency
|
145
167
|
name: guard-rspec
|
146
|
-
requirement: &
|
168
|
+
requirement: &20191380 !ruby/object:Gem::Requirement
|
147
169
|
none: false
|
148
170
|
requirements:
|
149
171
|
- - ~>
|
@@ -151,10 +173,10 @@ dependencies:
|
|
151
173
|
version: 4.5.0
|
152
174
|
type: :development
|
153
175
|
prerelease: false
|
154
|
-
version_requirements: *
|
176
|
+
version_requirements: *20191380
|
155
177
|
- !ruby/object:Gem::Dependency
|
156
178
|
name: rake
|
157
|
-
requirement: &
|
179
|
+
requirement: &20190920 !ruby/object:Gem::Requirement
|
158
180
|
none: false
|
159
181
|
requirements:
|
160
182
|
- - ~>
|
@@ -162,10 +184,10 @@ dependencies:
|
|
162
184
|
version: 10.4.2
|
163
185
|
type: :development
|
164
186
|
prerelease: false
|
165
|
-
version_requirements: *
|
187
|
+
version_requirements: *20190920
|
166
188
|
- !ruby/object:Gem::Dependency
|
167
189
|
name: redcarpet
|
168
|
-
requirement: &
|
190
|
+
requirement: &20190460 !ruby/object:Gem::Requirement
|
169
191
|
none: false
|
170
192
|
requirements:
|
171
193
|
- - ~>
|
@@ -173,10 +195,10 @@ dependencies:
|
|
173
195
|
version: 3.2.2
|
174
196
|
type: :development
|
175
197
|
prerelease: false
|
176
|
-
version_requirements: *
|
198
|
+
version_requirements: *20190460
|
177
199
|
- !ruby/object:Gem::Dependency
|
178
200
|
name: rspec
|
179
|
-
requirement: &
|
201
|
+
requirement: &20190000 !ruby/object:Gem::Requirement
|
180
202
|
none: false
|
181
203
|
requirements:
|
182
204
|
- - ~>
|
@@ -184,10 +206,10 @@ dependencies:
|
|
184
206
|
version: 3.1.0
|
185
207
|
type: :development
|
186
208
|
prerelease: false
|
187
|
-
version_requirements: *
|
209
|
+
version_requirements: *20190000
|
188
210
|
- !ruby/object:Gem::Dependency
|
189
211
|
name: timecop
|
190
|
-
requirement: &
|
212
|
+
requirement: &20189540 !ruby/object:Gem::Requirement
|
191
213
|
none: false
|
192
214
|
requirements:
|
193
215
|
- - ~>
|
@@ -195,10 +217,10 @@ dependencies:
|
|
195
217
|
version: 0.7.0
|
196
218
|
type: :development
|
197
219
|
prerelease: false
|
198
|
-
version_requirements: *
|
220
|
+
version_requirements: *20189540
|
199
221
|
- !ruby/object:Gem::Dependency
|
200
222
|
name: yard
|
201
|
-
requirement: &
|
223
|
+
requirement: &20189080 !ruby/object:Gem::Requirement
|
202
224
|
none: false
|
203
225
|
requirements:
|
204
226
|
- - ~>
|
@@ -206,10 +228,10 @@ dependencies:
|
|
206
228
|
version: 0.8.4
|
207
229
|
type: :development
|
208
230
|
prerelease: false
|
209
|
-
version_requirements: *
|
231
|
+
version_requirements: *20189080
|
210
232
|
- !ruby/object:Gem::Dependency
|
211
233
|
name: rb-inotify
|
212
|
-
requirement: &
|
234
|
+
requirement: &20188620 !ruby/object:Gem::Requirement
|
213
235
|
none: false
|
214
236
|
requirements:
|
215
237
|
- - ~>
|
@@ -217,10 +239,10 @@ dependencies:
|
|
217
239
|
version: 0.9.0
|
218
240
|
type: :development
|
219
241
|
prerelease: false
|
220
|
-
version_requirements: *
|
242
|
+
version_requirements: *20188620
|
221
243
|
- !ruby/object:Gem::Dependency
|
222
244
|
name: rb-fsevent
|
223
|
-
requirement: &
|
245
|
+
requirement: &20188160 !ruby/object:Gem::Requirement
|
224
246
|
none: false
|
225
247
|
requirements:
|
226
248
|
- - ~>
|
@@ -228,7 +250,7 @@ dependencies:
|
|
228
250
|
version: 0.9.2
|
229
251
|
type: :development
|
230
252
|
prerelease: false
|
231
|
-
version_requirements: *
|
253
|
+
version_requirements: *20188160
|
232
254
|
description: Be lazy. Let Maid clean up after you, based on rules you define. Think
|
233
255
|
of it as "Hazel for hackers".
|
234
256
|
email:
|
@@ -281,10 +303,10 @@ files:
|
|
281
303
|
- script/vagrant-test-all
|
282
304
|
- spec/dependency_spec.rb
|
283
305
|
- spec/fixtures/files/1.zip
|
284
|
-
- spec/fixtures/files/283x240.jpg
|
285
306
|
- spec/fixtures/files/bar.zip
|
286
307
|
- spec/fixtures/files/foo.zip
|
287
308
|
- spec/fixtures/files/ruby.jpg
|
309
|
+
- spec/fixtures/files/sydney.jpg
|
288
310
|
- spec/fixtures/files/unknown.foo
|
289
311
|
- ! "spec/fixtures/files/ã\x81\x95.zip"
|
290
312
|
- spec/lib/maid/app_spec.rb
|
@@ -315,9 +337,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
315
337
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
316
338
|
none: false
|
317
339
|
requirements:
|
318
|
-
- - ! '
|
340
|
+
- - ! '>'
|
319
341
|
- !ruby/object:Gem::Version
|
320
|
-
version:
|
342
|
+
version: 1.3.1
|
321
343
|
requirements: []
|
322
344
|
rubyforge_project: maid
|
323
345
|
rubygems_version: 1.8.11
|
Binary file
|