mp3renamer 0.0.1 → 0.0.3

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.
@@ -1,4 +1,3 @@
1
- == 1.0.0 / 2009-02-23
1
+ == 0.0.1 / 2009-02-23
2
2
 
3
- * 1 major enhancement
4
- * Birthday!
3
+ * Initial release
data/README.txt CHANGED
@@ -1,32 +1,130 @@
1
1
  mp3renamer
2
- by FIXME (your name)
3
- FIXME (url)
4
2
 
5
- == DESCRIPTION:
3
+ by Garry A Offord (garry.offord@hushmail.com)
4
+ http://rubyforge.org/projects/mp3renamer/
6
5
 
7
- FIXME (describe your package)
6
+ == DESCRIPTION:
8
7
 
8
+ This program takes an MP3 audiobook and renames the subdirs and files using a consistent naming convention.
9
+ It also updates the ID3v1 and ID3v2 tags for artist, album, track number, track title, genre, and year.
10
+
11
+ NOTES
12
+
13
+ (1) The following source directory structure is assumed for this program:
14
+
15
+ <artist>
16
+ |
17
+ `--- <album> <==== this is the SOURCE-DIRECTORY command line parameter.
18
+ |
19
+ +--- <disc 1>
20
+ | |
21
+ | +--- <disc 1 track 1>.mp3
22
+ | +--- <disc 1 track 2>.mp3
23
+ | | ...
24
+ | `--- <disc 1 track N1>.mp3
25
+ |
26
+ +--- <disc 2>
27
+ | |
28
+ | +--- <disc 2 track 1>.mp3
29
+ | +--- <disc 2 track 2>.mp3
30
+ | | ...
31
+ | `--- <disc 2 track N1>.mp3
32
+ |
33
+ | ...
34
+ |
35
+ `--- <disc M>
36
+ |
37
+ +--- <disc M track 1>.mp3
38
+ +--- <disc M track 2>.mp3
39
+ | ...
40
+ `--- <disc M track NM>.mp3
41
+
42
+
43
+ (2) The following output directory structure will be created:
44
+
45
+ <output-directory> <==== this is value of the --output command line parameter.
46
+ |
47
+ `--- <artist>
48
+ |
49
+ `--- <album>
50
+ |
51
+ +--- <album> [D01.MM]
52
+ | |
53
+ | +--- D01.MM-T01.N1.mp3
54
+ | +--- D01.MM-T02.N1.mp3
55
+ | | ...
56
+ | `--- D01.MM-TN1.N1.mp3
57
+ |
58
+ +--- <album> [D02.MM]
59
+ | |
60
+ | +--- D02.MM-T01.N2.mp3
61
+ | +--- D02.MM-T02.N2.mp3
62
+ | | ...
63
+ | `--- D02.MM-TN2.N2.mp3
64
+ |
65
+ | ...
66
+ |
67
+ `--- <album> [DMM.MM]
68
+ |
69
+ +--- DMM.MM-T01.NN.mp3
70
+ +--- DMM.MM-T02.NN.mp3
71
+ | ...
72
+ `--- DMM.MM-TNN.NN.mp3
73
+
74
+
75
+
9
76
  == FEATURES/PROBLEMS:
10
77
 
11
- * FIXME (list of features or problems)
78
+ * Renames folders and files using a consistent naming convention.
79
+ * Sets the ID3v1 and ID3v2 tags for artist, album, track number, track title, genre, and year.
80
+ * Note that although the individual album folders are renamed to have the disc number as
81
+ a part of album name, the album name set in the ID3 tags do not include the disc number.
12
82
 
13
83
  == SYNOPSIS:
14
84
 
15
- FIXME (code sample of usage)
85
+ Usage:
86
+ mp3renamer.rb [options] SOURCE-DIRECTORY
87
+
88
+ Options
89
+
90
+ -o, --output DIRECTORY Directory into which the renamed files will be written.
91
+ Default is: C:/DOCUME~1/ec2yvgm/LOCALS~1/Temp/renamed_mp3_files
92
+
93
+ -a, --artist ARTIST-NAME Name of the album's artist.
94
+ Default is: base name of the PARENT directory
95
+
96
+ -t, --title ALBUM-TITLE Title of the album.
97
+ Default is: base name of the CURRENT directory
98
+
99
+ -y, --year RELEASE-YEAR Year of the album's release.
100
+ Default is: 2009
101
+
102
+ -c, --[no-]copy-files Copy files from source directory into output directory.
103
+ Default is: true
104
+
105
+ -1, --[no-]update-id3v1-tags Update ID3v1 tags for artist, album, track number, track title, genre, and year.
106
+ Default is: true
107
+
108
+ -2, --[no-]update-id3v2-tags Update ID3v2 tags for artist, album, track number, track title, genre, and year.
109
+ Default is: true
110
+
111
+ -h, --help This help info.
16
112
 
17
113
  == REQUIREMENTS:
18
114
 
19
- * FIXME (list of requirements)
115
+ * bones (>= 2.4.0)
116
+ * cooloptions (>= 1.1.1)
117
+ * ruby-mp3info (>= 0.6.12)
20
118
 
21
119
  == INSTALL:
22
120
 
23
- * FIXME (sudo gem install, anything else)
121
+ * gem install mp3renamer
24
122
 
25
123
  == LICENSE:
26
124
 
27
125
  (The MIT License)
28
126
 
29
- Copyright (c) 2008 FIXME (different license?)
127
+ Copyright (c) 2009 Garry A Offord
30
128
 
31
129
  Permission is hereby granted, free of charge, to any person obtaining
32
130
  a copy of this software and associated documentation files (the
data/Rakefile CHANGED
@@ -19,12 +19,45 @@ require 'mp3renamer'
19
19
  task :default => 'spec:run'
20
20
 
21
21
  PROJ.name = 'mp3renamer'
22
- PROJ.authors = 'FIXME (who is writing this software)'
23
- PROJ.email = 'FIXME (your e-mail)'
24
- PROJ.url = 'FIXME (project homepage)'
22
+ PROJ.authors = 'Garry A Offord'
23
+ PROJ.email = 'garry.offord@hushmail.com'
24
+ PROJ.url = 'http://rubyforge.org/projects/mp3renamer/'
25
25
  PROJ.version = Mp3renamer::VERSION
26
26
  PROJ.rubyforge.name = 'mp3renamer'
27
+ PROJ.exclude = %w(tmp$ bak$ ~$ CVS \.svn ^pkg ^doc Manifest.txt)
28
+
29
+ depend_on 'cooloptions' , '1.1.1'
30
+ depend_on 'ruby-mp3info', '0.6.12'
27
31
 
28
32
  PROJ.spec.opts << '--color'
29
33
 
34
+ desc "Sets the 'svn:ignore' property on all subdirs in the current dir tree that contain an '.svnignore' file."
35
+ task 'svn:ignore' do
36
+ Dir['**/.svnignore'].each do |entry|
37
+ here = Dir::pwd
38
+ Dir::chdir(File.dirname(entry))
39
+ sh %{svn propset svn:ignore -F .svnignore .} do |ok, res|
40
+ if ! ok
41
+ puts "Svn ignore property could not be set on #{Dir::pwd}: error code = #{res.exitstatus}"
42
+ end
43
+ end
44
+ Dir::chdir here
45
+ end
46
+ end
47
+
48
+ desc "Sets the 'svn:keywords' property to 'Id' on all source and text files in the current dir tree."
49
+ task 'svn:keywords' do
50
+ Dir['**/*'].each do |entry|
51
+ next if entry =~ /\/\.svn\//
52
+ next if File.directory?(entry)
53
+ next if File.basename(entry) !~ /((Rakefile)|(.rb)|(.txt)|(.bat)|(.rake)|(.rdoc))$/i
54
+ next if not File.exist?(File.join(File.dirname(entry), '.svn', 'text-base', File.basename(entry) + '.svn-base'))
55
+ sh %{svn propset svn:keywords Id #{entry}} do |ok, res|
56
+ if ! ok
57
+ puts "Svn keywords property could not be set on #{entry}: error code = #{res.exitstatus}"
58
+ end
59
+ end
60
+ end
61
+ end
62
+
30
63
  # EOF
@@ -1,5 +1,9 @@
1
1
  #!C:\ruby\bin\ruby.exe
2
2
 
3
+ #======================================================================
4
+ # $Id: mp3renamer.rb 4 2009-03-06 04:54:38Z gofford $
5
+ #======================================================================
6
+
3
7
  require File.expand_path(
4
8
  File.join(File.dirname(__FILE__), %w[.. lib mp3renamer]))
5
9
  require 'rubygems'
@@ -133,6 +137,7 @@ options = CoolOptions.parse!('[options] SOURCE-DIRECTORY') do |cooloptions|
133
137
  cooloptions.on 'update-id3v(1)-tags', 'Update ID3v1 tags for artist, album, track number, track title, genre, and year.', true
134
138
  cooloptions.desc ' '
135
139
  cooloptions.on 'update-id3v(2)-tags', 'Update ID3v2 tags for artist, album, track number, track title, genre, and year.', true
140
+ cooloptions.desc ' '
136
141
 
137
142
  cooloptions.after do |result|
138
143
  if result.year !~ /^(\d\d\d\d)$/
@@ -171,4 +176,4 @@ ARGV.each do |src_dir|
171
176
  renamer.write_album(target_dir)
172
177
  renamer.update_id3_tags(target_dir)
173
178
  end
174
- puts ''
179
+ puts ''
@@ -1,3 +1,7 @@
1
+ #======================================================================
2
+ # $Id: album.rb 3 2009-03-06 04:51:49Z gofford $
3
+ #======================================================================
4
+
1
5
  require 'mp3/disc'
2
6
  require 'utils/parser'
3
7
 
@@ -111,4 +115,4 @@ class Mp3
111
115
 
112
116
  end # Album
113
117
 
114
- end # Mp3
118
+ end # Mp3
@@ -1,3 +1,7 @@
1
+ #======================================================================
2
+ # $Id: disc.rb 3 2009-03-06 04:51:49Z gofford $
3
+ #======================================================================
4
+
1
5
  require 'mp3/track'
2
6
  require 'utils/parser'
3
7
  require 'utils/formatter'
@@ -93,4 +97,4 @@ class Mp3
93
97
 
94
98
  end # Disc
95
99
 
96
- end # Mp3
100
+ end # Mp3
@@ -1,3 +1,7 @@
1
+ #======================================================================
2
+ # $Id: renamer.rb 3 2009-03-06 04:51:49Z gofford $
3
+ #======================================================================
4
+
1
5
  require 'fileutils'
2
6
  require 'find'
3
7
  require 'ftools'
@@ -110,4 +114,4 @@ class Mp3
110
114
 
111
115
  end # Renamer
112
116
 
113
- end # Mp3
117
+ end # Mp3
@@ -1,3 +1,7 @@
1
+ #======================================================================
2
+ # $Id: track.rb 3 2009-03-06 04:51:49Z gofford $
3
+ #======================================================================
4
+
1
5
  require 'mp3info'
2
6
 
3
7
  require 'utils/parser'
@@ -98,4 +102,4 @@ class Mp3
98
102
 
99
103
  end # Track
100
104
 
101
- end # Mp3
105
+ end # Mp3
@@ -1,8 +1,11 @@
1
+ #======================================================================
2
+ # $Id: mp3renamer.rb 9 2009-03-11 05:14:24Z gofford $
3
+ #======================================================================
1
4
 
2
5
  module Mp3renamer
3
6
 
4
7
  # :stopdoc:
5
- VERSION = '0.0.1'
8
+ VERSION = '0.0.3'
6
9
  LIBPATH = ::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
7
10
  PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
8
11
  # :startdoc:
@@ -1,3 +1,7 @@
1
+ #======================================================================
2
+ # $Id: formatter.rb 3 2009-03-06 04:51:49Z gofford $
3
+ #======================================================================
4
+
1
5
  module Utils
2
6
 
3
7
  module Formatter
@@ -1,3 +1,7 @@
1
+ #======================================================================
2
+ # $Id: parser.rb 3 2009-03-06 04:51:49Z gofford $
3
+ #======================================================================
4
+
1
5
  module Utils
2
6
 
3
7
  module Parser
@@ -0,0 +1,43 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{mp3renamer}
5
+ s.version = "0.0.3"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Garry A Offord"]
9
+ s.date = %q{2009-03-12}
10
+ s.default_executable = %q{mp3renamer.rb}
11
+ s.description = %q{This program takes an MP3 audiobook and renames the subdirs and files using a consistent naming convention. It also updates the ID3v1 and ID3v2 tags for artist, album, track number, track title, genre, and year.}
12
+ s.email = %q{garry.offord@hushmail.com}
13
+ s.executables = ["mp3renamer.rb"]
14
+ s.extra_rdoc_files = ["History.txt", "README.txt"]
15
+ s.files = ["History.txt", "README.txt", "Rakefile", "bin/mp3renamer.rb", "lib/mp3/album.rb", "lib/mp3/disc.rb", "lib/mp3/renamer.rb", "lib/mp3/track.rb", "lib/mp3renamer.rb", "lib/utils/formatter.rb", "lib/utils/parser.rb", "mp3renamer.gemspec", "spec/mp3renamer_spec.rb", "spec/spec_helper.rb", "test/test_mp3renamer.rb"]
16
+ s.has_rdoc = true
17
+ s.homepage = %q{http://rubyforge.org/projects/mp3renamer/}
18
+ s.rdoc_options = ["--main", "README.txt"]
19
+ s.require_paths = ["lib"]
20
+ s.rubyforge_project = %q{mp3renamer}
21
+ s.rubygems_version = %q{1.3.1}
22
+ s.summary = %q{This program takes an MP3 audiobook and renames the subdirs and files using a consistent naming convention}
23
+ s.test_files = ["test/test_mp3renamer.rb"]
24
+
25
+ if s.respond_to? :specification_version then
26
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
27
+ s.specification_version = 2
28
+
29
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
30
+ s.add_runtime_dependency(%q<cooloptions>, [">= 1.1.1"])
31
+ s.add_runtime_dependency(%q<ruby-mp3info>, [">= 0.6.12"])
32
+ s.add_development_dependency(%q<bones>, [">= 2.4.2"])
33
+ else
34
+ s.add_dependency(%q<cooloptions>, [">= 1.1.1"])
35
+ s.add_dependency(%q<ruby-mp3info>, [">= 0.6.12"])
36
+ s.add_dependency(%q<bones>, [">= 2.4.2"])
37
+ end
38
+ else
39
+ s.add_dependency(%q<cooloptions>, [">= 1.1.1"])
40
+ s.add_dependency(%q<ruby-mp3info>, [">= 0.6.12"])
41
+ s.add_dependency(%q<bones>, [">= 2.4.2"])
42
+ end
43
+ end
@@ -1,3 +1,6 @@
1
+ #======================================================================
2
+ # $Id: mp3renamer_spec.rb 3 2009-03-06 04:51:49Z gofford $
3
+ #======================================================================
1
4
 
2
5
  require File.join(File.dirname(__FILE__), %w[spec_helper])
3
6
 
@@ -1,3 +1,6 @@
1
+ #======================================================================
2
+ # $Id: spec_helper.rb 3 2009-03-06 04:51:49Z gofford $
3
+ #======================================================================
1
4
 
2
5
  require File.expand_path(
3
6
  File.join(File.dirname(__FILE__), %w[.. lib mp3renamer]))
@@ -19,10 +19,11 @@ namespace :doc do
19
19
  end
20
20
  rd.rdoc_files.push(*files)
21
21
 
22
- title = "#{PROJ.name}-#{PROJ.version} Documentation"
23
-
22
+ name = PROJ.name
24
23
  rf_name = PROJ.rubyforge.name
25
- title = "#{rf_name}'s " + title if rf_name.valid? and rf_name != title
24
+
25
+ title = "#{name}-#{PROJ.version} Documentation"
26
+ title = "#{rf_name}'s " + title if rf_name.valid? and rf_name != name
26
27
 
27
28
  rd.options << "-t #{title}"
28
29
  rd.options.concat(rdoc.opts)
@@ -6,7 +6,7 @@ require 'fileutils'
6
6
  require 'ostruct'
7
7
  require 'find'
8
8
 
9
- class OpenStruct; undef :gem; end
9
+ class OpenStruct; undef :gem if defined? :gem; end
10
10
 
11
11
  # TODO: make my own openstruct type object that includes descriptions
12
12
  # TODO: use the descriptions to output help on the available bones options
@@ -124,9 +124,7 @@ import(*rakefiles)
124
124
  %w(lib ext).each {|dir| PROJ.libs << dir if test ?d, dir}
125
125
 
126
126
  # Setup some constants
127
- WIN32 = %r/djgpp|(cyg|ms|bcc)win|mingw/ =~ RUBY_PLATFORM unless defined? WIN32
128
-
129
- DEV_NULL = WIN32 ? 'NUL:' : '/dev/null'
127
+ DEV_NULL = File.exist?('/dev/null') ? '/dev/null' : 'NUL:'
130
128
 
131
129
  def quiet( &block )
132
130
  io = [STDOUT.dup, STDERR.dup]
@@ -139,21 +137,15 @@ ensure
139
137
  $stdout, $stderr = STDOUT, STDERR
140
138
  end
141
139
 
142
- DIFF = if WIN32 then 'diff.exe'
143
- else
144
- if quiet {system "gdiff", __FILE__, __FILE__} then 'gdiff'
145
- else 'diff' end
146
- end unless defined? DIFF
147
-
148
- SUDO = if WIN32 then ''
149
- else
150
- if quiet {system 'which sudo'} then 'sudo'
151
- else '' end
152
- end
153
-
154
- RCOV = WIN32 ? 'rcov.bat' : 'rcov'
155
- RDOC = WIN32 ? 'rdoc.bat' : 'rdoc'
156
- GEM = WIN32 ? 'gem.bat' : 'gem'
140
+ DIFF = if system("gdiff '#{__FILE__}' '#{__FILE__}' > #{DEV_NULL} 2>&1") then 'gdiff'
141
+ else 'diff' end unless defined? DIFF
142
+
143
+ SUDO = if system("which sudo > #{DEV_NULL} 2>&1") then 'sudo'
144
+ else '' end unless defined? SUDO
145
+
146
+ RCOV = "#{RUBY} -S rcov"
147
+ RDOC = "#{RUBY} -S rdoc"
148
+ GEM = "#{RUBY} -S gem"
157
149
 
158
150
  %w(rcov spec/rake/spectask rubyforge bones facets/ansicode).each do |lib|
159
151
  begin
@@ -0,0 +1,4 @@
1
+ #======================================================================
2
+ # $Id: test_mp3renamer.rb 3 2009-03-06 04:51:49Z gofford $
3
+ #======================================================================
4
+
metadata CHANGED
@@ -1,17 +1,37 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mp3renamer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
- - FIXME (who is writing this software)
7
+ - Garry A Offord
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-03-05 00:00:00 -06:00
12
+ date: 2009-03-12 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: cooloptions
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.1.1
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: ruby-mp3info
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.6.12
34
+ version:
15
35
  - !ruby/object:Gem::Dependency
16
36
  name: bones
17
37
  type: :development
@@ -20,22 +40,19 @@ dependencies:
20
40
  requirements:
21
41
  - - ">="
22
42
  - !ruby/object:Gem::Version
23
- version: 2.4.0
43
+ version: 2.4.2
24
44
  version:
25
- description: FIXME (describe your package)
26
- email: FIXME (your e-mail)
45
+ description: This program takes an MP3 audiobook and renames the subdirs and files using a consistent naming convention. It also updates the ID3v1 and ID3v2 tags for artist, album, track number, track title, genre, and year.
46
+ email: garry.offord@hushmail.com
27
47
  executables:
28
48
  - mp3renamer.rb
29
49
  extensions: []
30
50
 
31
51
  extra_rdoc_files:
32
52
  - History.txt
33
- - Manifest.txt
34
53
  - README.txt
35
54
  files:
36
- - .svnignore
37
55
  - History.txt
38
- - Manifest.txt
39
56
  - README.txt
40
57
  - Rakefile
41
58
  - bin/mp3renamer.rb
@@ -46,6 +63,7 @@ files:
46
63
  - lib/mp3renamer.rb
47
64
  - lib/utils/formatter.rb
48
65
  - lib/utils/parser.rb
66
+ - mp3renamer.gemspec
49
67
  - spec/mp3renamer_spec.rb
50
68
  - spec/spec_helper.rb
51
69
  - tasks/ann.rake
@@ -62,7 +80,7 @@ files:
62
80
  - tasks/test.rake
63
81
  - test/test_mp3renamer.rb
64
82
  has_rdoc: true
65
- homepage: FIXME (project homepage)
83
+ homepage: http://rubyforge.org/projects/mp3renamer/
66
84
  post_install_message:
67
85
  rdoc_options:
68
86
  - --main
@@ -87,6 +105,6 @@ rubyforge_project: mp3renamer
87
105
  rubygems_version: 1.3.1
88
106
  signing_key:
89
107
  specification_version: 2
90
- summary: FIXME (describe your package)
108
+ summary: This program takes an MP3 audiobook and renames the subdirs and files using a consistent naming convention
91
109
  test_files:
92
110
  - test/test_mp3renamer.rb
data/.svnignore DELETED
@@ -1,4 +0,0 @@
1
- #======================================================================
2
- # $Id: .svnignore 2 2009-03-05 22:19:20Z gofford $
3
- #======================================================================
4
- pkg
File without changes