Merging mp3 files in Ruby

View: New views
5 Messages — Rating Filter:   Alert me  

Merging mp3 files in Ruby

by Qu3ry Qu3ry :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Suppose I have the following files to group and merge, according to
their filenames. How to do it on Ruby?


P.S In BASH, you can merge two mp3 files perfectly with the cat command.
# cat file1.mp3 file2.mp3 > file.mp3

01-01 Faithful Subjects.mp3
01-02 Faithful Subjects.mp3
01-03 Faithful Subjects.mp3
01-04 Faithful Subjects.mp3
01-05 Faithful Subjects.mp3
01-06 Faithful Subjects.mp3
01-07 Colonial Constitutions and Their Inspiration.mp3
01-08 Colonial Constitutions and Their Inspiration.mp3
01-09 Colonial Constitutions and Their Inspiration.mp3
01-10 Colonial Constitutions and Their Inspiration.mp3
01-11 Colonial Constitutions and Their Inspiration.mp3
01-12 Colonial Constitutions and Their Inspiration.mp3
02-01 blah blah blah.mp3
02-02 blah blah blah.mp3
etc...
--
Posted via http://www.ruby-forum.com/.


Re: Merging mp3 files in Ruby

by Aldric Giacomoni-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Qu3ry Qu3ry wrote:

> Suppose I have the following files to group and merge, according to
> their filenames. How to do it on Ruby?
>
>
> P.S In BASH, you can merge two mp3 files perfectly with the cat command.
> # cat file1.mp3 file2.mp3 > file.mp3
>
> 01-01 Faithful Subjects.mp3
> 01-02 Faithful Subjects.mp3
> 01-03 Faithful Subjects.mp3
> 01-04 Faithful Subjects.mp3
> 01-05 Faithful Subjects.mp3
> 01-06 Faithful Subjects.mp3
> 01-07 Colonial Constitutions and Their Inspiration.mp3
> 01-08 Colonial Constitutions and Their Inspiration.mp3
> 01-09 Colonial Constitutions and Their Inspiration.mp3
> 01-10 Colonial Constitutions and Their Inspiration.mp3
> 01-11 Colonial Constitutions and Their Inspiration.mp3
> 01-12 Colonial Constitutions and Their Inspiration.mp3
> 02-01 blah blah blah.mp3
> 02-02 blah blah blah.mp3
> etc...

Open first file for write and binary, then put the cursor at the end of
the file..
Then open the second file, for read and binary, and then add it to the
end, and so on?
--
Posted via http://www.ruby-forum.com/.


Re: Merging mp3 files in Ruby

by Bertram Scharpf :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

Am Mittwoch, 04. Nov 2009, 17:57:24 +0900 schrieb Qu3ry Qu3ry:
> Suppose I have the following files to group and merge, according to
> their filenames. How to do it on Ruby?
>
> P.S In BASH, you can merge two mp3 files perfectly with the cat command.
> # cat file1.mp3 file2.mp3 > file.mp3
>

  ruby -pe '' file1.mp3 file2.mp3 >file.mp3

Bertram

--
Bertram Scharpf
Stuttgart, Deutschland/Germany
http://www.bertram-scharpf.de


Re: Merging mp3 files in Ruby

by Qu3ry Qu3ry :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Bertram Scharpf wrote:

> Hi,
>
> Am Mittwoch, 04. Nov 2009, 17:57:24 +0900 schrieb Qu3ry Qu3ry:
>> Suppose I have the following files to group and merge, according to
>> their filenames. How to do it on Ruby?
>>
>> P.S In BASH, you can merge two mp3 files perfectly with the cat command.
>> # cat file1.mp3 file2.mp3 > file.mp3
>>
>
>   ruby -pe '' file1.mp3 file2.mp3 >file.mp3
>
> Bertram

How to iterate the mp3 files according to their names, so that files
with the same names are merged together?


--
Posted via http://www.ruby-forum.com/.


Re: Merging mp3 files in Ruby

by Sven Schott :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

How about a hash or something like that?

dir = ARGV[0]
store = Hash.new

Dir.foreach(dir) do |file|
  unless file =~ /^\./
    num, name, ext = file.scan(/([0-9]+\-[0-9]+)\ ([A-Za-z0-9\
]+)(\.mp3)/).flatten
    if store[name]
      store[name][:numbers] << num
    else
      store[name] = { :extension => ext, :numbers => [num] }
    end
  end
end

store.each do |name, properties|
  filename = name + properties[:extension]
  complete_file = File.open(filename, "w")
  store[name][:numbers].each do |num|
    part_filename = num + " " + name + properties[:extension]
    File.open(dir+"/"+part_filename, "r") do |f|
      complete_file.write(f.read)
    end
  end
  complete_file.close
end

On Thu, Nov 5, 2009 at 1:20 AM, Qu3ry Qu3ry <thinkinstein@...> wrote:

> Bertram Scharpf wrote:
> > Hi,
> >
> > Am Mittwoch, 04. Nov 2009, 17:57:24 +0900 schrieb Qu3ry Qu3ry:
> >> Suppose I have the following files to group and merge, according to
> >> their filenames. How to do it on Ruby?
> >>
> >> P.S In BASH, you can merge two mp3 files perfectly with the cat command.
> >> # cat file1.mp3 file2.mp3 > file.mp3
> >>
> >
> >   ruby -pe '' file1.mp3 file2.mp3 >file.mp3
> >
> > Bertram
>
> How to iterate the mp3 files according to their names, so that files
> with the same names are merged together?
>
>
> --
> Posted via http://www.ruby-forum.com/.
>
>