|
@@ -0,0 +1,92 @@
|
|
|
+#!/usr/bin/perl
|
|
|
+
|
|
|
+use strict;
|
|
|
+use warnings;
|
|
|
+
|
|
|
+if ( ! defined $ARGV[0] ) {
|
|
|
+ print "Need to pass dir\n";
|
|
|
+ exit 1;
|
|
|
+}
|
|
|
+
|
|
|
+my $dir_path = shift(@ARGV);
|
|
|
+
|
|
|
+if ( ! -d $dir_path ) {
|
|
|
+ print "$dir_path doesnt look like a dir\n";
|
|
|
+ exit 1;
|
|
|
+}
|
|
|
+
|
|
|
+my @info_files;
|
|
|
+my @audio_files;
|
|
|
+
|
|
|
+foreach my $file ( split("\n",`ls $dir_path`) ) {
|
|
|
+
|
|
|
+ if ( $file =~ m/^(audio_[0-9]{2}.inf)/ ) {
|
|
|
+ push(@info_files, $1);
|
|
|
+ } elsif ( $file =~ m/^(audio_[0-9]{2}.wav)/ ) {
|
|
|
+ push(@audio_files, $1);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+my %tracks_map;
|
|
|
+@tracks_map{@audio_files} = @info_files;
|
|
|
+
|
|
|
+sub sanitize_title($) {
|
|
|
+
|
|
|
+ my $title = shift;
|
|
|
+ my $san_title;
|
|
|
+ open(my $fh, ">>", \$san_title) or die "Couldnt open $!\n";
|
|
|
+ foreach my $char ( split("",$title) ) {
|
|
|
+ if ( $char =~ m/[\'\"\:\,\.\&\(\)]/ ) {
|
|
|
+ print $fh "";
|
|
|
+ } elsif ( $char =~ m/\s/ ) {
|
|
|
+ print $fh "_";
|
|
|
+ } else {
|
|
|
+ print $fh "$char";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ close $fh;
|
|
|
+ return $san_title;
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+foreach my $audio_file ( sort keys %tracks_map ) {
|
|
|
+ my $track_title = "null";
|
|
|
+ foreach my $line ( split("\n", `cat $dir_path/$tracks_map{$audio_file}`) ) {
|
|
|
+ if ( $line =~ m/^Tracktitle=\s+(.*)$/ ) {
|
|
|
+ $track_title = sanitize_title($1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ( $track_title eq "null" ) {
|
|
|
+ print "Couldnt get title from $tracks_map{$audio_file}\n";
|
|
|
+ exit 1;
|
|
|
+ }
|
|
|
+ #print "$audio_file -> $tracks_map{$audio_file} -> '$track_title'\n";
|
|
|
+ $tracks_map{$audio_file} = $track_title;
|
|
|
+}
|
|
|
+
|
|
|
+foreach my $audio_file ( sort keys %tracks_map ) {
|
|
|
+
|
|
|
+ my $filename;
|
|
|
+ if ( $audio_file =~ m/^audio_([0-9]{2}).wav/ ) {
|
|
|
+ $filename = $1 . "_" . $tracks_map{$audio_file} . ".wav";
|
|
|
+ } else {
|
|
|
+ print "could get track number\n";
|
|
|
+ exit 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ print "mv $dir_path/$audio_file $dir_path/$filename\n";
|
|
|
+ system("mv $dir_path/$audio_file $dir_path/$filename") == 0
|
|
|
+ or die "Failed to mv $audio_file\n";
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|