mp3renamer 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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