r2mp3 0.0.1

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/README ADDED
@@ -0,0 +1,12 @@
1
+ R2mp3 library:
2
+ - Convert wma to mp3
3
+ - Convert aac to mp3
4
+ - Convert ra to mp3
5
+
6
+ Requirement:
7
+ lame_adapter (sudo gem install lame_adapter)
8
+ mplayer (sudo apt-get install mplayer)
9
+
10
+
11
+
12
+
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'r2mp3'
4
+ options = Options.new(ARGV)
5
+ Converter.new(:convert=>:wma,:file=>options[:file]){|f| f.to_mp3 } unless options[:wma].nil? or options[:file].nil?
6
+ Converter.new(:convert=>:wma,:dir=>options[:dir]){|d| d.to_mp3 } unless options[:wma].nil? or options[:dir].nil?
7
+ Converter.new(:convert=>:aac,:file=>options[:file]){|f| f.to_mp3 } unless options[:aac].nil? or options[:file].nil?
8
+ Converter.new(:convert=>:aac,:dir=>options[:dir]){|d| d.to_mp3 } unless options[:aac].nil? or options[:dir].nil?
9
+ Converter.new(:convert=>:ra,:file=>options[:file]){|f| f.to_mp3 } unless options[:ra].nil? or options[:file].nil?
10
+ Converter.new(:convert=>:ra,:dir=>options[:dir]){|d| d.to_mp3 } unless options[:ra].nil? or options[:dir].nil?
11
+
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'r2mp3.rb'
4
+
5
+ wma_file = "wma_example.wma"
6
+ wma_dir = "wma_dir"
7
+ aac_file = "aac_example.m4a"
8
+ aac_dir = "aac_dir"
9
+ rm_file = "rm_example.rm"
10
+ rm_dir = "rm_dir"
11
+
12
+ Converter.new(:convert=>:wma,:file=>wma_file){|f| f.to_mp3 } unless options[:wma].nil? or options[:file].nil?
13
+ Converter.new(:convert=>:wma,:dir=>wma_dir){|d| d.to_mp3 } unless options[:wma].nil? or options[:dir].nil?
14
+ Converter.new(:convert=>:aac,:file=>aac_file){|f| f.to_mp3 } unless options[:aac].nil? or options[:file].nil?
15
+ Converter.new(:convert=>:aac,:dir=>aac_dir){|d| d.to_mp3 } unless options[:aac].nil? or options[:dir].nil?
16
+ Converter.new(:convert=>:ra,:file=>ra_file){|f| f.to_mp3 } unless options[:ra].nil? or options[:file].nil?
17
+ Converter.new(:convert=>:ra,:dir=>ra_dir){|d| d.to_mp3 } unless options[:ra].nil? or options[:dir].nil?
18
+
@@ -0,0 +1,209 @@
1
+ require 'rubygems'
2
+ require 'optparse'
3
+ require 'optparse/time'
4
+ require 'ostruct'
5
+ require 'fileutils'
6
+ require 'ftools'
7
+ require 'lame_adapter'
8
+
9
+ class Options < Hash
10
+ def initialize(arg)
11
+ begin
12
+ optstruct = OpenStruct.new
13
+ options = OptionParser.new do |opts|
14
+ opts.banner = "usage: #{__FILE__} [options]"
15
+ opts.on('-w','--wma-to-mp3','convert .wma to mp3 ')do
16
+ self[:wma] = true
17
+ end
18
+ opts.on('-a','--aac-to-mp3','convert .m4a to mp3')do
19
+ self[:aac] = true
20
+ end
21
+ opts.on('-r','--ra-to-mp3','convert .rm to mp3')do
22
+ self[:ra] = true
23
+ end
24
+ opts.on('-f','--file [filename]','file') do |f|
25
+ self[:file] = f
26
+ end
27
+ opts.on('-d','--dir [directoryname]','directory') do |d|
28
+ self[:dir] = d
29
+ end
30
+ opts.on_tail('-h','--help','help') do
31
+ puts opts
32
+ exit
33
+ end
34
+ raise "print help" if ARGV.size < 1
35
+ raise "choose wma or aac " if self[:wma] and self[:aac]
36
+ end.parse!(arg)
37
+ rescue OptionParser::InvalidOption, RuntimeError => e
38
+ puts e
39
+ puts "#{$0} -h or --help , for help"
40
+ end
41
+ end
42
+ end
43
+
44
+ class Converter
45
+ def initialize(opts={},&block)
46
+ $opts = opts
47
+ yield(opts) if block_given?
48
+ end
49
+ end
50
+
51
+ class Mplayer
52
+ # Can be used to dump any audio file to wav
53
+ def self.dump_to_wav(input, output, opts={})
54
+ begin
55
+ platform = `uname -a`
56
+ binary = "#{%r{Linux} =~ platform}".empty?? "/Applications/mplayer":"mplayer"
57
+ FileUtils.rm("audiodump.wav") if File.exists? "audiodump.wav"
58
+ opts[:resample] ||= '44100'
59
+ args = ""
60
+ force_opt = {:vo => "null", :vc => "dummy", :af => "resample=#{opts[:resample]}", :ao => "pcm:waveheader"}
61
+ force_opt.each{|k,v| args << "-#{k.to_s} #{v} "}
62
+ cmd = "#{binary} #{args} #{input}"
63
+ success = system(cmd)
64
+ puts "Success? #{success}"
65
+ FileUtils.mv("audiodump.wav", output) if File.exists? "audiodump.wav"
66
+ success
67
+ rescue Errno::ENOENT => err
68
+ puts "No audiodump :" + err
69
+ end
70
+ end
71
+
72
+ end
73
+
74
+ class Convert
75
+ def self.ra_to_wav(input, output=nil, opts={})
76
+ conversion(:rm, :wav, input, output, opts) do | input, output, opts |
77
+ Mplayer.dump_to_wav(input, output, opts)
78
+ end
79
+ end
80
+
81
+ def self.ra_to_mp3(input, output=nil, opts={})
82
+ output ||= input.gsub(/\.rm$/,".mp3")
83
+ ra_to_wav(input, 'temp.wav', opts) and wav_to_mp3('temp.wav', output, opts.merge({:delete_input=>true}))
84
+ end
85
+
86
+ def self.aac_to_wav(input, output=nil, opts={})
87
+ conversion(:m4a, :wav, input, output, opts) do | input, output, opts |
88
+ Mplayer.dump_to_wav(input, output, opts)
89
+ end
90
+ end
91
+
92
+ def self.aac_to_mp3(input, output=nil, opts={})
93
+ output ||= input.gsub(/\.m4a$/,".mp3")
94
+ aac_to_wav(input, 'temp.wav', opts) and wav_to_mp3('temp.wav', output, opts.merge({:delete_input=>true}))
95
+ end
96
+
97
+ def self.wma_to_mp3(input, output=nil, opts={})
98
+ output ||= input.gsub(/\.wma$/,".mp3")
99
+ wma_to_wav(input, 'temp.wav', opts) and wav_to_mp3('temp.wav', output, opts.merge({:delete_input=>true}))
100
+ end
101
+
102
+ def self.wma_to_wav(input, output=nil, opts={})
103
+ conversion(:wma, :wav, input, output, opts) do | input, output, opts |
104
+ Mplayer.dump_to_wav(input, output, opts)
105
+ end
106
+ end
107
+
108
+ def self.wav_to_mp3(input, output=nil, opts={})
109
+ conversion(:wav, :mp3, input, output, opts) do | input, output, opts |
110
+ opts[:mode] ||= :stereo
111
+ lame = LameAdapter.new
112
+ lame.input_file input
113
+ lame.output_file output
114
+ lame.mode opts[:mode]
115
+ lame.convert!
116
+ end
117
+ end
118
+
119
+ def self.conversion(input_format, output_format, input_file, output_file, opts={}, &block)
120
+ puts "...conversion"
121
+ input_format = input_format.to_s
122
+ output_format = output_format.to_s
123
+ input_regexp = /\.#{input_format}$/
124
+ return false unless File.exists? input_file and File.extname(input_file) =~ input_regexp
125
+ output_file ||= input_file.gsub(input_regexp,".#{output_format}")
126
+ success = yield(input_file, output_file, opts)
127
+ FileUtils.rm input_file if opts[:delete_input]
128
+ success and File.exists? output_file
129
+ end
130
+
131
+ def self.wma_dir_to_mp3(dirname)
132
+ Dir["#{dirname}/*.wma"].each do |name|
133
+ if !name[/[\s]+/].nil? then
134
+ new_name = name.gsub(" ","_").downcase
135
+ FileUtils.mv "#{name}", "#{new_name}", :force => true # no error
136
+ name = new_name
137
+ end
138
+ wma_to_mp3(name)
139
+ end
140
+ end
141
+
142
+ def self.wma_file_to_mp3(filename)
143
+ wma_to_mp3(filename)
144
+ end
145
+
146
+ def self.aac_dir_to_mp3(dirname)
147
+ Dir["#{dirname}/*.m4a"].each do |name|
148
+ if !name[/[\s]+/].nil? then
149
+ new_name = name.gsub(" ","_").downcase
150
+ FileUtils.mv "#{name}", "#{new_name}", :force => true # no error
151
+ name = new_name
152
+ end
153
+ aac_to_mp3(name)
154
+ end
155
+ end
156
+
157
+ def self.aac_file_to_mp3(filename)
158
+ aac_to_mp3(filename)
159
+ end
160
+
161
+ def self.ra_dir_to_mp3(dirname)
162
+ Dir["#{dirname}/*.rm"].each do |name|
163
+ if !name[/[\s]+/].nil? then
164
+ new_name = name.gsub(" ","_").downcase
165
+ FileUtils.mv "#{name}", "#{new_name}", :force => true # no error
166
+ name = new_name
167
+ end
168
+ ra_to_mp3(name)
169
+ end
170
+ end
171
+
172
+ def self.ra_file_to_mp3(filename)
173
+ ra_to_mp3(filename)
174
+ end
175
+ end
176
+
177
+
178
+ class Hash
179
+ def to_mp3
180
+ case $opts[:convert]
181
+ when :wma
182
+ unless $opts[:dir].nil? then
183
+ puts "convert all wma files in #{self[:dir]}"
184
+ Convert.wma_dir_to_mp3(self[:dir])
185
+ else
186
+ puts "(wma) convert #{self[:file]} to mp3"
187
+ Convert.wma_file_to_mp3(self[:file])
188
+ end
189
+ when :aac
190
+ unless $opts[:dir].nil? then
191
+ puts "convert all aac files in #{self[:dir]}"
192
+ Convert.aac_dir_to_mp3(self[:dir])
193
+ else
194
+ puts "(aac) convert #{self[:file]} to mp3"
195
+ Convert.aac_file_to_mp3(self[:file])
196
+ end
197
+ when :ra
198
+ unless $opts[:dir].nil? then
199
+ puts "convert all ra files in #{self[:dir]}"
200
+ Convert.ra_dir_to_mp3(self[:dir])
201
+ else
202
+ puts "(ra) convert #{self[:file]} to mp3"
203
+ Convert.ra_file_to_mp3(self[:file])
204
+ end
205
+ end
206
+ end
207
+ end
208
+
209
+
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.0
3
+ specification_version: 1
4
+ name: r2mp3
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.0.1
7
+ date: 2007-10-16 00:00:00 +07:00
8
+ summary: A library for converting any audio to MP3 (MPEG-1 Layer3)
9
+ require_paths:
10
+ - lib
11
+ email: zdk@codegent.com
12
+ homepage: ""
13
+ rubyforge_project:
14
+ description: This library intends to convert all available audio files on the planet to MP3
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: false
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Warachet Samtalee
31
+ files:
32
+ - README
33
+ - lib/r2mp3.rb
34
+ - example/rm_dir
35
+ - example/wma_dir
36
+ - example/aac_dir
37
+ - example/example1.rb
38
+ - example/cli_converter.rb
39
+ test_files: []
40
+
41
+ rdoc_options: []
42
+
43
+ extra_rdoc_files: []
44
+
45
+ executables: []
46
+
47
+ extensions: []
48
+
49
+ requirements: []
50
+
51
+ dependencies:
52
+ - !ruby/object:Gem::Dependency
53
+ name: lame_adapter
54
+ version_requirement:
55
+ version_requirements: !ruby/object:Gem::Version::Requirement
56
+ requirements:
57
+ - - ">"
58
+ - !ruby/object:Gem::Version
59
+ version: 0.0.0
60
+ version: