flac2mp3 0.3.1 → 0.3.2
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/History.txt +7 -0
- data/Manifest.txt +2 -0
- data/README.txt +52 -4
- data/bin/flac2mp3 +19 -9
- data/bin/metaflac2mp3 +45 -0
- data/lib/flac2mp3/version.rb +1 -1
- data/lib/flac2mp3.rb +4 -0
- data/spec/flac2mp3_command_spec.rb +35 -1
- data/spec/flac2mp3_spec.rb +31 -0
- data/spec/metaflac2mp3_command_spec.rb +41 -0
- metadata +6 -3
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
|
@@ -4,6 +4,7 @@ Manifest.txt
|
|
|
4
4
|
README.txt
|
|
5
5
|
Rakefile
|
|
6
6
|
bin/flac2mp3
|
|
7
|
+
bin/metaflac2mp3
|
|
7
8
|
config/hoe.rb
|
|
8
9
|
config/requirements.rb
|
|
9
10
|
lib/flac2mp3.rb
|
|
@@ -14,6 +15,7 @@ script/generate
|
|
|
14
15
|
setup.rb
|
|
15
16
|
spec/flac2mp3_command_spec.rb
|
|
16
17
|
spec/flac2mp3_spec.rb
|
|
18
|
+
spec/metaflac2mp3_command_spec.rb
|
|
17
19
|
spec/spec.opts
|
|
18
20
|
spec/spec_helper.rb
|
|
19
21
|
tasks/deployment.rake
|
data/README.txt
CHANGED
|
@@ -1,12 +1,60 @@
|
|
|
1
|
-
flac2mp3
|
|
1
|
+
= flac2mp3
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
It moves tags using the flacinfo-rb and ruby-mp3info gems.
|
|
3
|
+
== DESCRIPTION:
|
|
5
4
|
|
|
6
|
-
flac2mp3
|
|
5
|
+
flac2mp3 is meant to, as the name implies, convert FLAC files to MP3 files
|
|
6
|
+
|
|
7
|
+
== FEATURES/PROBLEMS:
|
|
8
|
+
|
|
9
|
+
* Will convert a file from FLAC to MP3 format, natch.
|
|
10
|
+
* Not *only* is the song data converted, but so is the metadata!
|
|
11
|
+
* Options:
|
|
12
|
+
* silent running
|
|
13
|
+
* delete the FLAC after conversion
|
|
14
|
+
* MP3 encoding (defaults to --preset standard)
|
|
15
|
+
* Reads options from YAML config file, ~/.flac2mp3
|
|
16
|
+
|
|
17
|
+
Currently operates on one file at a time. To convert more, try something like
|
|
7
18
|
|
|
8
19
|
for f in *.flac; do flac2mp3 "$f"; done
|
|
9
20
|
|
|
10
21
|
or
|
|
11
22
|
|
|
12
23
|
find . -name '*.flac' -exec flac2mp3 {} \;
|
|
24
|
+
|
|
25
|
+
If neither of those commands will work for you, try using a different OS.
|
|
26
|
+
|
|
27
|
+
== SYNOPSIS:
|
|
28
|
+
|
|
29
|
+
$ flac2mp3 flac_filename
|
|
30
|
+
$ flac2mp3 flac_filename --silent
|
|
31
|
+
$ flac2mp3 --meta flac_filename mp3_filename
|
|
32
|
+
(or)
|
|
33
|
+
$ metaflac2mp3 flac_filename mp3_filename
|
|
34
|
+
|
|
35
|
+
or, if you insist
|
|
36
|
+
|
|
37
|
+
require 'flac2mp3'
|
|
38
|
+
|
|
39
|
+
Flac2mp3.convert(flac_filename)
|
|
40
|
+
Flac2mp3.convert(flac_filename, :silent => true)
|
|
41
|
+
Flac2mp3.convert_metadata(flac_filename, mp3_filename)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
== REQUIREMENTS:
|
|
45
|
+
|
|
46
|
+
* flac, the binary
|
|
47
|
+
* lame, the binary
|
|
48
|
+
* flacinfo-rb, the gem
|
|
49
|
+
* ruby-mp3info, the gem
|
|
50
|
+
* ruby, the interpreter
|
|
51
|
+
|
|
52
|
+
== INSTALL:
|
|
53
|
+
|
|
54
|
+
* gem install flac2mp3
|
|
55
|
+
|
|
56
|
+
== THANKS:
|
|
57
|
+
|
|
58
|
+
* Rich Lafferty, for turning me on to the wonderful idea of keeping everything in FLAC format
|
|
59
|
+
* Apple, for having a bunch of little-i, capital-letter products that don't like FLAC format
|
|
60
|
+
* Robin Bowes, for flac2mp3.pl, which annoyed me enough to get me to write this
|
data/bin/flac2mp3
CHANGED
|
@@ -11,12 +11,10 @@ end
|
|
|
11
11
|
|
|
12
12
|
require 'optparse'
|
|
13
13
|
require 'flac2mp3'
|
|
14
|
-
require 'flac2mp3/version'
|
|
15
|
-
|
|
16
|
-
# NOTE: the option -p/--path= is given as an example, and should probably be replaced in your application.
|
|
17
14
|
|
|
18
15
|
OPTIONS = {}
|
|
19
16
|
MANDATORY_OPTIONS = %w[]
|
|
17
|
+
meta = false
|
|
20
18
|
|
|
21
19
|
parser = OptionParser.new do |opts|
|
|
22
20
|
opts.banner = <<BANNER
|
|
@@ -26,13 +24,15 @@ Options are:
|
|
|
26
24
|
BANNER
|
|
27
25
|
opts.separator ''
|
|
28
26
|
opts.on('-v', '--version',
|
|
29
|
-
"Show the #{File.basename($0)} version number and exit") { puts "flac2mp3 #{Flac2mp3::VERSION::STRING}"; exit }
|
|
27
|
+
"Show the #{File.basename($0)} version number and exit") { require 'flac2mp3/version'; puts "flac2mp3 #{Flac2mp3::VERSION::STRING}"; exit }
|
|
30
28
|
opts.on('-d', '--[no-]delete',
|
|
31
29
|
"Delete the original file after conversion") { |delete| OPTIONS[:delete] = delete }
|
|
32
30
|
opts.on('-s', '--silent',
|
|
33
31
|
"Don't show progress") { |silent| OPTIONS[:silent] = silent }
|
|
34
32
|
opts.on('-e', '--encoding=ENCODING', String,
|
|
35
33
|
"Set lame encoding options", "Default: #{Flac2mp3.default_encoding}") { |encoding| OPTIONS[:encoding] = encoding }
|
|
34
|
+
opts.on('-m', '--meta',
|
|
35
|
+
'Convert metadata (requires a second filename)') { meta = true }
|
|
36
36
|
opts.on('-h', '--help',
|
|
37
37
|
'Show this help message.') { puts opts; exit }
|
|
38
38
|
opts.parse!(ARGV)
|
|
@@ -45,9 +45,19 @@ end
|
|
|
45
45
|
# do stuff
|
|
46
46
|
filename = ARGV[0]
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
if meta
|
|
49
|
+
mp3file = ARGV[1]
|
|
50
|
+
unless filename and mp3file
|
|
51
|
+
puts "Usage: #{File.basename($0)} --meta [filename] [mp3file]"
|
|
52
|
+
exit
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
Flac2mp3.convert_metadata(filename, mp3file)
|
|
56
|
+
else
|
|
57
|
+
unless filename
|
|
58
|
+
puts "Usage: #{File.basename($0)} [filename]"
|
|
59
|
+
exit
|
|
60
|
+
end
|
|
52
61
|
|
|
53
|
-
Flac2mp3.convert(filename, OPTIONS)
|
|
62
|
+
Flac2mp3.convert(filename, OPTIONS)
|
|
63
|
+
end
|
data/bin/metaflac2mp3
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
#
|
|
3
|
+
# Created on 2008-11-29.
|
|
4
|
+
# Copyright (c) 2008. All rights reserved.
|
|
5
|
+
|
|
6
|
+
begin
|
|
7
|
+
require 'rubygems'
|
|
8
|
+
rescue LoadError
|
|
9
|
+
# no rubygems to load, so we fail silently
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
require 'optparse'
|
|
13
|
+
require 'flac2mp3'
|
|
14
|
+
|
|
15
|
+
OPTIONS = {}
|
|
16
|
+
MANDATORY_OPTIONS = %w[]
|
|
17
|
+
|
|
18
|
+
parser = OptionParser.new do |opts|
|
|
19
|
+
opts.banner = <<BANNER
|
|
20
|
+
Usage: #{File.basename($0)} [filename] [mp3file]
|
|
21
|
+
|
|
22
|
+
Options are:
|
|
23
|
+
BANNER
|
|
24
|
+
opts.separator ''
|
|
25
|
+
opts.on('-v', '--version',
|
|
26
|
+
"Show the #{File.basename($0)} version number and exit") { require 'flac2mp3/version'; puts "metaflac2mp3 #{Flac2mp3::VERSION::STRING}"; exit }
|
|
27
|
+
opts.on('-h', '--help',
|
|
28
|
+
'Show this help message.') { puts opts; exit }
|
|
29
|
+
opts.parse!(ARGV)
|
|
30
|
+
|
|
31
|
+
if MANDATORY_OPTIONS && MANDATORY_OPTIONS.find { |option| OPTIONS[option.to_sym].nil? }
|
|
32
|
+
puts opts; exit
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# do stuff
|
|
37
|
+
filename = ARGV[0]
|
|
38
|
+
mp3file = ARGV[1]
|
|
39
|
+
|
|
40
|
+
unless filename and mp3file
|
|
41
|
+
puts "Usage: #{File.basename($0)} [filename] [mp3file]"
|
|
42
|
+
exit
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
Flac2mp3.convert_metadata(filename, mp3file)
|
data/lib/flac2mp3/version.rb
CHANGED
data/lib/flac2mp3.rb
CHANGED
|
@@ -10,7 +10,9 @@ describe 'flac2mp3 command' do
|
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
before :each do
|
|
13
|
-
|
|
13
|
+
@convert_state = states('convert').starts_as('setup')
|
|
14
|
+
Flac2mp3.stubs(:convert).when(@convert_state.is('setup'))
|
|
15
|
+
Flac2mp3.stubs(:convert_metadata)
|
|
14
16
|
|
|
15
17
|
[:ARGV, :OPTIONS, :MANDATORY_OPTIONS].each do |const|
|
|
16
18
|
Object.send(:remove_const, const) if Object.const_defined?(const)
|
|
@@ -80,4 +82,36 @@ describe 'flac2mp3 command' do
|
|
|
80
82
|
Flac2mp3.expects(:convert).with(anything, Not(has_key(:encoding)))
|
|
81
83
|
run_command('blah')
|
|
82
84
|
end
|
|
85
|
+
|
|
86
|
+
it 'should take a --meta option to convert metadata' do
|
|
87
|
+
lambda { run_command('--meta', 'blah.flac', 'something.mp3') }.should_not raise_error(OptionParser::InvalidOption)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
describe 'when converting metadata' do
|
|
91
|
+
before :each do
|
|
92
|
+
@infile = 'blah.flac'
|
|
93
|
+
@outfile = 'something.mp3'
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it 'should require two filenames' do
|
|
97
|
+
self.expects(:puts) { |text| text.match(/usage.+filename/i) }
|
|
98
|
+
run_command('--meta', @infile)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it 'should pass the filenames to Flac2mp3 for metadata conversion' do
|
|
102
|
+
Flac2mp3.expects(:convert_metadata).with(@infile, @outfile)
|
|
103
|
+
run_command('--meta', @infile, @outfile)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
it 'should not attempt to convert any files' do
|
|
107
|
+
@convert_state.become('test')
|
|
108
|
+
Flac2mp3.expects(:convert).never.when(@convert_state.is('test'))
|
|
109
|
+
run_command('--meta', @infile, @outfile)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it 'should accept a shorthand -m option' do
|
|
113
|
+
Flac2mp3.expects(:convert_metadata).with(@infile, @outfile)
|
|
114
|
+
run_command('-m', @infile, @outfile)
|
|
115
|
+
end
|
|
116
|
+
end
|
|
83
117
|
end
|
data/spec/flac2mp3_spec.rb
CHANGED
|
@@ -824,6 +824,37 @@ describe Flac2mp3 do
|
|
|
824
824
|
end
|
|
825
825
|
end
|
|
826
826
|
|
|
827
|
+
it 'should convert metadata' do
|
|
828
|
+
Flac2mp3.should respond_to(:convert_metadata)
|
|
829
|
+
end
|
|
830
|
+
|
|
831
|
+
describe 'when converting metadata' do
|
|
832
|
+
before :each do
|
|
833
|
+
@infile = 'test.flac'
|
|
834
|
+
@outfile = 'some.mp3'
|
|
835
|
+
@flac2mp3 = stub('flac2mp3 object', :convert_metadata => nil)
|
|
836
|
+
Flac2mp3.stubs(:new).returns(@flac2mp3)
|
|
837
|
+
end
|
|
838
|
+
|
|
839
|
+
it 'should accept two filenames' do
|
|
840
|
+
lambda { Flac2mp3.convert_metadata(@infile, @outfile) }.should_not raise_error(ArgumentError)
|
|
841
|
+
end
|
|
842
|
+
|
|
843
|
+
it 'should require two filenames' do
|
|
844
|
+
lambda { Flac2mp3.convert_metadata(@infile) }.should raise_error(ArgumentError)
|
|
845
|
+
end
|
|
846
|
+
|
|
847
|
+
it 'should instantiate a new Flac2mp3 object' do
|
|
848
|
+
Flac2mp3.expects(:new).returns(@flac2mp3)
|
|
849
|
+
Flac2mp3.convert_metadata(@infile, @outfile)
|
|
850
|
+
end
|
|
851
|
+
|
|
852
|
+
it 'should use the Flac2mp3 object to convert the metadata between the given files' do
|
|
853
|
+
@flac2mp3.expects(:convert_metadata).with(@infile, @outfile)
|
|
854
|
+
Flac2mp3.convert_metadata(@infile, @outfile)
|
|
855
|
+
end
|
|
856
|
+
end
|
|
857
|
+
|
|
827
858
|
it 'should provide a tag mapping' do
|
|
828
859
|
Flac2mp3.should respond_to(:tag_mapping)
|
|
829
860
|
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
|
2
|
+
|
|
3
|
+
describe 'metaflac2mp3 command' do
|
|
4
|
+
def run_command(*args)
|
|
5
|
+
Object.const_set(:ARGV, args)
|
|
6
|
+
begin
|
|
7
|
+
eval File.read(File.join(File.dirname(__FILE__), *%w[.. bin metaflac2mp3]))
|
|
8
|
+
rescue SystemExit
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
before :each do
|
|
13
|
+
Flac2mp3.stubs(:convert_metadata)
|
|
14
|
+
|
|
15
|
+
[:ARGV, :OPTIONS, :MANDATORY_OPTIONS].each do |const|
|
|
16
|
+
Object.send(:remove_const, const) if Object.const_defined?(const)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
@infile = 'blah.flac'
|
|
20
|
+
@outfile = 'something.mp3'
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'should exist' do
|
|
24
|
+
lambda { run_command(@infile, @outfile) }.should_not raise_error(Errno::ENOENT)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it 'should require two filenames' do
|
|
28
|
+
self.expects(:puts) { |text| text.match(/usage.+filename/i) }
|
|
29
|
+
run_command(@infile)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'should pass the filenames to Flac2mp3 for metadata conversion' do
|
|
33
|
+
Flac2mp3.expects(:convert_metadata).with(@infile, @outfile)
|
|
34
|
+
run_command(@infile, @outfile)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it 'should not attempt to convert any files' do
|
|
38
|
+
Flac2mp3.expects(:convert).never
|
|
39
|
+
run_command(@infile, @outfile)
|
|
40
|
+
end
|
|
41
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: flac2mp3
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yossef Mendelssohn
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2008-
|
|
12
|
+
date: 2008-11-29 00:00:00 -06:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
@@ -66,6 +66,7 @@ description: converter for FLAC to MP3
|
|
|
66
66
|
email: ymendel@pobox.com
|
|
67
67
|
executables:
|
|
68
68
|
- flac2mp3
|
|
69
|
+
- metaflac2mp3
|
|
69
70
|
extensions: []
|
|
70
71
|
|
|
71
72
|
extra_rdoc_files:
|
|
@@ -80,6 +81,7 @@ files:
|
|
|
80
81
|
- README.txt
|
|
81
82
|
- Rakefile
|
|
82
83
|
- bin/flac2mp3
|
|
84
|
+
- bin/metaflac2mp3
|
|
83
85
|
- config/hoe.rb
|
|
84
86
|
- config/requirements.rb
|
|
85
87
|
- lib/flac2mp3.rb
|
|
@@ -90,6 +92,7 @@ files:
|
|
|
90
92
|
- setup.rb
|
|
91
93
|
- spec/flac2mp3_command_spec.rb
|
|
92
94
|
- spec/flac2mp3_spec.rb
|
|
95
|
+
- spec/metaflac2mp3_command_spec.rb
|
|
93
96
|
- spec/spec.opts
|
|
94
97
|
- spec/spec_helper.rb
|
|
95
98
|
- tasks/deployment.rake
|
|
@@ -119,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
119
122
|
requirements: []
|
|
120
123
|
|
|
121
124
|
rubyforge_project: yomendel
|
|
122
|
-
rubygems_version: 1.3.
|
|
125
|
+
rubygems_version: 1.3.1
|
|
123
126
|
signing_key:
|
|
124
127
|
specification_version: 2
|
|
125
128
|
summary: converter for FLAC to MP3
|