https://git.spwbk.site/swatson/yt-track-split/raw/master/rename_wavs.pl
___________________________________
#!/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";

}