#!/usr/bin/perl
 
use strict;
use File::Copy;
 
my $ringtone_folder 	= "/home/users/mikey/ringtones";
my $mplayer 		= "/usr/bin/mplayer";
my $mplayer_opt 	= '-ao pcm '.$ringtone_folder.'/out.mp3 -ao pcm:file="'.$ringtone_folder.'/out.wav"';
my $faac 		= "/usr/bin/faac";
my $faac_opt 		= qq#$ringtone_folder/out.wav -o#;
my $mp3info 		= "/usr/bin/mp3info";
my $mp3info_opt 	= '-p "File:%f\nTitle:%t\nArtist:%a\nAlbum:%l\nTrack:%n\n"';
my $mp3splt 		= "/usr/bin/mp3splt";
my $mp3splt_opt 	= 'START END -o out.mp3 -d '.$ringtone_folder;
 
my $output;
my $command;
 
my $filename;
my $title;
my $artist;
my $album;
my $track;
 
my $file 	= shift;
my $input_start = shift;
my $input_end 	= shift;
 
my $start 	= "0.0";
my $end 	= "0.40";
 
if(!length($file) > 0){
    print "USAGE: mp3tom4a.pl <filename> [START_TIME] [END_TIME]\n";
    exit;
}
 
if(defined($input_start) && defined($input_end)){
    if($start !~ /([0-9]+)\.([0-9]+)\.?([0-9]+)?/){
	print "USAGE: mp3tom4a.pl <filename> [START_TIME] [END_TIME]\n";
	print "Start Time: 00.00[.00]\n";
	print "End Time: 00.00[.00]\n";
	exit;
    }
    else{
	$start = $input_start;
    }
 
    if($end !~ /([0-9]+)\.([0-9]+)\.?([0-9]+)?/){
	print "USAGE: mp3tom4a.pl <filename> [START_TIME] [END_TIME]\n";
	print "End Time: 00.00[.00]\n";
	print "Start Time: 00.00[.00]\n";
	exit;
    }
    else{
	$end = $input_end;
    }
}
 
$command 	= $mp3info.' '.$mp3info_opt.' "'.$file.'"';
$output 	= `$command`;
my @lines   	= split("\n",$output);
 
 
foreach (@lines){
    if($_ =~ /Title:(.+)/){
	$title = $1;
    }
    if($_ =~ /Artist:(.+)/){
	$artist = $1;
    }
    if($_ =~ /Album:(.+)/){
	$album = $1;
    }
    if($_ =~ /Track:(.+)/){
	$track = $1;
    }
}
 
$filename = lc($artist); 
$filename .= "-".lc($title);
$filename =~ s/ /_/g;
 
 
if(!defined($title) && !defined($artist)){
    print "\n\nUnable to find Artist and Track information!!!\n";
    print "Please enter the filename (artist-this_is_the_song_name): ";
    chomp($filename = <STDIN>);
}
$mp3splt_opt =~ s/START/$start/g;
$mp3splt_opt =~ s/END/$end/g;
$command 	= $mp3splt.' "'.$file.'" '.$mp3splt_opt;
system($command);
 
$command 	= "$mplayer $mplayer_opt";
print $command,"\n";
system($command);
 
$command 	= "$faac $faac_opt $ringtone_folder/1-$filename.m4a";
system($command);
move("$ringtone_folder/1-$filename.m4a","$ringtone_folder/$filename.m4r");
 
unlink("$ringtone_folder/out.wav");
unlink("$ringtone_folder/out.mp3");