74 lines
1.5 KiB
Perl
Executable File
74 lines
1.5 KiB
Perl
Executable File
#!/usr/bin/perl -w
|
|
|
|
use strict ;
|
|
|
|
my $file = $ARGV[0] || die ;
|
|
|
|
sub test_mime {
|
|
my $file = shift ;
|
|
if (`which file`) {
|
|
return `file -b --mime-type "$file"`;
|
|
}
|
|
}
|
|
|
|
if (($file =~ /\.mp3$/i) || (test_mime($file) =~ /audio\/mpeg/)) {
|
|
|
|
if (`which mp3gain`) {
|
|
|
|
my $out = `mp3gain -q "$file" 2> /dev/null` ;
|
|
$out =~ /Recommended "Track" dB change: (.*)$/m || die ;
|
|
print "$1 dB\n" ;
|
|
|
|
} else {
|
|
|
|
print STDERR "Cannot find mp3gain binary!\n";
|
|
|
|
}
|
|
|
|
} elsif (($file =~ /\.ogg$/i) || (test_mime($file) =~ /application\/ogg/)) {
|
|
|
|
if ((`which vorbisgain`) && (`which ogginfo`)) {
|
|
|
|
system("vorbisgain -q -f \"$file\" 2>/dev/null >/dev/null") ;
|
|
my $info = `ogginfo "$file"` ;
|
|
$info =~ /REPLAYGAIN_TRACK_GAIN=(.*) dB/ || die ;
|
|
print "$1 dB\n" ;
|
|
|
|
} else {
|
|
|
|
print STDERR "Cannot find vorbisgain or ogginfo!\n";
|
|
|
|
}
|
|
|
|
} elsif (($file =~ /\.flac$/i) || (test_mime($file) =~ /audio\/x-flac/)) {
|
|
|
|
if (`which metaflac`) {
|
|
|
|
my $info = `metaflac --show-tag=REPLAYGAIN_TRACK_GAIN "$file"` ;
|
|
$info =~ /REPLAYGAIN_TRACK_GAIN=(.*) dB/;
|
|
if (defined($1)) {
|
|
|
|
print "$1 dB\n" ;
|
|
|
|
} else {
|
|
|
|
system("metaflac --add-replay-gain \"$file\" \
|
|
2>/dev/null >/dev/null") ;
|
|
$info = `metaflac --show-tag=REPLAYGAIN_TRACK_GAIN "$file"` ;
|
|
$info =~ /REPLAYGAIN_TRACK_GAIN=(.*) dB/ || die "Error in $file" ;
|
|
print "$1 dB\n" ;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
print STDERR "Cannot find metaflac!\n";
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
print STDERR "File format not supported...\n";
|
|
|
|
}
|