Browse Source

Added small script to rename wavs from cds

spesk1 4 years ago
parent
commit
fcab926e7d
1 changed files with 92 additions and 0 deletions
  1. 92 0
      rename_wavs.pl

+ 92 - 0
rename_wavs.pl

@@ -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";
+
+}
+
+
+
+
+
+
+
+
+