flickru 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/flickru.rb CHANGED
@@ -71,7 +71,7 @@ def self.flickru photo_dir
71
71
  Printer.info "#{File.human_readable_size total_size} to upload"
72
72
  journey = Journey.new total_size
73
73
  photoset_ids = Set.new
74
- photos.each do |photo|
74
+ photos.sort.each do |photo|
75
75
  Printer.info "file '#{File.join File.basename(File.dirname(photo)), File.basename(photo)}' under process"
76
76
  begin
77
77
  photo_id = Flickr.upload_photo photo
@@ -1,5 +1,5 @@
1
1
  # gems
2
- require 'flickraw'
2
+ require 'flickraw-cached'
3
3
  require 'unicode_utils'
4
4
  # flickru
5
5
  require 'flickru/file'
@@ -1,7 +1,6 @@
1
1
  # ruby
2
2
  require 'rbconfig'
3
3
  # gems
4
- require 'cache'
5
4
  require 'colorize'
6
5
  require 'escape'
7
6
  require 'open-uri'
@@ -49,8 +48,6 @@ class Location
49
48
 
50
49
  private
51
50
 
52
- @@cache = Cache.new
53
-
54
51
  def Location.parse location
55
52
  # TODO special characters MAY be escaped
56
53
  idx_accuracy = location.index('#') ? location.index('#') : location.length
@@ -102,15 +99,12 @@ private
102
99
  end
103
100
 
104
101
  def Location.geowiki place
105
- if not @@cache[place].nil? then
106
- return @@cache[place]
107
- end
108
- wiki = open("http://en.wikipedia.org/wiki/#{place}").read
102
+ wiki = open("http://en.wikipedia.org/wiki/#{URI::encode(place)}").read
109
103
  tool = open(wiki.tr("\"", "\n").split("\n").grep(/geohack/) \
110
104
  .first.sub(/^\/\//,'http://').sub('&','&')).read
111
105
  geo = tool.split("\n").grep(/<span class="geo"/).first
112
106
  latitude = geo.sub(/^.*"Latitude">/, '').sub(/<\/span>, .*/, '')
113
107
  longitude = geo.sub(/.*"Longitude">/, '').sub(/<\/span>.*$/, '')
114
- @@cache[place] = latitude + ", " + longitude
108
+ latitude + ", " + longitude
115
109
  end
116
110
  end
@@ -1,5 +1,5 @@
1
1
  module Flickru
2
2
  unless defined? VERSION
3
- VERSION = "0.1.2"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
data/spec/flickru_spec.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # gems
2
2
  require 'colorize'
3
3
  require 'simplecov'
4
- SimpleCov.coverage_dir(File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'var', 'cov')))
4
+ SimpleCov.coverage_dir(File.join('var', 'cov'))
5
5
  SimpleCov.start # should be before loading flickru code!
6
6
  # flickru
7
7
  require 'flickru'
@@ -43,6 +43,10 @@ describe Flickru do
43
43
  Flickru.flickru "var/ts/tc_whitespaces"
44
44
  end
45
45
 
46
+ it "processing by alphabetical order (by filename)" do
47
+ Flickru.flickru "var/ts/tc_sorting"
48
+ end
49
+
46
50
  after(:all) do
47
51
  puts "\nRemember to delete the testing files that have been just uploaded to your Flickr's collection 'Testing Collection*'.".red
48
52
  end
metadata CHANGED
@@ -1,172 +1,196 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: flickru
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
4
5
  prerelease:
5
- version: 0.1.2
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Jesus Pardillo
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2013-05-14 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2013-08-16 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: bundler
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
18
+ requirements:
21
19
  - - ~>
22
- - !ruby/object:Gem::Version
20
+ - !ruby/object:Gem::Version
23
21
  version: 1.3.5
24
22
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: colorize
28
23
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 1.3.5
30
+ - !ruby/object:Gem::Dependency
31
+ name: colorize
32
+ requirement: !ruby/object:Gem::Requirement
30
33
  none: false
31
- requirements:
34
+ requirements:
32
35
  - - ~>
33
- - !ruby/object:Gem::Version
36
+ - !ruby/object:Gem::Version
34
37
  version: 0.5.8
35
38
  type: :runtime
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: escape
39
39
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 0.5.8
46
+ - !ruby/object:Gem::Dependency
47
+ name: escape
48
+ requirement: !ruby/object:Gem::Requirement
41
49
  none: false
42
- requirements:
50
+ requirements:
43
51
  - - ~>
44
- - !ruby/object:Gem::Version
52
+ - !ruby/object:Gem::Version
45
53
  version: 0.0.4
46
54
  type: :runtime
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: exifr
50
55
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
52
57
  none: false
53
- requirements:
58
+ requirements:
54
59
  - - ~>
55
- - !ruby/object:Gem::Version
56
- version: 1.1.1
57
- type: :runtime
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
60
- name: flickraw
61
- prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
60
+ - !ruby/object:Gem::Version
61
+ version: 0.0.4
62
+ - !ruby/object:Gem::Dependency
63
+ name: exifr
64
+ requirement: !ruby/object:Gem::Requirement
63
65
  none: false
64
- requirements:
66
+ requirements:
65
67
  - - ~>
66
- - !ruby/object:Gem::Version
67
- version: 0.9.4
68
+ - !ruby/object:Gem::Version
69
+ version: 1.1.3
68
70
  type: :runtime
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
71
- name: rubygems-update
72
71
  prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 1.1.3
78
+ - !ruby/object:Gem::Dependency
79
+ name: flickraw-cached
80
+ requirement: !ruby/object:Gem::Requirement
74
81
  none: false
75
- requirements:
82
+ requirements:
76
83
  - - ~>
77
- - !ruby/object:Gem::Version
78
- version: 1.8.11
84
+ - !ruby/object:Gem::Version
85
+ version: '20120701'
79
86
  type: :runtime
80
- version_requirements: *id006
81
- - !ruby/object:Gem::Dependency
82
- name: unicode_utils
83
87
  prerelease: false
84
- requirement: &id007 !ruby/object:Gem::Requirement
88
+ version_requirements: !ruby/object:Gem::Requirement
85
89
  none: false
86
- requirements:
90
+ requirements:
87
91
  - - ~>
88
- - !ruby/object:Gem::Version
89
- version: 1.1.2
92
+ - !ruby/object:Gem::Version
93
+ version: '20120701'
94
+ - !ruby/object:Gem::Dependency
95
+ name: rubygems-update
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 2.0.7
90
102
  type: :runtime
91
- version_requirements: *id007
92
- - !ruby/object:Gem::Dependency
93
- name: simplecov
94
103
  prerelease: false
95
- requirement: &id008 !ruby/object:Gem::Requirement
104
+ version_requirements: !ruby/object:Gem::Requirement
96
105
  none: false
97
- requirements:
106
+ requirements:
98
107
  - - ~>
99
- - !ruby/object:Gem::Version
100
- version: 0.5.4
101
- type: :development
102
- version_requirements: *id008
103
- - !ruby/object:Gem::Dependency
108
+ - !ruby/object:Gem::Version
109
+ version: 2.0.7
110
+ - !ruby/object:Gem::Dependency
104
111
  name: rspec
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 2.14.1
118
+ type: :development
105
119
  prerelease: false
106
- requirement: &id009 !ruby/object:Gem::Requirement
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 2.14.1
126
+ - !ruby/object:Gem::Dependency
127
+ name: simplecov
128
+ requirement: !ruby/object:Gem::Requirement
107
129
  none: false
108
- requirements:
130
+ requirements:
109
131
  - - ~>
110
- - !ruby/object:Gem::Version
111
- version: 2.7.0
132
+ - !ruby/object:Gem::Version
133
+ version: 0.7.1
112
134
  type: :development
113
- version_requirements: *id009
114
- description: |
115
- Command-line tool that automatises photo/video uploads to Flickr.
116
-
117
- Entering 'flickru <directory>' in your command line, any photos under 'directory' (and subdirs)
118
- are uploaded to your Flickr account (interactively entered the first time you start flickru).
119
-
120
- Photos are identified by case-insensitive extensions: GIF, JPEG, JPG, PNG, and TIFF.
121
- Videos are identified by case-insensitive extensions: AVI, MPEG, and MPG.
122
-
123
- flickru automatically sets the following Flickr metadata:
124
- (1) date taken: file last-modification time, unless JPEG/TIFF Exif metadatum
125
- 'date_time_original' is found (Flickr understands it natively).
126
- (2) privacy policy: private, visible by friends & family, hidden for public
127
- searches
128
- (3) safety level: safe
129
- (4) permissions: friends & family can add comments to the photo and its notes;
130
- nobody can add notes and tags to the photo
131
- (5) description: for videos longer than 90s (Flickr's longest allowed duration)
132
- but shorter than 500MB (Flickr's maximum permisible size), it will contain
133
- an annotation about its large duration.
134
- (6) title: extracted from the parent directory name
135
- (7) geolocation & accuracy: extracted from the parent directory name, unless
136
- JPEG/TIFF Exif GPS metadata is found (Flickr understands them natively).
137
-
138
- Before uploading photos, please, make sure that you have correctly named each
139
- photos parent directory according to the name format 'TITLE[@LOCATION[#PRECISION]]',
140
- where:
141
- (1) TITLE is the desired title for the photos stored in the directory. If no
142
- LOCATION is given, flickru tries to extract the location from Wikipedia
143
- page TITLE.
144
- (2) LOCATION is the location of the photos, specified as:
145
- (a) the Wikipedia page name (whitespaces allowed) of the location or
146
- (b) its coordinates LATITUDE,LONGITUDE
147
- (3) PRECISION is the Flickr geolocation precision. Flickru sets it to one of
148
- the following case insentitive literals: 'street', 'city', 'region',
149
- 'country', 'world'.
150
-
151
- Photos are classified into photosets. If the photoset does not exist, flickru
152
- creates it. This photoset is named after its grandparent directory. The
153
- photoset is arranged by 'date taken' (older first).
154
-
155
- To see some examples on the directory structure recognised by flickru, please
156
- explore the subdirectories under 'var/ts'.
157
-
158
- GitHub : http://github.com/jesuspv/flickru
159
- RubyGems: http://rubygems.org/gems/flickru
160
-
161
- email:
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: 0.7.1
142
+ - !ruby/object:Gem::Dependency
143
+ name: unicode_utils
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ~>
148
+ - !ruby/object:Gem::Version
149
+ version: 1.4.0
150
+ type: :runtime
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ~>
156
+ - !ruby/object:Gem::Version
157
+ version: 1.4.0
158
+ description: ! "Command-line tool that automatises photo/video uploads to Flickr.\n\nEntering
159
+ 'flickru <directory>' in your command line, any photos under 'directory' (and subdirs)\nare
160
+ uploaded to your Flickr account (interactively entered the first time you start
161
+ flickru).\n\nPhotos are identified by case-insensitive extensions: GIF, JPEG, JPG,
162
+ PNG, and TIFF.\nVideos are identified by case-insensitive extensions: AVI, MPEG,
163
+ and MPG.\n\nflickru automatically sets the following Flickr metadata:\n (1) date
164
+ taken: file last-modification time, unless JPEG/TIFF Exif metadatum\n 'date_time_original'
165
+ is found (Flickr understands it natively).\n (2) privacy policy: private, visible
166
+ by friends & family, hidden for public\n searches\n (3) safety level: safe\n
167
+ (4) permissions: friends & family can add comments to the photo and its notes;\n
168
+ \ nobody can add notes and tags to the photo\n (5) description: for videos longer
169
+ than 90s (Flickr's longest allowed duration)\n but shorter than 500MB (Flickr's
170
+ maximum permisible size), it will contain\n an annotation about its large duration.\n
171
+ (6) title: extracted from the parent directory name\n (7) geolocation & accuracy:
172
+ extracted from the parent directory name, unless\n JPEG/TIFF Exif GPS metadata
173
+ is found (Flickr understands them natively).\n\nBefore uploading photos, please,
174
+ make sure that you have correctly named each\nphotos parent directory according
175
+ to the name format 'TITLE[@LOCATION[#PRECISION]]',\nwhere:\n (1) TITLE is the desired
176
+ title for the photos stored in the directory. If no\n LOCATION is given, flickru
177
+ tries to extract the location from Wikipedia\n page TITLE.\n (2) LOCATION is
178
+ the location of the photos, specified as:\n (a) the Wikipedia page name (whitespaces
179
+ allowed) of the location or\n (b) its coordinates LATITUDE,LONGITUDE\n (3) PRECISION
180
+ is the Flickr geolocation precision. Flickru sets it to one of\n the following
181
+ case insentitive literals: 'street', 'city', 'region',\n 'country', 'world'.\n\nPhotos
182
+ are classified into photosets. If the photoset does not exist, flickru\ncreates
183
+ it. This photoset is named after its grandparent directory. The\nphotoset is arranged
184
+ by 'date taken' (older first).\n\nTo see some examples on the directory structure
185
+ recognised by flickru, please\nexplore the subdirectories under 'var/ts'.\n\nGitHub
186
+ \ : http://github.com/jesuspv/flickru\nRubyGems: http://rubygems.org/gems/flickru\n"
187
+ email:
162
188
  - dev@jesuspardillo.com
163
- executables:
189
+ executables:
164
190
  - flickru
165
191
  extensions: []
166
-
167
192
  extra_rdoc_files: []
168
-
169
- files:
193
+ files:
170
194
  - README
171
195
  - bin/flickru
172
196
  - bin/geowiki
@@ -220,38 +244,41 @@ files:
220
244
  - var/ts/tc_large_files/Testing Collection/Too Large!/80MB-of-zeros.mpg.zip
221
245
  - var/ts/tc_locations/Testing Collection/Quebec#region/Quebec#region.jpg
222
246
  - var/ts/tc_locations/Testing Collection/Troll Face/Troll Face.jpg
223
- - var/ts/tc_locations/Testing Collection/Troll Face@38.356797,-0.474376#world/Troll Face@38.356797,-0.474376#world.jpg
247
+ - var/ts/tc_locations/Testing Collection/Troll Face@38.356797,-0.474376#world/Troll
248
+ Face@38.356797,-0.474376#world.jpg
224
249
  - var/ts/tc_locations/Testing Collection/Troll Face@38.356797,-0.474376/Troll Face@38.356797,-0.474376.jpg
225
250
  - var/ts/tc_locations/Testing Collection/Troll Face@Montreal/Troll Face@Montreal.jpg
226
251
  - var/ts/tc_locations/Testing Collection/Troll Face@Quebec#region/Troll Face@Quebec#region.jpg
252
+ - var/ts/tc_sorting/Testing Collection/a.jpg
253
+ - var/ts/tc_sorting/Testing Collection/b.jpg
254
+ - var/ts/tc_sorting/Testing Collection/c.jpg
255
+ - var/ts/tc_sorting/Testing Collection/d.jpg
256
+ - var/ts/tc_sorting/Testing Collection/e.jpg
227
257
  homepage: http://github.com/jesuspv/flickru
228
258
  licenses: []
229
-
230
259
  post_install_message:
231
260
  rdoc_options: []
232
-
233
- require_paths:
261
+ require_paths:
234
262
  - lib
235
- required_ruby_version: !ruby/object:Gem::Requirement
263
+ required_ruby_version: !ruby/object:Gem::Requirement
236
264
  none: false
237
- requirements:
238
- - - ">="
239
- - !ruby/object:Gem::Version
240
- version: "0"
241
- required_rubygems_version: !ruby/object:Gem::Requirement
265
+ requirements:
266
+ - - ! '>='
267
+ - !ruby/object:Gem::Version
268
+ version: '0'
269
+ required_rubygems_version: !ruby/object:Gem::Requirement
242
270
  none: false
243
- requirements:
244
- - - ">="
245
- - !ruby/object:Gem::Version
246
- version: "0"
271
+ requirements:
272
+ - - ! '>='
273
+ - !ruby/object:Gem::Version
274
+ version: '0'
247
275
  requirements: []
248
-
249
276
  rubyforge_project:
250
- rubygems_version: 1.8.11
277
+ rubygems_version: 1.8.25
251
278
  signing_key:
252
279
  specification_version: 3
253
280
  summary: Command-line Flickr upload automator
254
- test_files:
281
+ test_files:
255
282
  - spec/flickru_spec.rb
256
283
  - var/ts/tc_accuracies/Testing Collection/Troll Face@Spain#Country/Troll Face@Spain#Country.jpg
257
284
  - var/ts/tc_accuracies/Testing Collection/Troll Face@Spain#ReGiOn/Troll Face@Spain#ReGiOn.jpg
@@ -293,7 +320,13 @@ test_files:
293
320
  - var/ts/tc_large_files/Testing Collection/Too Large!/80MB-of-zeros.mpg.zip
294
321
  - var/ts/tc_locations/Testing Collection/Quebec#region/Quebec#region.jpg
295
322
  - var/ts/tc_locations/Testing Collection/Troll Face/Troll Face.jpg
296
- - var/ts/tc_locations/Testing Collection/Troll Face@38.356797,-0.474376#world/Troll Face@38.356797,-0.474376#world.jpg
323
+ - var/ts/tc_locations/Testing Collection/Troll Face@38.356797,-0.474376#world/Troll
324
+ Face@38.356797,-0.474376#world.jpg
297
325
  - var/ts/tc_locations/Testing Collection/Troll Face@38.356797,-0.474376/Troll Face@38.356797,-0.474376.jpg
298
326
  - var/ts/tc_locations/Testing Collection/Troll Face@Montreal/Troll Face@Montreal.jpg
299
327
  - var/ts/tc_locations/Testing Collection/Troll Face@Quebec#region/Troll Face@Quebec#region.jpg
328
+ - var/ts/tc_sorting/Testing Collection/a.jpg
329
+ - var/ts/tc_sorting/Testing Collection/b.jpg
330
+ - var/ts/tc_sorting/Testing Collection/c.jpg
331
+ - var/ts/tc_sorting/Testing Collection/d.jpg
332
+ - var/ts/tc_sorting/Testing Collection/e.jpg