Added flac options
This commit is contained in:
parent
d7b25a12a2
commit
6b4e37c667
40
cdripper
40
cdripper
|
@ -13,6 +13,7 @@
|
||||||
# 0.2.4: Fixed bug - files should get tagged again
|
# 0.2.4: Fixed bug - files should get tagged again
|
||||||
# Added support for -T option
|
# Added support for -T option
|
||||||
# Added support for -0 option
|
# Added support for -0 option
|
||||||
|
# Added -q and -f options
|
||||||
# 0.2: Aligned version with ds-audiotools
|
# 0.2: Aligned version with ds-audiotools
|
||||||
# Implemented CDDB support (disabled with --no-cddb)
|
# Implemented CDDB support (disabled with --no-cddb)
|
||||||
# Ability to preview and edit all text before it's used
|
# Ability to preview and edit all text before it's used
|
||||||
|
@ -43,9 +44,12 @@ $HELP_MSG = "# CD Ripper v$VERSION\n\tusage: cdripper [--no-cddb] [-a] " .
|
||||||
"-y:\t\tDon't prompt for user confirmation of CDDB information\n\t\t(assume defaults are okay).\n" .
|
"-y:\t\tDon't prompt for user confirmation of CDDB information\n\t\t(assume defaults are okay).\n" .
|
||||||
"--no-cddb:\tDon't use CDDB. Prompt the user for all information.\n" .
|
"--no-cddb:\tDon't use CDDB. Prompt the user for all information.\n" .
|
||||||
"-T:\t\tWrite uppercase tag names. Passes -T to tagfromfilename\n" .
|
"-T:\t\tWrite uppercase tag names. Passes -T to tagfromfilename\n" .
|
||||||
|
"-q <number>:\tquality to encode the vorbis data. Defaults to 10. Unused in FLAC mode.\n" .
|
||||||
|
"-f:\t\tencode to FLAC instead of vorbis\n" .
|
||||||
"-0:\t\tPreserve leading 0 in track numbers\n";
|
"-0:\t\tPreserve leading 0 in track numbers\n";
|
||||||
|
|
||||||
$CDPARANOIA_FORMAT = 'track*.cdda';
|
$CDPARANOIA_FORMAT = 'track*.cdda';
|
||||||
|
$quality = '7';
|
||||||
$TRACK_ZERO = 'track00';
|
$TRACK_ZERO = 'track00';
|
||||||
chomp($orig_dir = `pwd`);
|
chomp($orig_dir = `pwd`);
|
||||||
chomp($temp_dir = '/tmp/ds-cdripper-' . `whoami`);
|
chomp($temp_dir = '/tmp/ds-cdripper-' . `whoami`);
|
||||||
|
@ -54,6 +58,7 @@ $offset = 0;
|
||||||
$useCDDB = 1;
|
$useCDDB = 1;
|
||||||
$noInput = 0;
|
$noInput = 0;
|
||||||
$askCDDB = 0;
|
$askCDDB = 0;
|
||||||
|
$flac_mode = 0;
|
||||||
|
|
||||||
$tagoptions = '';
|
$tagoptions = '';
|
||||||
|
|
||||||
|
@ -64,13 +69,20 @@ foreach (@ARGV)
|
||||||
$offset = $_;
|
$offset = $_;
|
||||||
$offsetOnNext = 0;
|
$offsetOnNext = 0;
|
||||||
}
|
}
|
||||||
|
elsif ($qualityOnNext)
|
||||||
|
{
|
||||||
|
$quality = $_;
|
||||||
|
$qualityOnNext = 0;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (/^(--help)|(-h)$/) { print $HELP_MSG; exit; }
|
if (/^(--help)|(-h)$/) { print $HELP_MSG; exit; }
|
||||||
elsif (/^-o$/) { $offsetOnNext = 1; }
|
elsif (/^-o$/) { $offsetOnNext = 1; }
|
||||||
elsif (/^--no-cddb$/) { $useCDDB = 0; }
|
elsif (/^--no-cddb$/) { $useCDDB = 0; }
|
||||||
elsif (/^-f$/) { $noInput = 1; }
|
elsif (/^-y$/) { $noInput = 1; }
|
||||||
elsif (/^-a$/) { $askCDDB = 1; }
|
elsif (/^-a$/) { $askCDDB = 1; }
|
||||||
|
elsif (/^-f$/) { $flac_mode = 1; }
|
||||||
|
elsif (/^-q$/) { $qualityOnNext = 1; }
|
||||||
elsif (/^-T$/) { $tagoptions .= ' -T'; }
|
elsif (/^-T$/) { $tagoptions .= ' -T'; }
|
||||||
elsif (/^-0$/) { $tagoptions .= ' -0'; }
|
elsif (/^-0$/) { $tagoptions .= ' -0'; }
|
||||||
else
|
else
|
||||||
|
@ -80,6 +92,11 @@ foreach (@ARGV)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Extension, for use in later commands
|
||||||
|
if ($flac_mode) { $extension = 'flac'; }
|
||||||
|
else { $extension = 'ogg'; }
|
||||||
|
|
||||||
|
|
||||||
# Create temp location
|
# Create temp location
|
||||||
system("rm -rf $temp_dir 2> /dev/null");
|
system("rm -rf $temp_dir 2> /dev/null");
|
||||||
mkdir($temp_dir);
|
mkdir($temp_dir);
|
||||||
|
@ -90,7 +107,14 @@ handle_names();
|
||||||
|
|
||||||
# Rip, convert
|
# Rip, convert
|
||||||
system('cdparanoia -B');
|
system('cdparanoia -B');
|
||||||
system("oggenc $CDPARANOIA_FORMAT.wav");
|
if ($flac_mode)
|
||||||
|
{
|
||||||
|
system("flac $CDPARANOIA_FORMAT.wav");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
system("oggenc -q $quality $CDPARANOIA_FORMAT.wav");
|
||||||
|
}
|
||||||
$sanityTest = `ls -1 | wc -l`;
|
$sanityTest = `ls -1 | wc -l`;
|
||||||
chomp $sanityTest;
|
chomp $sanityTest;
|
||||||
die "No files were created. Aborting." unless ($sanityTest > 0);
|
die "No files were created. Aborting." unless ($sanityTest > 0);
|
||||||
|
@ -109,6 +133,10 @@ chdir($final_location);
|
||||||
warn "Some files were not automatically named." if $unhandledFiles;
|
warn "Some files were not automatically named." if $unhandledFiles;
|
||||||
|
|
||||||
# Add vorbiscomment data
|
# Add vorbiscomment data
|
||||||
|
#debug
|
||||||
|
print `pwd`;
|
||||||
|
print `ls`;
|
||||||
|
#end debug
|
||||||
system('tagfromfilename', $tagoptions, @new_tracks);
|
system('tagfromfilename', $tagoptions, @new_tracks);
|
||||||
|
|
||||||
# Clean up
|
# Clean up
|
||||||
|
@ -147,8 +175,8 @@ sub getinfo_user
|
||||||
chomp (my $input = <STDIN>);
|
chomp (my $input = <STDIN>);
|
||||||
my $input = `fixname -o "$input"`;
|
my $input = `fixname -o "$input"`;
|
||||||
|
|
||||||
my $track_name = $artist . '-' . $current_track . '-' . $input .
|
my $track_name = $artist . '-' . $current_track . '-' . $input . '.' .
|
||||||
'.ogg';
|
$extension;
|
||||||
|
|
||||||
push @new_tracks, $track_name;
|
push @new_tracks, $track_name;
|
||||||
$current_track++;
|
$current_track++;
|
||||||
|
@ -176,7 +204,7 @@ sub getinfo_cddb
|
||||||
foreach (@{$cd{track}})
|
foreach (@{$cd{track}})
|
||||||
{
|
{
|
||||||
my $track_name = $artist . '-' . $current_track . '-' .
|
my $track_name = $artist . '-' . $current_track . '-' .
|
||||||
`fixname -o "$_"` . '.ogg';
|
`fixname -o "$_"` . '.' . $extension;
|
||||||
|
|
||||||
push @new_tracks, $track_name;
|
push @new_tracks, $track_name;
|
||||||
$current_track++;
|
$current_track++;
|
||||||
|
@ -211,7 +239,7 @@ sub init_current_track
|
||||||
# Populates the @old_tracks array
|
# Populates the @old_tracks array
|
||||||
sub init_old_tracks
|
sub init_old_tracks
|
||||||
{
|
{
|
||||||
foreach (`ls $CDPARANOIA_FORMAT.ogg`)
|
foreach (`ls $CDPARANOIA_FORMAT.$extension`)
|
||||||
{
|
{
|
||||||
chomp;
|
chomp;
|
||||||
next if /$TRACK_ZERO/;
|
next if /$TRACK_ZERO/;
|
||||||
|
|
14
conv2ogg
14
conv2ogg
|
@ -12,6 +12,7 @@
|
||||||
# 0.2.4: Allow mplayer to handle any non-ogg file
|
# 0.2.4: Allow mplayer to handle any non-ogg file
|
||||||
# Make invocations of files in other directories work
|
# Make invocations of files in other directories work
|
||||||
# Use File::Path where appropriate
|
# Use File::Path where appropriate
|
||||||
|
# Added -q option
|
||||||
# 0.2.1: Added new options to mplayer for mplayer's new features
|
# 0.2.1: Added new options to mplayer for mplayer's new features
|
||||||
# Added support for m4a if using mplayer
|
# Added support for m4a if using mplayer
|
||||||
# 0.2: Aligned version with ds-audiotools
|
# 0.2: Aligned version with ds-audiotools
|
||||||
|
@ -26,7 +27,8 @@
|
||||||
# 0.0.1: Initial bash script
|
# 0.0.1: Initial bash script
|
||||||
|
|
||||||
$VERSION = "0.2.4";
|
$VERSION = "0.2.4";
|
||||||
$HELP_MSG = "# Audio file - Ogg Converter v$VERSION\n\tusage: conv2ogg <files>";
|
$HELP_MSG = "# Audio file - Ogg Converter v$VERSION\n\tusage: conv2ogg [-q] <files>\n" .
|
||||||
|
"\t\t-q <number>: Use quality for encoding. Default 10";
|
||||||
$DEC_ERROR = "Couldn't find a decoder to use. Please install one of mplayer, mpg321, or mpg123";
|
$DEC_ERROR = "Couldn't find a decoder to use. Please install one of mplayer, mpg321, or mpg123";
|
||||||
$ENC_ERROR = "Couldn't find oggenc, which is necessary for encoding. Please install the package that provides oggenc (probably named 'oggenc' or 'vorbistools')";
|
$ENC_ERROR = "Couldn't find oggenc, which is necessary for encoding. Please install the package that provides oggenc (probably named 'oggenc' or 'vorbistools')";
|
||||||
|
|
||||||
|
@ -34,11 +36,19 @@ use File::Path qw(make_path remove_tree);
|
||||||
|
|
||||||
chomp($tempdir = '/tmp/conv2ogg-' . `whoami`);
|
chomp($tempdir = '/tmp/conv2ogg-' . `whoami`);
|
||||||
|
|
||||||
|
$quality = 7;
|
||||||
|
|
||||||
# Do we need help?
|
# Do we need help?
|
||||||
foreach (@ARGV)
|
foreach (@ARGV)
|
||||||
{
|
{
|
||||||
if (/^(--help)|(-h)$/) { die $HELP_MSG; }
|
if (/^(--help)|(-h)$/) { die $HELP_MSG; }
|
||||||
|
|
||||||
|
if ($qualityOnNext)
|
||||||
|
{
|
||||||
|
$quality = $_;
|
||||||
|
$qualityOnNext = 0;
|
||||||
|
}
|
||||||
|
elsif (/^-q$/) { $qualityOnNext = 1; }
|
||||||
}
|
}
|
||||||
|
|
||||||
# Select the encoder and decoder
|
# Select the encoder and decoder
|
||||||
|
@ -90,7 +100,7 @@ foreach(@ARGV)
|
||||||
|
|
||||||
# Transcode the file
|
# Transcode the file
|
||||||
system("$decoder $directory/$filename $decoder_options$tempdir/$short_name.wav");
|
system("$decoder $directory/$filename $decoder_options$tempdir/$short_name.wav");
|
||||||
system($encoder, "$tempdir/$short_name.wav", '-o', "$directory/$short_name.ogg");
|
system($encoder, "-q $quality", "$tempdir/$short_name.wav", '-o', "$directory/$short_name.ogg");
|
||||||
|
|
||||||
# Remove old file
|
# Remove old file
|
||||||
system('rm', "$directory/$filename");
|
system('rm', "$directory/$filename");
|
||||||
|
|
|
@ -12,6 +12,7 @@ $HELP_MSG = "# Copy files to DAP, converting flac to ogg v$VERSION\n\tusage: cop
|
||||||
|
|
||||||
|
|
||||||
use File::Path qw(make_path remove_tree);
|
use File::Path qw(make_path remove_tree);
|
||||||
|
use Cwd;
|
||||||
|
|
||||||
my $dest='/mnt/dap/MUSIC';
|
my $dest='/mnt/dap/MUSIC';
|
||||||
my $tmpdir='/tmp/copy_to_dap';
|
my $tmpdir='/tmp/copy_to_dap';
|
||||||
|
@ -56,6 +57,10 @@ foreach (@ARGV)
|
||||||
make_path "$dest/$_";
|
make_path "$dest/$_";
|
||||||
system("cp -r $_/* $tmpdir/$_/");
|
system("cp -r $_/* $tmpdir/$_/");
|
||||||
system("conv2ogg $tmpdir/$_/*.flac");
|
system("conv2ogg $tmpdir/$_/*.flac");
|
||||||
|
my $dir = cwd;
|
||||||
|
chdir "$tmpdir/$_";
|
||||||
|
system("tagfromfilename *");
|
||||||
|
chdir $dir;
|
||||||
system("cp -r $tmpdir/$_/* $dest/$_/");
|
system("cp -r $tmpdir/$_/* $dest/$_/");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Reference in New Issue
Block a user