aperture 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG ADDED
@@ -0,0 +1,12 @@
1
+ == 0.3.3 / 2009-12-20
2
+ * Added verbose output on Library#parse, optional dependency on ruby-progressbar
3
+
4
+ == 0.3.2 / 2009-12-16
5
+ * Added plist dependency to gemspec
6
+ * Added find_by_keyword to PhotoSet
7
+
8
+ == 0.3.1 / 2009-12-16
9
+ * Updated rdocs
10
+
11
+ == 0.3.0 / 2008-12-16
12
+ * First public release
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.2
1
+ 0.3.3
data/aperture.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{aperture}
8
- s.version = "0.3.2"
8
+ s.version = "0.3.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kyle Burckhard"]
12
- s.date = %q{2009-12-16}
12
+ s.date = %q{2009-12-20}
13
13
  s.description = %q{Parses out the files from a Aperture Photo Library to give useful figures and check consistancy of the Library itself.}
14
14
  s.email = %q{kyle.burckhard@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.files = [
20
20
  ".document",
21
21
  ".gitignore",
22
+ "CHANGELOG",
22
23
  "LICENSE",
23
24
  "README.rdoc",
24
25
  "Rakefile",
@@ -1,4 +1,8 @@
1
1
  require 'find'
2
+ begin
3
+ require 'progressbar'
4
+ rescue LoadError
5
+ end
2
6
 
3
7
  module Aperture
4
8
 
@@ -7,7 +11,9 @@ module Aperture
7
11
  # photo library. From the object you can access information about the Versions, Photos,
8
12
  # Albums and Projects contained in the Library.
9
13
  #
10
- # *Note* Depending on the size of the Aperture photo library parsing it into ruby objects
14
+ # There is an optional second argument for parse the enable more verbose output.
15
+ #
16
+ # *Note:* Depending on the size of the Aperture photo library parsing it into ruby objects
11
17
  # may take serveral minutes.
12
18
  class Library
13
19
  attr_reader :root, :photos, :albums, :projects, :versions
@@ -23,36 +29,67 @@ module Aperture
23
29
 
24
30
  # This the key method for parsing the library, it requires the path of where the library
25
31
  # exists on disk. It returns a fully parsed Library object.
26
- def self.parse(root_path)
32
+ # The second arugment makes the method give more verbose output while it is processing.
33
+ # Using the ProgressBar gem, to install use: <tt>[sudo] gem install ruby-progressbar</tt>
34
+ #
35
+ # http://github.com/nex3/ruby-progressbar
36
+ def self.parse(root_path, verbose=false)
27
37
  library = new(root_path)
38
+ pb = nil
28
39
  files = []
40
+
41
+ if verbose
42
+ print "Finding metadata files in library: "
43
+ st = Time.now
44
+ end
45
+
29
46
  Find.find(library.root) do |path|
30
47
  files << path
31
48
  end
32
49
 
50
+ puts "#{(Time.now - st)} seconds"
51
+
33
52
  # Projects
34
- files.select {|p| p =~ /\.approject$/ }.each do |path|
53
+ files_projects = files.select {|p| p =~ /\.approject$/ }
54
+ # puts files_projects.size
55
+ pb = ProgressBar.new("projects", files_projects.size) if defined?(ProgressBar) && verbose
56
+ files_projects.each do |path|
35
57
  project = Project.new
36
58
  project.attributes = Plist::parse_xml(File.join(path, 'Info.apfolder'))
37
59
  library.projects[project.attributes['uuid']] = project
60
+ pb.inc if pb
38
61
  end
62
+ pb.finish if pb
39
63
 
40
64
  # Photo Masters
41
- files.select {|p| p =~ /Info\.apmaster$/}.each do |path|
65
+ files_masters = files.select {|p| p =~ /Info\.apmaster$/}
66
+ # puts files_masters.size
67
+ pb = ProgressBar.new("photo masters", files_masters.size) if defined?(ProgressBar) && verbose
68
+ files_masters.each do |path|
42
69
  photo = Photo.new(File.dirname(path))
43
70
  photo.master_attributes = Plist::parse_xml(path)
44
71
  photo.master_attributes['path']
45
72
  library.photos << photo
73
+ pb.inc if pb
46
74
  end
75
+ pb.finish if pb
47
76
 
48
77
  # Photo Files
49
- files.select {|p| p =~ /\.apfile$/}.each do |path|
78
+ files_files = files.select {|p| p =~ /\.apfile$/}
79
+ # puts files_files.size
80
+ pb = ProgressBar.new("photo files", files_files.size) if defined?(ProgressBar) && verbose
81
+ files_files.each do |path|
50
82
  file_attributes = Plist::parse_xml(path)
51
83
  library.photos[file_attributes['masterUuid']].file_attributes = file_attributes
84
+ pb.inc if pb
52
85
  end
86
+ pb.finish if pb
53
87
 
54
88
  # Versions
55
- files.select {|p| p =~ /Version-.+\.apversion$/}.each do |path|
89
+ files_versions = files.select {|p| p =~ /Version-.+\.apversion$/}
90
+ # puts files_versions.size
91
+ pb = ProgressBar.new("versions", files_projects.size) if defined?(ProgressBar) && verbose
92
+ files_versions.each do |path|
56
93
  directory, filename = File.dirname(path), File.basename(path)
57
94
  attributes = Plist::parse_xml(path)
58
95
 
@@ -70,10 +107,15 @@ module Aperture
70
107
 
71
108
  # add version's photo to project
72
109
  library.projects[version.attributes['projectUuid']].photos << version.photo
110
+ pb.inc if pb
73
111
  end
112
+ pb.finish if pb
74
113
 
75
114
  # Albums
76
- files.select {|p| p =~ /\.apalbum/ }.each do |path|
115
+ files_albums = files.select {|p| p =~ /\.apalbum/ }
116
+ # puts files_albums.size
117
+ pb = ProgressBar.new("albums", files_albums.size) if defined?(ProgressBar) && verbose
118
+ files_albums.each do |path|
77
119
  attributes = Plist::parse_xml(path)
78
120
  attributes['directory'] = File.dirname(path)
79
121
  attributes['filename'] = File.basename(path)
@@ -87,7 +129,9 @@ module Aperture
87
129
  library.versions[id].photo.albums << album unless library.versions[id].photo.albums.include?(album)
88
130
  end
89
131
  end
132
+ pb.inc if pb
90
133
  end
134
+ pb.finish if pb
91
135
 
92
136
  return library
93
137
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aperture
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Burckhard
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-16 00:00:00 -08:00
12
+ date: 2009-12-20 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -34,6 +34,7 @@ extra_rdoc_files:
34
34
  files:
35
35
  - .document
36
36
  - .gitignore
37
+ - CHANGELOG
37
38
  - LICENSE
38
39
  - README.rdoc
39
40
  - Rakefile